Php前缀树实现与assoc数组

时间:2016-04-29 12:42:25

标签: php arrays class graph trie

UPD:我将原始问题移至https://codereview.stackexchange.com/questions/127055/building-tree-graph-from-dictionary-performance-issues

这是一个简短的版本,没有代码。

我正在尝试从字典中构建前缀树。因此,使用以下字典'and','anna','ape','apple',图形应如下所示: graph 我尝试了两种方法:使用关联数组并使用自编写的树/节点类。

注意:原始字典约为8 MB,包含> 600000字。

问题:有什么好的(快速/有效)方法吗?

到目前为止我已经尝试过了:

  • php关联数组(它们对于使用此图表的未来工作不是很灵活)。

  • 自编写树/节点类(性能问题 - 执行时间最多增加7倍,内存使用量增加2倍,即使没有实现除inserting函数之外的任何内容)。

示例代码可在codereview(有问题的第一个链接)上找到

1 个答案:

答案 0 :(得分:0)

只要我切换到C ++并在codereview上得到了一个很好的答案,我就会在这里回答我自己的问题。

还有一种方法可以通过增加内存使用来提高时间效率(与array array的{​​{1}} array相比,它并没有真正大幅提升。 ..“接近)。该方法称为“双数组trie”,您可以阅读有关此主题的信息here并阅读上述代码视图的答案以查看实现示例。

它更节省时间,但它为未来的使用提供了更少的灵活性/便利性(与OOP方法相比)。

因此对我来说这个问题的最终答案是:“php不是使用真正大尝试的最佳工具”。