Ukkonen'in algoritmasının asimptotik çalışma süresi , belki de doğrusal (?) Zamanda sonek ağaçları oluşturmak için en popüler algoritma sorunu ile ilgileniyorum .
İşte Dan Gusfield'ın "teller, ağaçlar ve diziler üzerinde algoritmalar" kitabından bir alıntı (bölüm 6.5.1):
"... Aho-Corasick, Weiner, Ukkonen ve McCreight algoritmalarının tümü ya alanı gerektirir ya da zaman sınırı minimum ve ".
[ , dize uzunluğudur ve alfabenin boyutudur]
Bunun neden doğru olduğunu anlamıyorum.
- Boşluk: Eh, boyutunda diziler kullanarak düğümlerin dışındaki dalları temsil edersek , gerçekten de alan kullanımı ile sonuçlanırız . Ancak, görebildiğim kadarıyla, dalları karma tablolar (örneğin Python'daki sözlükler) kullanarak saklamak da mümkündür. O zaman tüm karma tablolarda sadece işaretleyicileri oluruz (O ağaçta kenarları olduğu için), yine de zamanında çocuk düğümlerine erişebilirken dizileri kullanırken olduğu gibi.
- Zaman : yukarıda belirtildiği gibi, karma tabloları kullanmak zamanında herhangi bir düğümün giden dallarına erişmemizi sağlar . Ukkonen algoritması işlemleri gerektirdiğinden düğümlere erişim dahil), toplam çalışma süresi de .
Sonuçlarda neden yanıldığım ve Gusfield'in Ukkonen'in algoritmasının alfabeye bağımlılığı konusunda neden haklı olduğuna dair ipuçları için size çok minnettar olurum.