Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.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 使用后缀树的隐式表示进行字符串匹配_Algorithm_Data Structures_Suffix Tree - Fatal编程技术网

Algorithm 使用后缀树的隐式表示进行字符串匹配

Algorithm 使用后缀树的隐式表示进行字符串匹配,algorithm,data-structures,suffix-tree,Algorithm,Data Structures,Suffix Tree,根据Java中的数据结构和算法分析,Weiss: 维斯写道: 在叶子中,我们使用后缀开始的索引(如在后缀数组中) 在内部节点中,我们存储从根到内部节点匹配的公共字符数;此数字表示字母深度 我的问题:给定输入字符串(例如“banana”)和后缀树的隐式表示,子字符串搜索的好算法是什么样的?我所看到的算法假设了树的不同表示形式。我希望在不转换为其他树表示的情况下执行子字符串搜索。我以前从未见过这种表示。更常见的做法是将边上的标签表示为一对整数,这些整数描绘了原始字符串中的一系列字符,这将使您更容易

根据Java中的数据结构和算法分析,Weiss:

维斯写道:

  • 在叶子中,我们使用后缀开始的索引(如在后缀数组中)
  • 在内部节点中,我们存储从根到内部节点匹配的公共字符数;此数字表示字母深度

  • 我的问题:给定输入字符串(例如“banana”)和后缀树的隐式表示,子字符串搜索的好算法是什么样的?我所看到的算法假设了树的不同表示形式。我希望在不转换为其他树表示的情况下执行子字符串搜索。

    我以前从未见过这种表示。更常见的做法是将边上的标签表示为一对整数,这些整数描绘了原始字符串中的一系列字符,这将使您更容易确定边上的字符是什么(您可以根据需要查看这些字符的原始字符串,看看它们是否与您正在查看的子字符串匹配)

    <> P>我确信,这种压缩表示在匹配子串方面是不好的。为了跟随一个边,你需要知道那个边上的字符是什么,但是你不能知道这些字符是什么,除非你扫描原始字符串的字符,找到一些可以想象的匹配的东西。在子树中查找后缀并使用该后缀重建字符,但这需要额外的时间,并打破了后缀树的时间界限


    我最好的猜测是作者在如何在少量空间中表示后缀树的问题上弄错了。

    我怀疑作者弄错了,但我可能问了一个错误的问题。正如你所说,可能是这种特殊的表示方式不适合匹配子字符串;Weiss对此问题保持沉默。只是想知道有人知道是否有一种很好的方法可以使用这种表示法。@Chad考虑到这个问题,如果这只是作者的一个错误,我也不会感到惊讶。我在一本书中教过后缀树,并花了很多时间阅读它们,我以前从未在任何地方见过这种表示法。谢谢。我很高兴有更多的人使用这种表示法知识渊博的我也觉得这种表述有点奇怪。