Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 后缀树VS Tries-简单地说,什么';有什么区别?_Algorithm_Data Structures_Tree_Trie_Suffix Tree - Fatal编程技术网

Algorithm 后缀树VS Tries-简单地说,什么';有什么区别?

Algorithm 后缀树VS Tries-简单地说,什么';有什么区别?,algorithm,data-structures,tree,trie,suffix-tree,Algorithm,Data Structures,Tree,Trie,Suffix Tree,我已经看了一些问题,但是我仍然没有看到后缀树和Trie之间的区别 两者都具有给定字符串的所有子字符串,那么它们之间的区别在哪里呢 后缀树-给出了一个大文本。查询-多次搜索文本中的任何单词。 例子: 您正在使用solitaire和kittens=)实现自己的酷炫文本编解码器。您将实现CTRL+F函数。可能的实现-索引文档(创建后缀树),当用户查找某个单词时,在树中搜索它 Trie-给出了一个大文本。查询-在文本中多次搜索预定义的单词。示例: 你正在用扑克和贾斯汀·比伯的粉丝实现你自己的酷脸书=)你

我已经看了一些问题,但是我仍然没有看到后缀树和Trie之间的区别


两者都具有给定字符串的所有子字符串,那么它们之间的区别在哪里呢

后缀树-给出了一个大文本。查询-多次搜索文本中的任何单词。
例子: 您正在使用solitaire和kittens=)实现自己的酷炫文本编解码器。您将实现
CTRL+F
函数。可能的实现-索引文档(创建后缀树),当用户查找某个单词时,在树中搜索它

Trie-给出了一个大文本。查询-在文本中多次搜索预定义的单词。
示例: 你正在用扑克和贾斯汀·比伯的粉丝实现你自己的酷脸书=)你不想让你的用户发脏话。可能的实现-创建咒骂词的trie。当用户键入一些文本时,搜索biiden单词并将其替换为*

通常,后缀树=trie。后缀树是一个单词所有后缀的集合。当你想在字典里搜索一些东西时,使用trie。在纯文本中搜索时,请使用后缀树

重要提示-为大文本构建/重建后缀树是一项复杂的操作。更改文本后,必须重新创建后缀树。重建trie是一个简单的操作-只需在
O(字长)

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


特里亚您对要在其中执行搜索的文本一无所知。但您知道未来的查询。花时间为查询预处理/准备数据结构,您可以在任何文本中执行搜索查询。例如,在替换禁词任务中,您不知道用户将发布什么文本,但您知道禁词为每个简短的新帖子创建后缀树太愚蠢了=)UPD正如@mightyWOZ在评论中注意到的,纯trie不适用,但我们可以使用Aho-Corasick算法,它是trie的扩展。所以,语句对于trys仍然是正确的-存在一种方法(Aho Corasick),它使用trie作为基础,预处理查询,然后可以处理任何文本。

用简单的英语给出了相当详细的解释。@devnull:您可以说:)这是错误的“花时间为您的查询预处理/准备数据结构,您可以在任何文本中执行搜索查询。“您可以预处理要在其中执行搜索的文本。在预处理步骤中,通过向trie插入单词来构建trie。然后你可以搜索任何单词。简单地说,tries:只能搜索单词(需要空格或其他分隔符)。后缀树:可以搜索任何子字符串。因为它包含了文本的每个后缀。很好的评论。事实上,我指的是Aho–Corasick algo(我提到了为什么不能将其用于Ctrl+F),但是是的,这应该添加到帖子中。