用简单的英语,有什么区别?

我已经看过这个问题,但我仍然没有看到后缀树和Trie之间的区别。

两者都具有给定字符串的所有子字符串,因此它们在哪里彼此不同?


后缀树 - 给出了一个大文本。 查询 - 多次搜索文本中的任何单词。
例子:你正在用纸牌和小猫实现你自己的酷文本编辑器=)你将实现CTRL+F功能。 可能的实现 - 索引文档(创建后缀树)以及当用户查找某个词时 - 在树中搜索它。

特里 - 给出了一个大文本。 查询 - 在文本中搜索多次预定义的单词。
例如:你正在用扑克和贾斯汀比伯的粉丝实现你自己的酷脸书=)你不希望你的用户张贴发誓的话。 可能的实现 - 创建发誓词。 当用户键入一些文本搜索生词并用*代替时。

通常,后缀tree = trie。 后缀树是某个单词的所有后缀的树状结构。 当你想要在字典中搜索某些东西时,请使用trie。 当您以纯文本搜索某些内容时,请使用后缀树。

重要提示 - 为大文本建立/重建后缀树是一项复杂的操作。 一旦你改变了你的文字,你必须重新创建后缀树。 重构trie是一项简单的操作 - 只需在O(wordLength)添加新的单词,

结论
后缀树。 您对将来的查询一无所知。为创建后缀树花费一次时间,并且您准备好处理请求。 已知的信息是文本 。 请求未知但给出文本并且不会经常改变的情况是使用后缀树的候选者。 例如,您不能在CTRL+F实现中使用trie(aho-corasick算法) - 因为您无法将字典作为基于trie的aho-corasick算法的输入。

特里。 您对将要执行搜索的文本一无所知。 但你知道未来的疑问。 花时间为您的查询预处理/准备数据结构,并且您可以在任何文本中执行搜索查询。 例如,在替换禁止词语任务时,您不知道用户将发布什么文本,但您知道禁止的词语。 为每个简短的新帖子创建后缀树会太愚蠢=)

链接地址: http://www.djcxy.com/p/40099.html

上一篇: in plain English , what's the difference?

下一篇: Ukkonen's algorithm for Generalized Suffix Trees