Saya telah terjebak selama beberapa waktu yang merupakan algoritma pencarian string tercepat, mendengar banyak pendapat, tetapi pada akhirnya saya tidak yakin.
Saya telah mendengar beberapa orang mengatakan bahwa algoritma tercepat adalah Boyer-Moore dan beberapa mengatakan bahwa Knuth-Morris-Pratt sebenarnya lebih cepat.
Saya telah mencari kompleksitas pada keduanya, tetapi mereka kebanyakan terlihat sama O(n+m)
. Saya telah menemukan bahwa dalam skenario terburuk Boyer-Moore memiliki O(nm)
kompleksitas dibandingkan dengan Knuth-Morris-Pratt yang memiliki O (m + 2 * n). Di mana n = panjang teks dan m = panjang pola.
Sejauh yang saya tahu Boyer-Moore memiliki linier-waktu-kasus terburuk jika saya akan menggunakan Aturan Galil.
Pertanyaan saya, Lebih dari semua yang sebenarnya merupakan algoritma pencarian String tercepat (Pertanyaan ini mencakup semua kemungkinan algoritma menyengat, bukan hanya Boyer-Moore dan Knuth-Morris-Pratt).
Sunting: Karena jawaban ini
Apa yang sebenarnya saya cari adalah:
Diberikan teks T
dan pola P
saya harus menemukan semua penampilan P
di T
.
Juga panjang P dan T berasal [1,2 000 000]
dan program harus berjalan di bawah 0,15 detik.
Saya tahu bahwa KMP dan Rabin-Karp sudah cukup untuk mendapatkan skor 100% untuk masalah ini, tetapi saya ingin seseorang ingin mencoba dan mengimplementasikan Boyer-Moore. Mana yang terbaik untuk jenis pencarian pola ini?