Максимальное и минимальное количество ребер в суффиксном дереве

Каково максимальное и минимальное количество ребер в суффиксном дереве? Я знаю, что максимум 2м-1, но я не понимаю, почему это так.


person Ansari    schedule 12.10.2012    source источник


Ответы (1)


Во-первых, о максимальном количестве ребер:

Это довольно легко понять, если представить ребра в двух вариантах: ребра, которые ведут к листовому узлу, и ребра, которые ведут к внутреннему узлу. Далее я предполагаю, что строка, для которой построено дерево суффиксов, имеет длину N символов.

  1. О краях, ведущих к листьям. Для каждого суффикса должен быть ровно один лист, и каждый лист имеет только одно входящее ребро (и ни одного исходящего ребра). Таким образом, должно быть N ребер, ведущих к листьям.

  2. О ребрах, ведущих к внутренним узлам. Как и в случае с листовыми узлами, внутренние узлы также имеют только одно входящее ребро. Поэтому, чтобы определить, сколько может быть ребер, ведущих к внутренним узлам, достаточно определить, сколько может быть внутренних узлов. Итак, каково максимально возможное количество внутренних узлов?

    Для этого важно следить, чтобы внутренние узлы вставлялись в суффиксное дерево только в точках ветвления, т.е. количество исходящих ребер внутреннего узла всегда не менее 2 (если было только одно исходящее ребро, внутренний узел не был бы построен в первую очередь). Но каждое исходящее ребро должно в конечном итоге привести к конечному узлу (возможно, после прохождения дополнительных внутренних узлов). Другими словами, каждый внутренний узел, вставленный в дерево, увеличивает общее количество конечных узлов по крайней мере на 1. Кроме того, даже дерево без каких-либо внутренних узлов должно иметь хотя бы одно ребро, выходящее из корневого узла (если только дерево не пустой). Следовательно, в непустом дереве общее количество листьев L должно быть

    L >= I + 1
    

    где I — количество внутренних узлов. И наоборот, количество внутренних узлов равно

    I <= L - 1 = N - 1
    

    Возвращаясь к исходному вопросу, количество ребер, ведущих к внутренним узлам, как мы сказали, совпадает с количеством внутренних узлов, следовательно, оно также ограничено N - 1.

Мы заключаем, что общее количество ребер равно количеству ребер, ведущих к листьям (N), плюс количество ребер, ведущих к внутренним узлам (<=N-1), поэтому его максимум равен связаны

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

quod эрат демонстрандум.


Относительно минимального количества ребер: здесь действует тот же принцип, т. е. мы вычисляем количество ребер, ведущих к листьям, и количество ребер, ведущих к внутренним узлам, а затем складываем их вместе.

Количество узлов, ведущих к листьям, всегда равно N, т. е. N является как максимально возможным, так и минимально возможным.

Однако количество узлов, ведущих к внутренним узлам, может быть равно нулю. Например. когда во входной строке нет повторяющихся элементов, таких как abcdef, имеется ровно N ребер, каждое от корня прямо до листа. Нет точек ветвления, нет внутренних узлов. Следовательно, минимальное количество ребер, ведущих к внутренним узлам, равно 0.

В заключение отметим, что минимальное количество ребер — N + 0 = N.

person jogojapan    schedule 18.10.2012
comment
Дерево из n узлов имеет n-1 ребер. Поскольку максимальное количество узлов в суффиксном дереве равно 2n-1, мы заключаем, что максимальное количество ребер равно 2n-2. - person mrk; 04.10.2014
comment
@saadtaame Ваше утверждение о том, что дерево на n узлах имеет n-1 ребер, верно только в том случае, если вы считаете корневой узел. Если вы сделаете это, суффиксное дерево будет иметь до 2n узлов, а не 2n-1. Итак, результат такой же, как и выше. (Примером дерева суффиксов, которое имеет ровно 2n-1 ребер, является дерево суффиксов для строки длины n=1. Оно состоит из корневого узла и 1 ребра, ведущего к единственному листу. Это 1=2n-1 ребер. ) - person jogojapan; 05.10.2014
comment
Я забыл упомянуть, что дерево должно быть бинарным, чтобы установить этот результат. - person mrk; 05.10.2014
comment
@saadtaame К чему именно ты клонишь? Что ты пытаешься мне сказать? - person jogojapan; 05.10.2014
comment
Это общий результат для деревьев... просто хотел добавить это. Вы могли бы использовать этот результат напрямую. - person mrk; 05.10.2014
comment
@saadtaame Что за замечание о бинарных деревьях? Суффиксные деревья не являются бинарными. - person jogojapan; 05.10.2014
comment
@jogojapan В своем ответе на stackoverflow.com/a/13392490/1330329 вы приводили доводы в пользу максимума N-2 внутренних узлы. Поскольку существует ровно одно ребро, ведущее к каждому листу, внутреннему узлу, а НЕ к корню, может быть не более 2N-2 ребер. Здесь вы приводите пример строки длиной N = 1, так что на самом деле это будет пустая строка с добавлением только $? Что такое минимальное (непустое) суффиксное дерево? Уже за $ вы бы увидели 2 листа, 1 корень, 0 внутренних узлов, 2 ребра? - person bug313; 08.09.2015
comment
Дополнение: я думаю, что часть путаницы возникает из-за того, что $ трактуется по-разному в литературе. Некоторые учебники называют «банан» текстом длиной N = 6, но числом листьев N + 1, потому что они явно добавляют $ (с собственным корневым краем листа), но не рассматривают его как часть текста. . С другой стороны, en.wikipedia.org/wiki/Suffix_tree использует иллюстрацию, где символ $ добавлено, но на самом деле не учтено, в котором указан последний суффикс «a $». В других (большинстве?) местах это будет N=7, явно содержащее $ как часть строки и с собственным конечным узлом. - person bug313; 08.09.2015
comment
@ bug313 Извините, я не совсем понимаю, в чем неразбериха. Но позвольте мне ответить на вопрос о строках длины 1: да, если вы следуете соглашению о том, что последним символом строки должен быть '$', то строка длины 1 будет строкой, состоящей только из знака '$' . Имейте в виду, что идея символа '$' заключается просто в том, что последний символ должен быть символом, который больше нигде в строке не встречается. Таким образом, для строки длиной 1 на самом деле не имеет значения, что это за символ. (Это также означает, что я включаю «$» в подсчет n.) - person jogojapan; 09.09.2015
comment
Да, я понял, для чего используется часовой, и это просто условность того, как его считать. Помимо всего этого, я на самом деле имел в виду, что для всех строк длины N с N>1 суффиксное дерево имеет не более 2N-2 ребер. Или, другими словами: если есть по крайней мере два листовых узла, то верхняя граница количества ребер равна 2N-2 вместо 2N-1, потому что может быть не более N-2 внутренних узлов (ветвящихся, некорневых, не -leaf), как вы продемонстрировали в другой ветке, указанной выше. - person bug313; 09.09.2015