自动完成的数据结构

时间:2010-03-11 16:09:40

标签: data-structures autocomplete

自动完成算法有哪些好的数据结构?哪些数据结构可以有效地查找包含特定子字符串的字符串?

6 个答案:

答案 0 :(得分:18)

如果您希望执行与Google实施自动填充功能类似的操作,您可能需要查看三元搜索树:

http://igoro.com/archive/efficient-auto-complete-with-a-ternary-search-tree/

但是,如果要在字符串中查找任何随机子字符串,请尝试使用广义后缀树。

http://en.wikipedia.org/wiki/Generalised_suffix_tree

答案 1 :(得分:6)

答案 2 :(得分:1)

作为Suffix Arrays,Trees和Tries的替代方案,请查看Directed Acyclic Word Graphs(DAWG)和压缩变体(CDAWG)。它们可以在线性时间内构建,占用线性空间,并允许子字符串搜索。

使用更复杂的搜索功能,您甚至可以支持一组有限的通配符。

答案 3 :(得分:1)

如果自动填充建议集是按等级排序的,则SuggestTree是一个很好的数据结构。对于任何给定的前缀,它可以快速访问以该前缀开头的顶级 k 建议。

答案 4 :(得分:0)

如果您正在做前缀(这是大多数自动填充功能所做的那样),那么三元搜索树也是我推荐的。如果您正在使用通用中缀,那么请使用后缀树,如上所述。

答案 5 :(得分:0)

我已经为你想要的东西创建了一个应用程序。它是基于排名自动填充算法的最有效前缀。

http://code.google.com/p/lib-face/