什么是自动完成算法的良好数据结构?哪些数据结构允许有效地查找包含特定子字符串的字符串?自动完成算法的数据结构
回答
如果你正在寻找做类似谷歌实现它是自动完成的方式的东西,你可能要检查出的三元搜索树:
http://igoro.com/archive/efficient-auto-complete-with-a-ternary-search-tree/
但是,如果你想找到任何随机字符串在一个字符串中,尝试一个通用后缀树。
如果您只想匹配前缀,那么这样做是否可行?例如一个三元搜索树可以帮助你匹配“abcd”中的“ab”,但不匹配“abcd”中的“bc”(可能会很厚,对三元搜索树不太了解,只会给链接留下一瞥)。 – 2010-03-11 16:15:21
我这么认为,总的来说,它确实在x“开始”有点类似。但是,实际上,这似乎是我曾经使用过的所有自动完成功能的工作原理。 – 2010-03-11 16:21:34
fww我使用字符串中任意位置的日常匹配的一些自动完成小部件;尽管如此 - 有用的链接,所以+1。 – 2010-03-11 16:24:10
男人,我一直在寻找Ukkonen的算法多年,从来不知道!我有一个应用程序需要有效地匹配子字符串和错误。我甚至在过去这样的论坛上发过帖,但没有得到任何好的提示。你让我很快乐! – swestrup 2010-03-11 16:35:46
@swestrup:我很高兴我帮助你追踪这些信息:)你应该得到一份*算法设计手册*,http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1848000693/ref = sr_1_1?ie = UTF8&s = books&qid = 1268325877&sr = 8-1它是数据结构,算法和参考书目/ URL参考的无价*汇编*) – 2010-03-11 16:53:51
如果你在做前缀(这是大多数autocompletes做的),那么三元搜索树也是我推荐的。如果您正在做普通中缀,那么请使用后缀树,如上所述。
Nah,它是一个愚蠢的想法。使用后缀树。好多了。 – swestrup 2010-03-11 16:33:53
如果它是愚蠢的,请编辑您的答案 – 2010-03-11 18:43:27
作为后缀数组,树木和试验的替代方法,请查看Directed Acyclic Word Graphs(DAWG)和压缩变体(CDAWG)。它们可以以线性时间构建,占用线性空间,并允许子字符串搜索。
使用更复杂的搜索功能,您甚至可以支持一组有限的通配符。
我已经为你想要的东西创建了一个应用程序。它是最有效的基于前缀的排序自动完成算法。
如果设置的自动完成建议是等级排序,一个SuggestTree是一个很好的数据结构。对于任何给定的前缀,它提供对以该前缀开头的建议的快速访问。
- 1. 什么是最好的自动完成/建议算法,数据结构[C++/C]
- 2. Ctypes结构自动完成
- 3. 自动完成算法
- 4. 自动完成算法?
- 5. 什么是文本自动完成的最佳数据结构?
- 6. 算法和数据结构的动画?
- 7. 搜索结构自动完成
- 8. 如何通过语法结构生成自动完成?
- 9. 算法和数据结构
- 10. Vim中的自动完成方法结构
- 11. jQuery自动完成数据
- 12. jQuery自动完成添加自动完成数据的附加数据
- 13. JQuery自动完成结果
- 14. 正确完成用户活动的数据库结构?
- 15. soundex算法的数据结构?
- 16. 自动完成结果数组
- 17. jQueryUI的自动完成响应数据
- 18. jquery每行的自动完成数据
- 19. 从MySQL数据库jQueryUI的自动完成返回结果
- 20. jQuery的自动完成格式化数据结果
- 21. jquery自动完成不显示加载结果的数据
- 22. Android中的自动完成与动态数据无法工作
- 23. 自适应“均匀”网格的数据结构和算法?
- 24. 算法蟒蛇数据结构
- 25. 修订:算法和数据结构
- 26. 数据结构和算法电子书
- 27. 数据结构编程算法
- 28. 传递参数以完成p的方法:自动完成
- 29. 自动完成HTML结构的快捷键
- 30. 自动完成:检测没有结果与远程数据源
http://en.wikipedia.org/wiki/Trie – frankc 2010-03-11 16:24:01