Изменения

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

Алгоритм Укконена

554 байта убрано, 10:09, 1 мая 2015
Оценка числа переходов
[[Файл:ExampleUkkonen8.png|200px|center|]]
|proof=
Пусть мы переходим из вершины Заметим, что на пути <tex> v A</tex> с путевой меткой в дереве по суффиксу <tex>s[j+1..i]</tex> по суффиксной ссылке в не более чем на одну вершину меньше, чем на пути <tex> u B</tex> с путевой меткой по суффиксу <tex>s[j+1..i]</tex> Определим множество . Каждой вершине <tex> A v</tex> как множество вершин на пути от корня до <tex> u </tex>, исключая корень. Множество <tex> B </tex> определим как множество вершин на пути от корня до соответствует вершина <tex> v u</tex>, исключая корень. Если длина первого ребра на пути от корня до <tex> v A</tex> равна единице, то выкинем из множества <tex>B</tex> вершину, в которую ведет это ребросуффиксная ссылка. Итого по построению получаем: Разница в одну вершину возникает, если первому ребру в пути <tex>|A| = d(u)B</tex>, соответсвует метка из одного символа <tex>|B| \ge d(v) - 1s_{j}</tex>. Теперь заметим, что тогда суффиксная ссылка из любой вершины множества <tex>B</tex> , в которую ведет в некоторую вершину множества <tex> A</tex>это ребро, и очевидно суффиксные ссылки из разных вершин ведут будет вести в разные вершины, поэтому <tex>|A| \geqslant |B|</tex>, а значит <tex>d(u) \geqslant d(v) - 1</tex>корень.
}}
275
правок

Навигация