Изменения

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

Алгоритм Фараха

47 байт добавлено, 14:36, 8 июня 2014
Шаг 3: построение нечетного по четному
которого ограничены нечетными позициями <tex>1,3,5, \dots </tex> строки <tex>s\$</tex>.}}
Из чётного дерева нужно получить нечётное дерево (дерево из суффиксов в нечётных позициях). Для этого можно взять [[Суффиксный массив | суффиксный массив]] чётного дереваМы хотим получить лексикографически отсортированные нечетные суффиксы строки, отрезать первые символы и выполнить стабильную сортировку по оставшимся первым символам: которым воссановим нечетное дерево. Заметим, что все нечетные суффиксы представляют собой один символ, за которым дальше следует четный суффикс, которые у нас уже отсортированы. Тогда поразрядно отсортируем их за линейное время.
[[Файл:Таким образом <tex>T_{odd}</tex> может быть построено за линейное время по <tex>T_{even}</tex>.png|300px|thumb|right| нечетное дерево]]
{|class="wikitable"
|+
!width="20%"|ID !!width="20%"|LCP !!width="20%"|STR
|- align = "center"
|3
|0
|112212221
|- align = "center"
|7
|1
|12221
|- align = "center"
|11
|1
|1
|- align = "center"
|1
|0
|21112212221
|- align = "center"
|5
|1
|2212221
|- align = "center"
|9
|3
|221
|}
Для выяснения общего префикса строк автор предлагает находить общего предка вершин в [[Сжатое суффиксное дерево|суффиксном дереве]] и считает, что такой предок можно найти за константное время. Для примера в этом дереве, общее начало строк '''5''' и '''9''' (<tex>11011111000</tex> и <tex>1111011111000</tex>) записано в пути от корня до общего предка этих вершин: (рисунок 3-1)
497
правок

Навигация