Яким чином час виконання алгоритму Укконена залежить від розміру алфавіту?


19

Мене хвилює питання про асимптотичний час роботи алгоритму Укконена , можливо, найпопулярнішого алгоритму побудови дерев суфіксів у лінійному (?) Часі.

Ось цитата з книги "Алгоритми про струни, дерева та послідовності" Дена Гусфілда (розділ 6.5.1):

"... алгоритми Aho-Corasick, Weiner, Ukkonen та McCreight або вимагають простору , або обмежений час O ( m ) повинен бути замінений мінімумом O ( m log m ) та O ( m log | Σ | ) ".Θ(м|Σ|)О(м)О(мжурналм)О(мжурнал|Σ|)

[ - довжина рядка і Σ - розмір алфавіту]мΣ

Я не розумію, чому це правда.

  • Space: добре, якщо ми уявимо гілка з вузлів з використанням масивів розміру , то, на насправді, ми в кінцевому підсумку з thetas ; ( т | Е | ) використанням простору. Однак, наскільки я бачу, можна також зберігати гілки, використовуючи хеш-таблиці (скажімо, словники в Python). Тоді ми мали б лише Θ ( m ) покажчики, які зберігаються у всіх хеш-таблицях (оскільки у дереві є Θ ( m ) ребра), і в той же час ми матимемо доступ до дитячих вузлів у O ( 1 )Θ(|Σ|)Θ(м|Σ|)Θ(м)Θ(м)О(1) час, так само швидко, як при використанні масивів.
  • Час : як було сказано вище, використання хеш-таблиць дозволяє нам отримати доступ до вихідних гілок будь-якого вузла за час . Оскільки алгоритм Укконена вимагає операцій O ( m ) (включаючи доступ до дитячих вузлів), то загальний час роботи тоді також буде O ( m ) .О(1)О(м)О(м)

Я був би вам дуже вдячний за будь-які підказки про те, чому я помиляюся у своїх висновках і чому Гусфілд має рацію щодо залежності алгоритму Укконена від алфавіту.


3
Я не думаю, що є докази того, що незалежне обмеження часу / простору не залежить від розміру алфавіту. Я вважаю, що Гусфілд виступив із заявою, оскільки не існує відомого методу для повного позбавлення від обмеженого часу. Для того щоб встановити його, вам доведеться детальніше розглянути свої хеш-функції. Справжній найгірший випадок (1) для пошуку хешу вимагає ідеального хешу. Мені незрозуміло, як це зробити під час роботи алгоритму (тому що хеш-записи не є статичними на той момент).
jogojapan

(продовження) Ви можете це зробити, як тільки дерево буде заповнене, але тоді обмежений час для самого алгоритму все одно буде незмінним. (+1 за запитання, хоча.)
jogojapan

1
Корисний контекст: Алгоритм
Укконена

Відповіді:


2

О(1)О(1)Ω(Σ)Θ(мΣ)

Більше того, на практиці час для налаштування всіх цих хеш-таблиць буде набагато більшим, ніж час для налаштування масивів.

Ви можете скористатися глобальною хеш-таблицею, яка індексується з (node, символом) -парами, але принаймні аргумент "тільки амортизований" залишиться.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.