Processing math: 100%

Algorytmy tekstowe II

strict warning: Only variables should be passed by reference in /usr/share/drupal6/modules/book/book.module on line 559.

Najważniejszymi strukturami danych związanymi z tekstami są te, które dotyczą efektywnej reprezentacji zbioru wszystkich podsłów tekstu. Przed wszystkim interesuje nas to, żeby taka reprezentacja przyspieszała wyszukiwanie słów, a jednocześnie żeby była konstruowalna w czasie liniowym albo prawie liniowym (z dokładnością do logarytmów).

Oznaczmy przez Subwords(x) wszystkie podsłowa tekstu x, a wszystkie wystąpienia (początkowe pozycje) słowa z w słowie x oznaczmy przez Occ(z,x). (Oznaczenie Occ jest skrótem od ang. occurrences).

Chcemy znaleźć taką reprezentację zbioru Subwords(x), by można było łatwo odpowiedzieć na pytanie, czy zSubwords(x), co jest równoważne Occ(z,x), jak również rozwiązywać inne problemy tekstowe. Poza tym chcemy, by rozmiar tej reprezentacji był liniowy, podczas gdy rozmiar Subwords(x) może być kwadratowy. Spośród wielu dobrych reprezentacji najbardziej znanymi są tablice sufiksowe (oznaczane przez SUF), drzewa sufiksowe i grafy podsłów (nie rozważane w tym module).