Algoritma Pencarian String String Matching Bahan Kuliah IF
Algoritma Pencarian String (String Matching) Bahan Kuliah IF 3051 Strategi Algoritma Oleh: Rinaldi Munir 1
Persoalan pencarian string Diberikan: 1. teks (text), yaitu (long) string yang panjangnya n karakter 2. pattern, yaitu string dengan panjang m karakter (m < n) yang akan dicari di dalam teks. Carilah (find atau locate) lokasi pertama di dalam teks yang bersesuaian dengan pattern. 2
Contoh 1: • Pattern: hari • Teks: kami pulang hari kamis target Contoh 2: • Pattern: not • Teks: nobody noticed him target Contoh 3: • Pattern: apa • Teks: Siapa yang menjemput Papa dari kota Balikpapan? 3
Algoritma Brute Force Contoh 4: Teks: nobody noticed him Pattern: not s=0 s=1 s=2 s=3 s=4 s=5 s=6 s=7 nobody noticed him not not 4
Contoh 5: Teks: 1001010100101111010001 Pattern: 001011 s=0 s=1 s=2 s=3 s=4 s=5 s=6 s=7 s=8 1001010100101111010001 001011 001011 001011 5
Kompleksitas algoritma brute-force: • Kompleksitas kasus terbaik adalah O(n). • Kasus terbaik terjadi jika yaitu bila karakter pertama pattern P tidak pernah sama dengan karakter teks T yang dicocokkan • Pada kasus ini, jumlah perbandingan yang dilakukan paling banyak n kali misalnya: • Teks: String ini berakhir dengan zz • Pattern: zz 6
• Kasus terburuk: m(n – m + 1) = O(mn) • Teks: aaaaaaaaaaaaaaab • Pattern: aaaab 7
Algoritma Knuth-Morris-Pratt (KMP) • Dikembangkan oleh D. E. Knuth, bersama dengan J. H. Morris dan V. R. Pratt. • Pada algoritma brute force, setiap kali ditemukan ketidakcocokan pattern dengan teks, maka pattern digeser satu karakter ke kanan. 8
• Sedangkan pada algoritma KMP, kita memelihara informasi yang digunakan untuk melakukan jumlah pergeseran. • Algoritma KMP menggunakan informasi tersebut untuk membuat pergeseran yang lebih jauh, tidak hanya satu karakter seperti pada algoritma brute force. 9
Teks: Pattern: 123456789… bimbingan belajar atau bimbel j = 5 123456789… bimbingan belajar atau bimbel j = 2 10
Definisi: • Misalkan A adalah alfabet dan x = x 1 x 2…xk adalah string yang panjangnya k yang dibentuk dari karakter di dalam alfabet A. • Awalan (prefix) dari x adalah upa-string (substring) u dengan u = x 1 x 2…xj – 1 , j {1, 2, …, k } dengan kata lain, x diawali dengan u. • Contoh 6. Misalkan x = abacab. Awalan dari x adalah: �, a, aba, abaca 11
• Akhiran (suffix) dari x adalah upa-string (substring) u dengan u = xj – b + 1 …xk , j {1, 2, …, k} dengan kata lain, x di akhiri dengan v. • Contoh 7. Misalkan x = abacab. Akhiran dari x adalah �, b, ab, cab, acab, bacab Akhiran � mempunyai panjang 0, ab mempunyai panjang 2, dan seterusnya. 12
• Pinggiran (border) dari x adalah upa-string r sedemikian sehingga r = x 1 x 2…xj – 1 dan u = xj – b + 1 …xj , j {1, 2, …, k} • dengan kata lain, pinggiran dari x adalah upa-string yang keduanya awalan dan juga akhiran sebenarnya dari x. Contoh 8. Misalkan x = abacab. Pinggiran dari x adalah: �, ab 13
Fungsi Pinggiran (Border Function) 14
• Contoh 7: T = ‘ababbabaaba’ dan P = ‘ababaa’ j 1 2 3 4 5 6 a b a a P[j] b(j) 0 0 1 2 3 1 Iterasi 1: ababbabaaba ababaa upastring yang cocok = abab, panjangnya = 4 pinggiran terpanjangnya = ab, panjangnya = 2 = b(4) jumlah pergeseran = 4 – 2 = 2 Iterasi 2: ababbabaaba’ ababaa 15
Contoh 8: b a c b s b a c b a b a q b a c a P a b a b a b a s’ c a c b a T c a P k a b a Pq a b a Pk October 2003 Sanath Jayasena T b Longest prefix of Pq that is also a suffix of P 5 is P 3; so b[5]= 3 7 -16
Border Function 1 2 3 4 5 6 7 8 9 10 P [i] a b a b c a 0 0 1 2 3 4 5 6 0 1 i b[i] October 2003 Sanath Jayasena 7 -17
Kompleksitas Waktu Algoritma KMP • Menghitung fungsi pinggiran : O(m), • Pencarian string : O(n) • Kompleksitas waktu algoritma KMP adalah O(m+n). 18
- Slides: 18