0

当我查找 Tries 和基数树时,例如 http://en.wikipedia.org/wiki/Compact_prefix_treehttp://en.wikipedia.org/wiki/Trie,我没有看到关于字典排序的具体内容一个节点的子节点。

因此,例如,在这个trie 中(页面上唯一的数字),根的孩子可以更好地从左到右排序为“A”、“i”、“t”。

尝试/基数树用于检索 - 不用于频繁更新。因此,这种排序不会花费太多,尤其是在稀有树更新上,算法上简单/直接,并且在值查找/检索期间增加了一些速度。

我错过了什么?

我正在寻找关于/反对这个的论点。

4

1 回答 1

1

我假设您想订购孩子,以便您可以更快地搜索它们。不过,我想您会发现,给定节点的子节点数量非常少——小到足以让二分搜索和顺序搜索之间的差异无关紧要。或者甚至可能小到顺序搜索比二分搜索更快。

例如,按字典顺序对字母“q”的孩子进行排序是没有意义的,因为它的孩子太少了。对 'q' 后面的几个字母进行二分搜索会比顺序搜索慢。按频率对孩子进行排序更有意义。'u' 将是第一个孩子,并且该项目的选择频率远远高于其他任何项目。

我面前没有二元组频率表,但我怀疑你会发现在大多数情况下,特定字母的可能子项的数量并不能证明按字典顺序排序是合理的,而按频率排序会带来更好的结果表现。可能的例外是在单词的开头,但即便如此,我怀疑按频率排序会更有意义。

您可以构建这样的 trie 并检查节点。查看典型节点有多少个子节点,并查看频率是多少。

于 2014-01-16T23:12:02.137 回答