Algoritma Boyer-Moore Search adalah salah satu algoritma yang dapat digunakan untuk mencari dimana sebuah string (dalam kasus ini dinamakan sebagai pola) apakah ditemukan di dalam kumpulan string lain dengan ukuran yang lebih besar. Contoh yang dibahas kali ini adalah mengenai pencarian kata dari sebuah input teks.
Boyer-Moore adalah algoritma pencarian string yang paling efisien dan sudah menjadi standar dari sistem pencarian string. Algoritma ini melakukan pendeteksian pola dalam string dengan melakukan perbandingan karakter pada deretan yang berbeda. Proses ini dinamakan Shift, dan aturan shift dihitung dengan menerapkan 2 aturan, yaitu aturan bad character dan aturan good suffix. Nilai maksimum dari panjang shift yang dapat dilakukan dihitung dengan aturan ini, kemudian pencarian karakter dilakukan dari awal sampai dengan pergeseran shift sebanyak panjang shift.
Langkah-langkah penggunaan algoritma ini adalah
1. Tentukan teks yang digunakan sebagai input
Diasumsikan data input adalah sebagai berikut:
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
2. Tentukan pola kata kunci yang digunakan dalam pencarian
Diasumsikan pola adalah sebagai berikut
labor
3. Lakukan pencarian kata kunci menggunakan algoritma ini
Dim idxKata() As Integer = CariPola(input, pola)
* Gunakan fungsi ini untuk mencari pola pada data input
Public Function CariPola(input As String, pola As String) As Integer() Dim hasil As New List(Of Integer)() Dim m As Integer = pola.Length Dim n As Integer = input.Length Dim badChar As Integer() = New Integer(255) {} For i As Integer = 0 To 255 badChar(i) = -1 Next For i As Integer = 0 To m - 1 badChar(AscW(pola(i))) = i Next Dim s As Integer = 0 While s <= (n - m) Dim j As Integer = m - 1 While j >= 0 AndAlso pola(j) = input(s + j) j -= 1 End While If j < 0 Then hasil.Add(s) s += If((s + m < n), m - badChar(AscW(input(s + m))), 1) Else s += Math.Max(1, j - badChar(AscW(input(s + j)))) End If End While Return hasil.ToArray() End Function
Hasil akhir adalah: (klik untuk perbesar gambar)
Contoh modul / source code dalam bahasa VB (Visual Basic) dapat didownload disini:
Jika membutuhkan jasa kami dalam pembuatan program, keterangan selanjutnya dapat dilihat di Fasilitas dan Harga
Jika ada yang kurang paham dengan langkah-langkah algoritma diatas, silahkan berikan komentar Anda.
Selamat mencoba.
Gan punya contoh source code algoritma boyer moore buat program php ga?
Saya tidak memiliki skrip tersebut, tetapi jika saya melihat kembali keseluruhan skrip, seharusnya tidak ada fungsi-fungsi tertentu yang bergantung pada Visual Studio sehingga seharusnya dapat dikonversi ke dalam bahasa lain.
Gan nemu phpnya gak?
Saya tidak memiliki versi php untuk algoritma ini, tetapi jika melihat skrip secara keseluruhan seharusnya skrip tersebut dapat dikonversi langsung ke dalam bahasa lain karena tidak memiliki ketergantungan pada fungsi2 tertentu yang hanya tersedia pada perangkat lunak.
Ada contoh source code yg untuk delphi? Maaf masih pemula hehe
Mohon maaf saya tidak memiliki contoh skrip dalam bahasa tersebut.