后缀树中的最大和最小边数是多少?我知道最大值是2m-1,但我不明白为什么会这样。
答案 0 :(得分:3)
首先,关于最大边数:
如果您认为边缘有两种形式,那么很容易理解:通向叶节点的边缘和通向内部节点的边缘。在下文中,我将假设为后缀树构造的字符串的长度为N
个字符。
关于导致树叶的边缘。每个后缀必须只有一个叶子,每个叶子只有一个入站边缘(没有出站边缘)。因此必须有N
个边缘导致离开。
关于通往内部节点的边缘。与叶节点一样,内部节点也各自只有一个入站边。因此,为了确定可能存在多少通向内部节点的边缘,足以确定可以存在多少个内部节点。那么,内部节点的最大可能数量是多少?
为此,重要的是要看到内部节点仅插入到分支点的后缀树中,即内部节点的出站边的数量始终至少为2(如果有的话)只有一个出站边,内部节点不会在第一个位置构建)。但是每个出站边缘必须最终导致叶节点(可能在经过更多内部节点之后)。换句话说,插入到树中的每个内部节点将叶节点的总数增加至少1.此外,即使没有内部节点的树也必须至少有一个边缘从根节点出来(除非树是空)。因此,在非空树中,叶L
的总数必须为
L >= I + 1
其中I
是内部节点的数量。相反,内部节点的数量是
I <= L - 1 = N - 1
回到原始问题,正如我们所说,导致内部节点的边数与内部节点的数量相同,因此它也受N - 1
的约束。
我们总结,边的总数是通向叶子的边数(N
)加上通向内部节点的边数(<=N-1
),因此最大受
N + (N-1) = 2N - 1
quod erat demonstrandum。
关于最小边数:这遵循相同的原则,即我们计算通向叶子的边数和通向内部节点的边数,然后将它们加在一起。 / p>
导致离开的节点数始终为N
,即N
是最大值和最小值。
但是,通向内部节点的节点数可能为零。例如。当输入字符串没有重复的元素时,例如abcdef
,正好有N
个边,每个边从直根到叶。没有分支点,没有内部节点。因此,通向内部节点的最小边数为0.
总之,最小边数为N + 0 = N
。