EMZETT.
Увійти

Суфіксний масив

Коротко: Суфіксний масив — відсортований список усіх суфіксів тексту. З ним будь-який підрядок можна знайти двійковим пошуком.

Докладніше: Для тексту banana суфікси — banana, anana, nana, ana, na, a. Зберігаються лише їхні початкові позиції в алфавітному порядку: [5, 3, 1, 0, 4, 2].

Подробиці

  • Пошук: Шаблон довжини m знаходиться двійковим пошуком по суфіксах за O(m log n).
  • Побудова: Наївно сортуванням за O(n² log n). Добрі алгоритми (SA-IS, подвоєння префікса) досягають O(n) — O(n log n).
  • Порівняно із суфіксними деревами: Трохи повільніше, але набагато менше пам’яті.
  • Доповнення — масив LCP: Зберігає довжину спільного префікса сусідніх суфіксів і дозволяє інші запити, наприклад найдовший повторюваний підрядок.
  • Застосування: Біоінформатика (пошук по геному), перетворення Барроуза — Вілера в bzip2, виявлення плагіату, повнотекстові індекси.
  • Порівняння: Для повторних пошуків в одному тексті індекс окупається. Одноразовий пошук виконують КМП чи Бойєр — Мур.

Див. також: Інвертований індекс