Drzewo sufiksowe - Google

Drzewo sufiksowe

Z Wikipedii

Skocz do: nawigacji, szukaj

Drzewo sufiksowestruktura danych reprezentująca zbiór sufiksów danego ciągu znaków w sposób umożliwiający efektywne wykonywanie wielu istotnych operacji na łańcuchach znaków.

Drzewo sufiksowe dla słowa BANANA zakończonego znakiem $. Liniami przerywanymi zaznaczono łącza sufiksowe.

Spis treści

[edytuj] Definicja

Drzewo sufiksowe dla słowa S nad alfabetem Σ jest skompresowanym drzewem trie dla zbioru wszystkich niepustych sufiksów S. Stąd wynikają następujące własności:

  • istnieje jednoznaczna odpowiedniość między liśćmi drzewa a sufiksami S
  • krawędzie drzewa są etykietowane niepustymi łańcuchami znaków
  • wszystkie węzły wewnętrzne mają co najmniej dwóch synów.

Aby zapewnić spełnienie powyższych własności, na końcu słowa S umieszcza się znak spoza alfabetu, co gwarantuje, że żaden sufiks nie jest prefiksem innego sufiksu, a drzewo będzie posiadać dokładnie n liści, po jednym dla każdego niepustego sufiksu słowa S. Ponieważ dodatkowo każdy węzeł wewnętrzny który nie jest korzeniem ma dwóch synów, takich węzłów może być co najwyżej (n − 1), więc całe drzewo jest liniowego rozmiaru (zawiera n + (n − 1) + 1 wszystkich węzłów).

W drzewie mogą być przechowywane łącza sufiksowe (zaznaczone na rysunku liniami przerywanymi), które są podstawą do jednego ze sposobów konstrukcji drzewa sufiksowego w czasie liniowym względem długości słowa S. W każdym węźle wewnętrznym drzewa niebędącym korzeniem, do którego ścieżka prowadzi przez krawędzie, których etykiety składają się na słowo χα (gdzie \chi\in\Sigma, \alpha\in\Sigma^\ast), przechowywane jest łącze do węzła reprezentującego podsłowo α.

[edytuj] Historia

Koncepcję drzew sufiksowych (nazwanych wtedy drzewami pozycyjnymi) wprowadził Weiner w 1973 roku[1]. Konstrukcja została uproszczona przez McCreighta (1976). Ukkonen (1995) podał pierwszy liniowy algorytm konstrukcji drzewa sufiksowego online [2].

[edytuj] Uogólnione drzewo sufiksowe

Uogólnione drzewo sufiksowe dla słów ABAB (zakończony ciągiem $0) i BABA (zakończony ciągiem $1

Uogólnione drzewo sufiksowe to drzewo sufiksowe zbudowane dla zbioru słów zamiast dla jednego słowa, reprezentujące wszystkie sufiksy słów z tego zbioru. W tym przypadku konieczne jest zakończenie każdego ze słów unikalnym znakiem lub słowem.

[edytuj] Zastosowania

Drzewa sufiksowe znajdują zastosowanie między innymi w bioinformatyce, gdzie służą do analizy łańcuchów DNA i sekwencji aminokwasów w białkach, oraz w kompresji danych (modyfikacje kompresji LZW).

[edytuj] Funkcjonalności

Drzewo sufiksowe dla słowa długości n i uogólnione drzewo sufiksowe dla słów o łącznej długości n można zbudować w czasie \mathcal{O}(n). Po zbudowaniu może służyć między innymi do efektywnego wykonania następujących operacji:

  • znajdowanie dowolnego wystąpienia wzorca P długości m jako podsłowa słowa S w czasie \mathcal{O}(m)
  • znajdowanie wszystkich z wystąpień wzorca P długości m w słowie S w czasie \mathcal{O}(m+z)
  • znajdowanie najdłuższego wspólnego podsłowa (spójnego podciągu) dwóch napisów długości n1 i n2 w czasie \mathcal{O}(n_1 + n_2)
  • znajdowanie najdłuższego podsłowa słowa S które powtarza się w tym słowie w czasie \mathcal{O}(n)

[edytuj] Zobacz też

[edytuj] Szczegóły implementacji

Drzewo sufiksowe można przechowywać w pamięci rozmiaru liniowego względem długości słowa S, utrzymując jako etykiety krawędzi drzewa pozycje początkowego i końcowego znaku etykiety zamiast wszystkich jej znaków.

[edytuj] Źródła

  • Dan Gusfield: Algorithms on strings, trees, and sequences: computer science and computational biology. Cambridge [England]: Cambridge University Press, 1997. ISBN 0-521-58519-8. 

Przypisy

  1. Weiner, P. "Linear pattern matching algorithm". 14th Annual IEEE Symposium on Switching and Automata Theory (1973): 1-11.
  2. Ukkonen, E. "On-line construction of suffix trees". Algorithmica 14, 1995, ss. 249--260.[1]

Zaprezentowano projekt ustawy medialnej
Likwidacja abonamentu od 2010 roku, a w zamian utworzenie Funduszu Zadań Publicznych, który zasilany byłby wpływami budżetowymi z podatku VAT od działalności medialnej - to jedno z założeń projektu ustawy medialnej, który opracował i ogłosił wczoraj zespół ekspertów powołany przez Ministerstwo Kultury i Dziedzictwa Narodowego.
Radio Szczecin uruchamia antenę miejską
Szczecin FM to nazwa anteny miejskiej publicznego Radia Szczecin, która rozpocznie nadawanie w styczniu 2009 roku.
"Tygodnik Powszechny" drożeje
"Tygodnik Powszechny" (Tygodnik Powszechny) drożeje o złotówkę – nowa cena to 5 zł.
Pakiety ubezpieczeń dla pracowników TVP
Telewizja Polska likwiduje ośrodek zdrowia przy ul. Woronicza w Warszawie, a w zamian zaoferuje pracownikom pakiety ubezpieczeń zdrowotnych.
"Manager Magazin" znika z rynku
Styczniowy numer miesięcznika "Manager Magazin" (Manager Media) będzie ostatnim, jaki ukaże się na rynku polskim. Poinformowała o tym niemiecka Grupa Der Spiegel, właściciel polskiego wydawnictwa.
Linki: Strona gwna