• Tidak ada hasil yang ditemukan

BAB II LANDASAN TEORI - Implementasi Algoritma Brute Force dan Algoritma Knuth-Morris-Pratt (KMP) Dalam Pencarian Word Suggestion

N/A
N/A
Protected

Academic year: 2019

Membagikan "BAB II LANDASAN TEORI - Implementasi Algoritma Brute Force dan Algoritma Knuth-Morris-Pratt (KMP) Dalam Pencarian Word Suggestion"

Copied!
14
0
0

Teks penuh

(1)

BAB II

LANDASAN TEORI

1.8. Query

Query adalah satu atau beberapa kata atau frase / kalimat yang di masukan / di ketikan

oleh pengguna saat melakukan pencarian pada search engine (google atau search engine lainnya).

1.9. Search Engine

Mesin pencari (search engine) adalah salah satu program komputer yang di rancang khusus untuk membantu seseorang menemukan file-file yang disimpan dalam komputer, misalnya dalam sebuah web server umum di web (www) atau komputer sendiri (Supriyadi, Eko. 2009). Mesin pencari memungkinkan kita untuk meminta content media dengan kriteria yang spesifik ( biasanya berisikan frase atau kata yang kita inginkan) dan memperoleh daftar file yang memenuhi kriteria tersebut.

Mesin pencari biasanya menggunakan indeks ( yang sudah di buat sebelumnya dan di mutakhirkan secara teratur ) untuk mencari file setelah pengguna memasukan kriteria pencarian. Mesin pencari yang akan saya bahas adalah mesin pencari khusus yang di gunakan untuk mencari informasi dan berbagai file di Internet, sehingga mesin pencari sangat berguna bagi para penggunanya untuk mencari berbagai bahan referensi atau lainnya.

(2)

kecepatan dan ketepatan pencarian sebuah mesin pencarian tergantung kepada cara pengindeksan dan algoritma pencarian yang digunakan.

Adapun struktur umum sebuah mesin pencari adalah sebagai berikut : 1. Kotak teks pencari

Kotak ini digunakan sebagai tempat memasukan kata kunci yang akan dijadikan acuan dilakukan pencarian.

2. Tombol pencari

Tombol ini yang akan menjalankan perintah pencarian.

2.2.1. Jenis – Jenis Mesin Pencari (Search Engine)

Berdasarkan cara mengumpulkan data halaman-halaman web, mesin pencari dapat di kelompokkan menjadi 4 kategori yaitu :

1. Human Organized Search Engine

Mesin pencari yang di kelola sepenuhnya oleh tangan manusia. Mesin pencari ini menggunakan metode dengan memilah-milih informasi yang relevan dan dikelompokan sedemikian rupa sehingga lebih bermakna dan bermanfaaat bagi penggunannya. Situs ini dalam prakteknya memperkerjakan para pakar dalam bidang-bidang tertentu, kemudian para pakar tersebut dapat mengkelompokan situs-situs tertentu sesuai dengan bidangnnya atau kategori situs itu sendiri.

2. Computer Created Search Engine

(3)

3. Hybrid Seacrh Engine

Merupakan gabungan antara tangan manusia dengan komputer, sehingga menghasilkan hasil pencarian yang relatif akurat. Peran manusia dalam hal ini adalah sebagai penelaah dalam proses pengkoleksian database halaman web. Sebenarnya tipe ini lah yanag paling mudah pembuatannya karena dapat di desain sesuai dengan keinginan kita.

4. MetaCrawler / Meta Search

Merupakan perantara dari mesin pencari yang sebenarnya. Mesin ini hanya akan mengirimkan permintaan pencarian ke berbagai mesin pencari serta menampilkan hasilnya satu di layer browser sehingga akan menampilkan banyak sekali hasil dari berbagai mesin pencari yang ada.

2.2.2. Cara Kerja Mesin Pencari (Search Engine)

Mesin pencari web bekerja dengan cara menyimpan informasi tertang banyak halaman web, yang diambil secara langsung dari www. Halaman ini di ambil dengan web

crawler-browser, web yang otomatis mengikuti setiap pranala yang di lihatnya. Isi

(4)

2.3. Word Suggestion

Word suggestion merupakan kata berbahasa inggris yang berarti “Sugesti Kata”. Jika kita uraikan menurut Kamus Umum Bahasa Indonesia, “Kata” berarti unsur bahasa yg diucapkan atau dituliskan yg merupakan perwujudan kesatuan perasaan dan pikiran yg dapat digunakan dalam berbahasa, sedangkan “Sugesti” adalah pendapat yg dikemukakan (untuk dipertimbangkan); anjuran; saran; (2) pengaruh yg dapat menggerakkan hati orang ; dorongan. (KBBI Online, 2015)

Word suggestion merupakan fungsi dari Aplikasi Auto Text yang digunakan

untuk memberikan saran terhadap kata yang akan diketik atau dicari. Dengan mengetikkan beberapa huruf atau seluruh huruf maka sistem akan mencari ke dalam database apakah ada sebuah kata yang memenuhi kriteria dari huruf-huruf yang

dimasukkan. Jika setelah dicek dan ternyata di dalam database ada, maka akan muncul list yang menunjukkan sugesti kata yang ada. Pengecekan itu sendiri berdasarkan dari kecocokan huruf dari kata yang dimasukkan user dengan list kata-kata yang ada di database (Pradhana, F. 2012)

2.3.1. Cara Kerja Word Suggestion

Menurut Fandi Pradhana (2012) cara kerja word suggestion dalam sistem pencarian adalah sebagai berikut:

a. User menentukan informasi yang akan dicari, Misalnya informasi yang akan dicari User adalah “Play” dalam sebuah database kamus, maka setiap User melakukan input, word suggestion mencocokan teks input dengan database informasi yang akan dicari.

b. Jika User meng-input karakter “P”, maka word suggestion akan menampilkan beberapa data yang cocok dengan database kamus, misalnya ”Play”, “Pool”, “Pluto”, dan “Plan”. Biasanya word suggestion membatasi jumlah opsi yang akan ditampilkan.

(5)

2.4. Algoritma

Istilah algoritma digunakan dalam ilmu komputer untuk menggambarkan metode pemecahan masalah yang terbatas, deterministik, dan efektif yang cocok untuk implementasi sebagai program komputer (Sedgewick et al, 2011).

Algoritma yang akan di implementasikan pada penelitian ini adalah algoritma String Matching yaitu algoritma Brute Force dan algoritma Knuth-Morris-Pratt

(KMP) . Hal ini dikarenakan menurut banyak peneliti komputer menganggap bahwa String matching adalah pencarian sebuah pattern pada sebuah teks. Menurut Munir (2004) algoritma string matching adalah algoritma yang ditujukan untuk melakukan pencocokan sub string pada string besar.

2.4.1. Algoritma Pencocokan String (String Matching)

Algoritma pencocokan string merupakan komponen dasar dalam pengimplementasian berbagai perangkat lunak praktis yang sudah ada. String matching digunakan untuk menemukan satu atau lebih string yang disebut dengan pattern (string yang akan dicocokkan ke dalam text) dalam string yang disebut dengan text (string yang di-input) (Charras & Lecroq, 2004).

Menurut Singla dan Garg (2012), ada dua teknik utama dalam algoritma string matching yaitu exact matching dimana hasil pencocokannya mengandung string yang

sama persis dengan string yang di-input, contohnya pada algoritma Needleman Wunsch, algoritma Smith Waterman, algoritma Knuth-Morris-Pratt, algoritma

Boyer-Moore-Horspool dan approximate matching dimana hasil pencocokannya

mengandung string yang tidak harus persis dengan string yang di-input, contohnya pada algoritma Fuzzy String Searching, algoritma Rabin Karp, algoritma Brute Force.

2.4.2. Klasifikasi Algoritma Pencocokan String (String Matching)

Menurut Christian Charras dan Thierry Lecroq (2004:12-14) yang diterjemahkan oleh Serupa Creative Commons yang dilansir dari situs Wikipedia (2013) tentang Algoritma Pencocokan String, Algoritma pencocokkan string dapat diklasifikasikan menjadi tiga bagian menurut arah pencariannya, yaitu :

(6)

1. Algoritma Brute Force

2. Algoritma dari Morris dan Pratt, yang kemudian dikembangkan oleh Knuth, Morris, dan Pratt.

b. Dari kanan ke kiri, arah yang biasanya menghasilkan hasil terbaik secara praktikal, contohnya adalah Algoritma dari Boyer dan Moore, yang kemudian banyak dikembangkan, menjadi algoritma turbo Boyer Moore, Algoritma Tuned Boyer Moore, dan algoritma Zhu-Takaoka.

c. Dan kategori terakhir, dari arah yang ditentukan secara spesifik oleh algoritma tersebut, arah ini menghasilkan hasil terbaik secara teoritis, algoritma yang termasuk kategori yaitu Algoritma Colussi dan Algoritma Crochemore-Perrin.

2.4.3. Algoritma Brute Force

Charras dan Lecroq (2004) meneliti bahwa algoritma Brute Force digunakan dalam pengecekan pada setiap kedudukan dalam text dari karakter pertama hingga karakter akhir. Seusai pengecekan karakter pertama terjadi, maka proses shift dilakukan dengan berpindah tepat satu posisi ke arah kanan (berpindah ke karakter kedua, ketiga dan seterusnya). Algoritma Brute Force tidak memerlukan tahap praproses. Selama tahap pencarian, pembadingan karakter pada text dapat selesai pada posisi manapun.

(7)

Pada algoritma Brute Force, diberikan y sebagai text dan x sebagai pattern. Maka dilakukanlah proses pencocokan pattern pada text-nya. Untuk tahap pencocokan pertama, dilakukan pencocokan terhadap text sepanjang karakter dari pattern. Apabila match karakter pertama pada text dan karakter pertama pada pattern, maka dimulailah

proses pencocokan pertama. Pada pencocokan pertama ini, dilakukanlah pencocokan pada karakter kedua untuk masing-masing text dan pattern. Apabila ditemukan match pada pencocokan ini, maka lakukanlah pencocokan untuk karakter-karakter selanjutnya. Jika mismatch terjadi, maka proses berlanjut pada tahap pencocokan kedua.

Tahap pencocokan kedua dilakukan dengan berpindah satu karakter ke arah kanan dari tahap pencocokan pertama. Dilakukanlah pencocokan karakter kedua dari text dan karakter pertama pada pattern awal pada tahap sebelumnya. Jika ditemukan

match pada pencocokan ini, maka dimulailah proses pencocokan kedua. Selanjutnya lakukan pencocokan pada karakter ketiga pada text dan karakter kedua pada pattern. Apabila match, lanjutkan ke karakter-karakter berikutnya dan apabila mismatch, lakukan tahap pencocokan ketiga. Untuk memulai tahap pencocokan ketiga, berpindahlah satu karakter ke arah kanan terhadap text.

Tahap demi tahap dilakukan pada proses pencocokan hingga ditemukan match pada text yang karakternya sama panjang terhadap karakter pada pattern. Proses berakhir saat karakter terakhir pada text telah dilakukan pencocokan ditemukan atau tidaknya pattern pada text.

Sebagai contoh, diberikan sejumlah karakter sebagai text = GCATCGCAGAGAGTATACAGTACG dan yang akan dicocokkan adalah pattern = GCAGAGAG sebagaimana dikutip pada Carras dan Lecroq (2004). Gambar 2.1 dan gambar 2.2 berikut akan menggambarkan proses pencocokan yang telah dijelaskan sebelumnya pada algoritma Brute Force dimana y merupakan text dan x merupakan pattern. Setelah dilakukan tahap pencocokan sepanjang karakter pada pattern, proses

(8)
(9)
(10)

Menurut Fandi Pradhana (2012) pseudocode pada Algoritma Brute Force adalah sebagai berikut :

Public static int BruteForce (string text, string pattern) {

Int n = text.length(); //cari panjangnya text

Int m = pattern.length(); //cari panjangnya pattern Int j;

For (int i = 0; i <= (n-m); i++) { J = 0;

While ((j< m) && (text.charAt(i+j) == pattern.charAt(j))) J++;

If(j == m)

Return i; //kecocokan ditemukan di i

}

Return -1; //tidak ada yang cocok }

Pada fungsi Brute Force Panjang teks di masukkan ke dalam variabel n, Panjang pattern dimasukkan ke variabel m, dilakukan pengulangan untuk membandingkan karakter dimulai dari 0 sampai (n-m), di dalam pengulangan tersebut dilakukan perbandingan karakter pada text dan pattern. Jika ditemukan kecocokan di kembalikanlah nilai i, jika tidak di kembalikan nilai -1.

2.4.4. Algoritma Knuth-Morris-Pratt

Algoritma Knuth Morris Pratt merupakan salah satu algoritma yang sering digunakan untuk menyelesaikan masalah pencocokan string. Algoritma ini adalah penyempurnaan dari algoritma pencocokan string dengan menggunakan algoritma brute force. Pada algoritma brute force, setiap kali ditemukan ketidak cocokan pattern

(11)

secara signifikan. Algoritma Knuth Morris Pratt ini dikembangakan oleh D. E. Knuth, bersama-sama dengan J. H. Morris dan V. R. Pratt (1997).

Algoritma Knuth-Morris-Prath memelihara informasi yang digunakan saat melakukan pergeseran. Informasi ini digunakan untuk melakukan pergeseran yang lebih jauh, tidak seperti brute force yang melakukan pergeseran perkarakter. Pergeseran dilakukan berdasarkan suffix kesamaan suffix dan prefix dalam pattern dan yang ditemukan di dalam teks. Secara sistematis, langkah-langkah yang dilakukan algoritma Knuth-Morris-Pratt pada saat mencocokkan string :

1. Algoritma Knuth-Morris-Pratt mulai mencocokkan pattern pada awal teks. 2. Dari kiri ke kanan, algoritma ini akan mencocokkan karakter per karakter

pattern dengan karakter di teks yang bersesuaian, sampai salah satu kondisi

berikut dipenuhi:

1. Karakter di pattern dan di teks yang dibandingkan tidak cocok (mismatch). 2. Semua karakter di pattern cocok. Kemudian algoritma akan

memberitahukan penemuan di posisi ini.

3. Algoritma kemudian menggeser pattern berdasarkan tabel, lalu mengulangi langkah 2 sampai pattern berada di ujung teks.

(12)

Gambar 2.3 dan gambar 2.4 berikut akan menggambarkan proses pencocokan yang telah dijelaskan sebelumnya pada algoritma Knuth-Morris-Pratt dikutip Carras dan Lecroq (2004), dimana y merupakan text dan x merupakan pattern. Setelah dilakukan tahap pencocokan sepanjang karakter pada pattern, proses shift dilakukan dengan berpindah tidak hanya satu karakter seperti pada algoritma brute, pada algoritma Knuth-Morris-Pratt, algoritma ini dapat memelihara informasi yang digunakan untuk

melakukan jumlah pergeseran.

Gambar 2.3 Ilustrasi tahap pencarian algoritma Knuth-Morris-Pratt

y

x

y

x

y

x

y

(13)

Gambar 2.4 Ilustrasi tahap pencarian algoritma Knuth-Morris-Pratt (lanjutan) y

x

y

x

y

x

y

(14)

Menurut Fandi Pradhana (2012) berikut merupakan pseudocode pada algoritma Knuth-Morris-Pratt :

public static int kmpMatch (string text, string pattern) {

Int n = text.length(); Int m = pattern.length();

Int fail[] = computeFail (pattern);

Gambar

Gambar 2.1 Ilustrasi tahap pencarian algoritma brute force
Gambar 2.2 Ilustrasi tahap pencarian algoritma brute force (lanjutan)
Gambar 2.3 Ilustrasi tahap pencarian algoritma Knuth-Morris-Pratt
Gambar 2.4 Ilustrasi tahap pencarian algoritma Knuth-Morris-Pratt (lanjutan)

Referensi

Dokumen terkait

Implementasi Algoritma Pencocokan String pada Aplikasi Pengarsipan Berbasis Web, Jurnal Informatika.. Pembuatan Aplikasi Untuk Mendeteksi Kebenaran Perintah SQL Query

pattern dan text yang ingin dicari adalah sebagai berikut.. Dilakukan dari kiri ke kanan sampai dengan semua karakter pattern cocok. Tidak terjadinyan kecocokan maka akan

Dari hasil dari tahap perancangan hingga tahap pengujian penelitian yang telah dilakukan pada aplikasi sosial DoCare yang berbasis android dengan menggunakan algoritma

Setelah tahap implementasi, dilakukan pengujian algoritma dengan cara membaca posisi string yang ditemukan berdasarkan kata yang dicari dan pengujian performa

Hasil yang dicapai dari penerapan algoritma brute force dapat melakukan pencocokan string dan memberikan hasil yang diinginkan dsesuai dengan data pencarian pada katalog

Untuk membandingkan kedua algoritma tersebut dibutuhkan analisa untuk menentukan algoritma mana yang lebih efektif dalam memunculkan Word Suggestion sehingga

Pattern akan digunakan sebagai string yang dicocokkan ke dalam teks Pada algoritma KMP, kita simpan informasi yang digunakan untuk melakukan pergeseran lebih jauh, tidak

Berikut ini merupakan pengujian menggunakan algoritma Boyer-Moore untuk kasus pattern yang tidak terdapat pada artikel.. Makalah IF2211 Strategi Algoritma, Semester