【问题标题】:Maximum and minimum number of edges in a suffix tree后缀树中的最大和最小边数
【发布时间】:2012-10-12 19:15:23
【问题描述】:

后缀树的最大和最小边数是多少?我知道最大值是 2m-1,但我不明白为什么会这样。

【问题讨论】:

    标签: algorithm suffix-tree


    【解决方案1】:

    首先,关于最大边数:

    如果您认为边有两种形式,则很容易理解:通向叶节点的边和通向内部节点的边。在下文中,我将假设构建后缀树的字符串长度为N 个字符。

    1. 关于通往树叶的边缘。每个后缀必须恰好有一个叶子,并且每个叶子只有一个入站边(并且没有出站边)。所以必须有N 边通向叶子。

    2. 关于通向内部节点的边。与叶节点一样,内部节点也只有一个入站边。因此,要确定可能有多少条边通向内部节点,只需确定可以有多少个内部节点即可。那么,内部节点的最大可能数量是多少?

      为此,重要的是要看到内部节点仅在分支点处插入到后缀树中,即内部节点的 outbound 边数始终至少为 2(如果有只有一个出站边,内部节点一开始就不会被构建)。但是每个出站边最终都必须通向一个叶节点(可能在经过进一步的内部节点之后)。换句话说,每个插入到树中的内部节点都会使叶子节点的总数至少增加 1。此外,即使一棵没有任何内部节点的树,也必须至少有一条边从根节点出来(除非树是空的)。因此,在一棵非空树中,叶子的总数L必须是

      L >= I + 1
      

      其中I 是内部节点的数量。反之,内部节点数为

      I <= L - 1 = N - 1
      

      回到原来的问题,通向内节点的边数,正如我们所说,与内节点数相同,因此也受N - 1的约束。

    我们得出结论,边的总数是通向叶子 (N) 的边数加上通向内部节点 (&lt;=N-1) 的边数,因此它的 最大值

    限制
    N + (N-1) = 2N - 1
    

    quod erat demostrandum.


    关于最小边数:这遵循相同的原则,即我们计算通向叶子的边数和通向内部节点的边数,然后将它们相加。

    通向叶子的节点数始终为N,即N是可能的最大值和最小值。

    但是,通向内部节点的节点数可能为零。例如。当输入字符串没有重复元素时,例如abcdef,恰好有N 边,每个边从根一直到叶子。没有分支点,没有内部节点。因此,通向内部节点的最小边数为 0。

    总之,最小边数是N + 0 = N

    【讨论】:

    • n 节点上的树有 n-1 边。由于后缀树的最大节点数为2n-1,我们得出结论最大边数为2n-2
    • @saadtaame 您的陈述“n 节点上的树有 n-1 条边”只有在计算根节点时才成立。如果这样做,后缀树最多有 2n 个节点,而不是 2n-1。所以结果和上面一样。 (具有恰好 2n-1 条边的后缀树的示例是长度为 n=1 的字符串的后缀树。它由根节点和通向唯一叶子的 1 条边组成。即 1=2n-1 条边。 )
    • 我忘了说树应该是二叉树才能确定结果。
    • @saadtaame 你到底在说什么?你想告诉我什么?
    • 这是树木的一般结果..只是想补充一点。你可以直接使用这个结果。
    猜你喜欢
    • 2012-11-03
    • 1970-01-01
    • 2012-11-28
    • 1970-01-01
    • 2022-11-15
    • 2013-10-21
    • 2018-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多