Массив суффикса здания от дерева суффикса.Inforder Посещение, когда у узела более двух детей

cs.stackexchange https://cs.stackexchange.com/questions/128007

Вопрос

из примечаний:

Нетрудно соблюдать, чтобы массив суффикса $ \ texttt {sa} $ Текст $ \ texttt {t} $ может быть получен из дерева суффикса $ \ texttt {st} $ , выполняя посещение в заказа: каждый раз, когда лист встречаются, суффикс-индекс, хранящийся в этом листе, записывается в Массив суффикса $ \ texttt {sa} $ ; Каждый раз, когда внутренний узел U столкнулся, его связанное значение записано в массив $ \ texttt {lcp} $ .

Как вы делаете визит в неисправности, когда узел имеет более двух детей?

Позвольте сказать, что вы посещаете левый ребенок, затем узел, то другой левый ребенок. Тогда вы снова посещаете узел?

SA в массиве указателя на суффиксы, упорядоченный лексикографически.

LCP содержит самый длинный общий префикс между двумя последовательными суффиксами $ \ Text {Shaft} _ {SA [I]} \ Text {и} \ text} {shart} _ {sa [i + 1]} $ .

\ $ представляет собой символ, которая меньше, чем у каждого другого char.

Значение, связанное с каждым узлом, - это длина префикса, написанного до сих пор.

Листья представляет индексы суффиксов. Если t= Banana \ $, лист 3 представляет нана \ $ (t [3,7])

На рисунке есть то, что должно быть деревом суффикса, но я думаю, что есть ошибка, поскольку края должны быть отсортированы в соответствии с их меткой, а листья 7 с краем с надписью «\ $» должен быть крайне левым листом и край.

 Введите описание изображения здесь

При моделировании алгоритма сначала вы посещаете узел 7 (используя фиксированную версию дерева), затем корню, поэтому у вас есть

SA = [7, ...]
lcp = [0, ...]
.

Тогда давайте скажем, вы продолжаете продолжаться с поиском визита U. Когда вы вернетесь к корню, вы снова вставляете значение 0 в LCP ? Или вы делаете это только в первый раз, когда вы посетили рут?

Это было полезно?

Решение

Если узел имеет $ l $ детей, с $ l \ geq 2 $ во времяВам необходимо лечить первый $ L-1 $ Детям в виде левых узлов, и вам нужно посетить родительский (Время $ l-1 $ ), написание несколько раз длина префикса, написанного в массиве LCP.

Это, примененное к дереву на изображении, даст правильный:

SA = [7, 6, 4, 2, 1, 5, 3]
lcp = [0, 1, 3, 0, 0, 2]
.

Иметь в виду, что край, помеченный «$» с листом 7, должен быть левым.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с cs.stackexchange
scroll top