【问题标题】:Maximum and minimum number of nodes in a suffix tree [closed]后缀树中的最大和最小节点数[关闭]
【发布时间】:2012-11-03 14:24:44
【问题描述】:

后缀树的最大和最小节点数是多少?我该如何证明呢?

【问题讨论】:

  • 欢迎来到 Stack Overflow 并感谢发帖。请包含一些代码以显示what you tried 并查看How to Ask
  • 这是这个问题的重复:stackoverflow.com/questions/12865639/…
  • 那是边,我想知道它的节点。没有什么可实现的,我只需要知道后缀树中可以有多少个节点。
  • “后缀树的最大和最小边数是多少?如何证明?”。您在问题文本中要求边而不是节点,在标题中要求节点..
  • 只是想插入cs.stackexchange.com,因为我认为它更适合那里。

标签: algorithm suffix-tree


【解决方案1】:

假设输入文本长度为N个字符,包含根节点和所有叶子节点的最小节点数为N+1,包括根节点和叶子节点的最大节点数为@987654325 @。

最小证明:每个后缀必须至少有一个叶子节点,并且有N后缀。不需要任何内部节点,例如:如果文本是唯一符号序列abc$,则没有分支,因此生成的后缀树中没有内部节点:

因此最小值为N 叶、0 内部节点和1 根节点,总和为N+1 节点。

最大证明:叶节点的数量永远不能大于N,因为叶节点是后缀结束的地方,并且不能超过N distinct长度为N 的字符串中的后缀。 (事实上​​,你总是有精确的N 不同的后缀,因此精确的N 叶节点。)根节点总是精确的1,所以问题是内部节点的最大数量是多少。每个内部节点都会在树中引入一个分支(因为后缀树的内部节点至少有 2 个子节点)。每个新的分支最终都必须导致至少有一个额外的叶子节点,所以如果你有K 内部节点,则必须至少有K+1 叶子节点,并且根节点的存在需要至少一个额外的叶子节点(除非树是空的)。但是叶子节点的数量以N为界,所以内部节点的最大数量以N-2为界。这正好产生N 叶、1 根,以及最多N-2 内部节点、2N-1

要看到这不仅是一个理论上的上限,而且一些后缀树实际上达到了这个最大值,请考虑一个只有一个重复字符的字符串:'aaa$'。确认它的后缀树有 7 个节点(包括根和叶):

总结: 显然,唯一真正的变量是内部节点的数量;对于所有后缀树,根和叶的数量恒定为1N,而内部节点的数量在0N-2 之间变化。

【讨论】:

  • 谢谢!这真的很有帮助!
猜你喜欢
  • 1970-01-01
  • 2013-10-21
  • 2014-03-16
  • 2016-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-18
相关资源
最近更新 更多