Изменения

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

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

39 байт добавлено, 11:35, 14 июня 2014
Нет описания правки
Важно помнить, что алгоритм скорее теоретический, чем практический, а основная ценность его заключается в том, что размер алфавита может быть произвольным.
== Описание алгоритма ==
Основная идея алгоритма заключается в том, что мы уменьшаем размер исходной строки, строим суффиксное дерево для неё рекурсивно, а потом получаем из построенного дерево для текущей строки. Для этого мы разбиваем символы сходной строки на пары и пронумеровываем их, а из полученных номеров составляем новую строку, которая уже в <tex>2</tex> раза короче.
В итоге получается <tex> T(n) = T(n / 2) + \Theta (n) = \Theta (n) </tex>.
==См. также==
* [[Сжатое суффиксное дерево]]
* [[Алгоритм Укконена]]
* [[Суффиксный массив]]
= Ссылки = Источники информации ==
*[http://www.cs.rutgers.edu/~farach/pubs/Suffix.pdf Optimal suffix tree construction with large alphabets ]
*[http://www.proteus2001.narod.ru/gen/txt/11/farach.html Суффиксное дерево {{- --}} Алгоритм фарача]
*[http://books.google.ru/books/about/Computing_Patterns_in_Strings.html?id=iKR0EewiCu4C&redir_esc=y Computing Patterns in Strings]
*[https://github.com/krzysztofp/Text-Algorithms/tree/master/Farach%20suffix%20tree Chris Parjaszewski's implementation]
497
правок

Навигация