Konstruksi pohon sufiks linear-waktu yang sederhana secara konseptual

13

Pada tahun 1973 Weiner memberikan pembangunan pohon akhiran linear pertama kali. Algoritma disederhanakan pada tahun 1976 oleh McCreight, dan pada tahun 1995 oleh Ukkonen. Namun demikian, saya menemukan algoritma Ukkonen relatif terlibat secara konseptual.

Apakah ada penyederhanaan pada algoritma Ukkonen sejak 1995?

Randomblue
sumber
4
Farach et el 1998. Saya pikir ini adalah tempat yang baik untuk mulai membaca: scholar.google.co.uk/...
Radu Grigore

Jawaban:

9

Saya tidak yakin apakah ada hasil baru yang secara langsung menyederhanakan pembangunan pohon sufiks. Namun, setidaknya ada satu hasil yang memberikan algoritma yang sangat sederhana untuk membangun susunan sufiks dalam waktu linier.

HAI(1)

HAI(nlgn)

zotachidil
sumber
1
Bisakah Anda memberikan pointer ke cara yang lebih mudah untuk membangun array suffix dalam waktu O (N lg N)?
Randomblue
1
Beri label semua sufiks dengan panjang 2 ^ k dengan bilangan bulat sedemikian rupa sehingga label sesuai dengan relasi urutan antara sufiks. Langkah pertama (k = 0) jelas. Untuk menghitung label pada langkah k, gunakan label dari langkah k-1, dan lakukan semacam radix. Makalah ini harus mudah dipahami: webglimpse.net/pubs/suffix.pdf
zotachidil
7

Selain apa yang disebutkan ( Kärkkäinen & Sanders, 2003 ), saya pikir Anda akan menghargai versi "yang lebih baru" oleh Kärkkäinen, Sanders dan Burkhard, 2006 . Algoritma pada dasarnya mengikuti struktur algoritma Farach. Ini bisa dibilang lebih sederhana secara konseptual, tetapi bonus sebenarnya adalah mereka memberikan pembaca dengan implementasi algoritma. Hanya sekitar 50 baris C ++, jadi memang tidak ada detail tersembunyi.

Juho
sumber