275
правок
Изменения
→Линейный алгоритм
|about= Правило 3 заканчивает дело
|statement=
В любой фазе, если правило продолжения продления 3 применяется в продолжении <tex>i</tex>, оно будет реализовываться во всех дальнейших продолжениях (от <tex>i+1</tex> по <tex>j+1</tex>) до конца фазы.
<br>
|proof=
}}
Когда используется 3-е правило 3продления суффикса, никакой работы делать не нужно, так как требуемый суффикс уже в дереве есть. Поэтому можно заканчивать каждую фазу <tex>j+1</tex> текущую итерацию после первого же использования этого правила прохождения 3. Если это случится Так как лист навсегда останется листом, зададим метку ребра ведущего в продолжении i, то уже не требуется явно находить концы строк этот лист как <tex>st[ki..jx]</tex> с , где <tex>k x</tex>{{---}} ссылка на переменную, хранящую конец текущей подстроки. На следующих итерациях к этому ребру может применяться правило ответвления, но при этом будет меняться только левый(начальный) индекс <tex> i</tex>. Рассмотрим правила продолжения суффиксов. * При использовании правила 1 по [[#l1|лемме 1]] в последующих фазах будет выполняться правило 1. Поэтому скажем, что Таким образом мы создаём лист не только для рассмотренной части строкисможем удлинять все суффиксы, а для всей всей строки до конца. заканчивающиеся в листах за <brtex>* При использовании правила 2 появится новый лист, который далее будет продлеваться по правилу O(1. )<br/tex>* При использовании правила 3 по [[#l2|лемме 2]] никакой работы делать не нужно, поскольку суффикс в дереве уже есть. Следовательно, можно остановиться и не добавлять следующие суффиксы.
=== Итоговая оценка времени работы ===
== Псевдокод ==