Selasa, 04 Oktober 2016

String Matching


String matching adalah pencaraian karakter pada teks. Pencarian tersebut mempunyai algoritma khusus yang dinamakan algoritma string matching. Sebelum ke cara kerja string matching mempunyai 3 komponen yaitu: 
  •  Pattern = deretan karakter yang dibandingkan dengan teks, dengan bentuknya x[0..m-1], panjang pattern disimbolkan dengan m.
  • Teks, tempat pembandingn pattern dilakukan, dengan bentuknya y[0..n-1], panjang teks disimbolkan dengan n.
  •  Alfabet, semua simbol yang digunakan oleh bahasa pada teks dan pattern,bentuknya (∑) dengan ukuran disimbolkan dengan ASIZE.
Cara kerja singkat algoritma ini adalah :
  •  Pemindaian teks dengan bantuan window yang ukurannya sama dengan panjang pattern.
  •  Menempatkan window pada awal teks
  • Membandingkan karakter pada window dengan karakter dari pattern. Lalu lakukan shift ke kanan pada window. lakukan secara berulang sampai window ada di akhir teks. ini disebut mekanisme sliding-window.
Dan algoritma ini terdapat jenis-jenis nya, yaitu:
1. Boyer moore
Algoritma Boyer Moore merupakan metode pencocokan string dari kanan ke kiri, memindai karakter pattern dari kanan ke kiri. Terdapat dua fungsi shift yaitu good­-suffix shift dan bad-character shift digunakan untuk mengambil langkah berikutnya apabila terjadi ketidakcocokan antara karakter pattern dengan karakter teks yang dicocokkan.
Berikut ini adalah cara kerja boyer moore:
  • Menjalankan preBmBc dan preBmGs supaya dapat inisialisasi.
preBmBc berfungsi untuk menentukan besar pergeseran yang dibutuhkan untuk mencapai karakter tertentu pada pattern dari karakter pattern terkanan. Lalu hasilnya disimpan pada tabel BmBc.
      
preBmGs. Sebelumnya suffix dijalankan pada pattern. Fungsi suffix adalah memeriksa kecocokan karakter dari terkanan dengan karakter yang lebih kiri dari karakter terkanan. Hasilnya disimpan pada tabel suff.  Sedangkan fungsi preBmGs adalah untuk mengetahui banyak langkah pada pattern.
  • lakukan pencarian string dengan hasil dari preBmBc dan preBmGs tadi.
2. Quick Search

Algoritma quick search merupakan metode pencocokan string dari kiri ke kanan kebalikannya dari boyer moore. Pada quick hanya menggunakan bad-character shift.

Cara kerja algoritma Quick Search:
  • Menjalankan preQsBc sebagai inisialisasi. berfungsi untuk mengetahui posisi terkanan masing-masing karakter pada pattern.
  • Membandingkan karakter. Jika ada ketidakcocokan maka bergeser berdasarkan QsBc.

 

3. Turbo BM

Algoritma yang menggunakan metode pencocokan string dari kanan ke kiri tapi membutuhkan memori lebih banyak dibandingkan dengan algoritma Boyer Moore. Algoritma Turbo BM menggunakan fungsi good-suffix shift dan bad-character shift serta menggunakan turbo shift.

Cara kerja algoritma Turbo BM

  •  menjalankan prosedur preBmBc dan preBmGs.
  • Melakukan pencocokan karakter pada pattern. Jika ada ketidakcocokan maka terjadi pergeseran terbesar berdasarkan BmBc, tabel BmGs dan turbo shift.     

4. Algoritma Shift-or


Algoritma Shift-or adalah algoritma yang menggunakan metode pencocokan string dari kiri ke kanan. tapi mempunyai batas ukuran yaitu Ukuran pattern dicocokkan tidak boleh lebih 32 bit. Algoritma ini harus menggunakan tabel cancel mask dan variabel match register terlebih dahulu.
Tabel cancel mask berfungsi mencatat kemunculan karakter alfabet yang muncul pada pattern. Berikut tabel cancel mask dan match register. 

Tabel Cancel Mask

7
6
5
4
3
2
1
0

g
a
G
a
G
a
c
g
G
0
1
0
1
0
1
1
0
C
1
1
1
1
1
1
0
1
A
1
0
1
0
1
0
1
1
T
1
1
1
1
1
1
1
1


Match Register
G
a
g
a
g
a
c
g
8
7
6
5
4
3
2
1
1
1
1
1
1
1
1
1

Cara kerja algoritma Shift-or

  • Gunakan logika OR terhadap match register dan tabel cancel mask untuk karakter pertama pada teks.
  • Simpan hasilnya pada match register. Variabel match register baru ini menjadi match register y ang di-OR-kan dengan cancel mask untuk karakter berikutnya.
  • Dan langkah di atas lakukan pada semua karakter pada teks sampai terdapat 0 pada kolom paling kiri match register.


Tidak ada komentar:

Posting Komentar