Изменения

Перейти к: навигация, поиск

Сжатое суффиксное дерево

13 байт добавлено, 21:53, 7 марта 2016
Наивный алгоритм
'''void''' insert('''int''' l, '''int''' r):
cur = 0
'''while''' (l < r) '''if''' (go[cur][s[l]].v = -1 ) <span style="color:Green">// если мы не можем пойти из вершины по символу <tex> l </tex></span> createVertex(cur, l, r) <span style="color:Green">// создаем новую вершину</span>
'''else'''
start = go[cur][s[l]].l
finish = go[cur][s[l]].r
hasCut = ''false''
'''for''' j = start '''to''' finish <span style="color:Green">// для каждого символа на ребре из текущей вершины</span> '''if''' (s[l+j-start] != s[j] ) <span style="color:Green">// если нашли не совпадающий символ</span>
<span style="color:Green">// создаем вершину на ребре</span>
old = go[cur][s[l]]
hasCut = ''true''
'''break'''
'''if''' (!hasCut)
cur = go[cur][s[l]].v <span style="color:Green">// переходим по ребру</span>
l = l + finish - start <span style="color:Green">// двигаемся по суффиксу на длину подстроки, записанной на ребре</span>
313
правок

Навигация