Php 前缀树实现与关联数组
Php prefix tree implementation versus assoc array
UPD: 我把原来的问题移到 https://codereview.stackexchange.com/questions/127055/building-tree-graph-from-dictionary-performance-issues
这是一个简短的版本,没有代码。
我正在尝试从字典构建前缀树。因此,使用以下字典 'and','anna','ape','apple'
,图形应该如下所示:
我尝试了两种方法:使用关联数组和使用自写 tree/node 类.
注意:原始词典大约有 8 MB,包含超过 600000 个单词。
问题:有什么好的(fast/efficient)方法吗?
到目前为止我已经尝试过:
php 关联数组(它们对于未来使用此图的工作不是很灵活)。
自写 Tree/Node 类(性能问题 - 执行时间增加了 7 倍,内存使用量增加了 2 倍,即使除了 inserting
函数).
codereview 上提供了示例代码(第一个 link 有问题)
只要我已经切换到 C++ 并且在 codereview 上得到了很好的答案,我就在这里回答我自己的问题。
还有一种方法可以通过增加内存使用量来提高时间效率(与“array
of array
s of array
相比,这并不是很大的增加s...”方法)。该方法称为 "double array trie",您可以阅读有关此主题的信息 here 并阅读上述关于代码审查的答案以查看实施示例。
它更省时,但它允许更少的 flexibility/convenience 供未来的 trie 使用(与 OOP 方法相比)。
所以对我来说这个问题的最终答案是:"php is not the best tool to work with really big tries with"。
UPD: 我把原来的问题移到 https://codereview.stackexchange.com/questions/127055/building-tree-graph-from-dictionary-performance-issues
这是一个简短的版本,没有代码。
我正在尝试从字典构建前缀树。因此,使用以下字典 'and','anna','ape','apple'
,图形应该如下所示:
注意:原始词典大约有 8 MB,包含超过 600000 个单词。
问题:有什么好的(fast/efficient)方法吗?
到目前为止我已经尝试过:
php 关联数组(它们对于未来使用此图的工作不是很灵活)。
自写 Tree/Node 类(性能问题 - 执行时间增加了 7 倍,内存使用量增加了 2 倍,即使除了
inserting
函数).
codereview 上提供了示例代码(第一个 link 有问题)
只要我已经切换到 C++ 并且在 codereview 上得到了很好的答案,我就在这里回答我自己的问题。
还有一种方法可以通过增加内存使用量来提高时间效率(与“array
of array
s of array
相比,这并不是很大的增加s...”方法)。该方法称为 "double array trie",您可以阅读有关此主题的信息 here 并阅读上述关于代码审查的答案以查看实施示例。
它更省时,但它允许更少的 flexibility/convenience 供未来的 trie 使用(与 OOP 方法相比)。
所以对我来说这个问题的最终答案是:"php is not the best tool to work with really big tries with"。