BAB II LANDASAN TEORI

dokumen-dokumen yang mirip
Penerapan String Matching pada Fitur Auto Correct dan Fitur Auto Text di Smart Phones

Penerapan Pencocokan String pada Aplikasi Kamusku Indonesia

Aplikasi String Matching Pada Fitur Auto-Correct dan Word-Suggestion

Jenis-jenis Search Engine

BAB I PENDAHULUAN Latar Belakang

Algoritma String Matching pada Mesin Pencarian

BAB 2 LANDASAN TEORI

Penerapan Pencocokan String dalam Aplikasi Duolingo

Perbandingan Algoritma String Matching yang Digunakan dalam Pencarian pada Search Engine

Penerapan Algoritma String Matching dalam Intelligent Personal Assistant Siri

BAB 2 LANDASAN TEORI

BAB 2 TINJAUAN PUSTAKA

Analisis Algoritma Knuth Morris Pratt dan Algoritma Boyer Moore dalam Proses Pencarian String

A. Pencocokan String Pencocokan string adalah cara untuk mencari sebuah teks

Perbandingan Algoritma Knuth-Morris-Pratt dan Algoritma Boyer-Moore dalam Pencarian Teks di Bahasa Indonesia dan Inggris

APLIKASI ALGORITMA KNUTH-MORRIS-PRATT PADA MESIN PENCARI KATA UNTUK LINGKUNGAN WEBSITE MAHASISWA INFORMATIKA 2005

Aplikasi String Matching pada Plugin SMS Blocker untuk Validasi Pesan

IMPLEMENTASI ALGORITMA BRUTE FORCE DALAM PENCARIAN DATA KATALOG BUKU PERPUSTAKAAN

Analisis Plagiarisme dalam Dua Buah Lagu Yang Berbeda dengan Algoritma Pattern Matching

Mesin Pencari Web. Ayub Firmansyah Hutabarat. Abstrak. Pendahuluan.

BAB 2 LANDASAN TEORI

Penerapan Algoritma Knuth Morris Pratt dalam Aplikasi Penerjemah Teks

ANALISA PERBANDINGAN ALGORITMA BRUTE FORCE DAN BOYER MOORE DALAM PENCARIAN WORD SUGGESTION MENGGUNAKAN METODE PERBANDINGAN EKSPONENSIAL


Kombinasi Algoritma Pattern Matching dan BFS-DFS pada aplikasi Music Discovery

ANALISIS STRING MATCHING PADA JUDUL SKRIPSI DENGAN ALGORITMA KNUTH-MORRIS PRATT (KMP)

Penggunaan Algoritma Knuth-Morris-Pratt untuk Pengecekan Ejaan

PERBANDINGAN ALGORITMA KNUTH MORRIS PRATT DAN BOYER MOORE PADA HUMAN RESOURCE INFORMATION SYSTEM DI B.A.S LPKIA

Artikel Ilmiah. Peneliti: Ditya Geraldy ( ) Prof. Dr. Ir. Eko Sediyono, M.Kom. Yos Richard Beeh., S.T., M.Cs.

BAB I PENDAHULUAN I.1. Latar Belakang [1] [2] [3] [4] [5]

BAB I PENDAHULUAN 1.1. Latar Belakang

BAB 1 PENDAHULUAN Latar Belakang

BAB 1 PENDAHULUAN. 1.1 Latar Belakang

BAB IV IMPLEMENTASI DAN PENGUJIAN

BAB 2 LANDASAN TEORI

Penerapan Algoritma Pencocokan String Boyer-Moore untuk Keamanan Komputer

BAB 2 LANDASAN TEORI

BAB 1 PENDAHULUAN. Universitas Sumatera Utara

PENGGUNAAN ALGORITMA APOSTOLICO-CROCHEMORE PADA PROSES PENCARIAN STRING DI DALAM TEKS

Perbandingan Penggunaan Algoritma BM dan Algoritma Horspool pada Pencarian String dalam Bahasa Medis

TECHNICAL REPORT PENGGUNAAN ALGORITMA PENCOCOKAN STRING BOYER-MOORE DALAM MENDETEKSI PENGAKSESAN SITUS INTERNET TERLARANG

PERANCANGAN APLIKASI TEXT EDITOR DENGAN MENERAPKAN ALGORITMA KNUTH-MORRIS-PRATT

BAB 2 LANDASAN TEORI

BAB I PENDAHULUAN. Diantara banyak fungsi komputer yang digunakan oleh manusia adalah. pencarian data serta pengurutan data (Handoyo, 2004).

BAB I PENDAHULUAN. Kemajuan teknologi internet dan e-business belakangan ini telah

BAB 1 PENDAHULUAN Latar Belakang

PENERAPAN STRING MATCHING DENGAN ALGORITMA BOYER MOORE PADA APLIKASI FONT ITALIC UNTUK DETEKSI KATA ASING

BAB I PENDAHULUAN. tanpa aturan-aturan yang baku. Sedangkan dalam pemasaran konvensional, barang

Perbandingan dan Pengujian Beberapa Algoritma Pencocokan String

BAB 2 LANDASAN TEORI

Implementasi Algoritma KMP dan Boyer-Moore dalam Aplikasi Search Engine Sederhana

BAB 2 LANDASAN TEORI

BAB 2 LANDASAN TEORI

Aplikasi Algoritma Pencocokan String pada Mesin Pencari Berita

Aplikasi Algoritma String Matching dan Regex untuk Validasi Formulir

Analisis Perbandingan Performansi Algoritma Zhu-Takaoka dan Algoritma Karp-Rabin Pada Pencarian Kata Di Rumah Baca Buku Sunda

BAB 2 TINJAUAN PUSTAKA

APLIKASI PATTERN MATCHING UNTUK VALIDASI PESAN PADA GAME ONLINE DAN SOCIAL NETWORK

JSIKA Vol. 4, No. 1. Tahun 2015 ISSN X

Penggunaan Algoritma Boyer Moore Untuk Pencarian Arsip Multimedia Pada Perangkat Lunak Pemutar Media

IMPLEMENTASI ALGORITMA BOYER-MOORE PADA PERMAINAN WORD SEARCH PUZZLE

String Matching Dalam Permainan The Hunt for Gollum

IMPLEMENTASI ALGORITMA KNUTH MORRIS PRATT PADA APLIKASI PENERJEMAHAN BAHASA MANDAILING-INDONESIA

Pencocokan String dengan Algoritma Reverse Colussi

Pemanfaatan Algortima Boyer Moore dalam Penyaringan Teks Halaman Website Sederhana

PERBANDINGAN ALGORITMA STRING SEARCHING BRUTE FORCE, KNUTH MORRIS PRATT, BOYER MOORE, DAN KARP RABIN PADA TEKS ALKITAB BAHASA INDONESIA

BAB 2 LANDASAN TEORI

Penerapan Algoritma Pencocokan String dalam Perangkat Lunak Pemblokir Akses Situs Negatif

Pattern Matching dalam Aplikasi Pencarian Jodoh

Aplikasi Algoritma BFS dan String Matching pada Tag Suggestions di Facebook

Pengaplikasian Algoritma Knuth-Morris-Pratt dalam Teknik Kompresi Data

Pattern Matching dalam Aplikasi SimSimi

Implementasi Algoritma Knuth Morris Pratt pada Alat Penerjemah Suara

Volume VI No 1, Juni 2017 pissn : eissn : X. Tersedia online di

Fauzan Azmi Apa itu Search Engine. Cara Kerja Search Engine. Lisensi Dokumen:

Visualisasi Beberapa Algoritma Pencocokan String Dengan Java

BAB 1 PENDAHULUAN. 1.1.Latar Belakang

BAB 3 ANALISIS DAN PERANCANGAN SISTEM

APLIKASI PENENTUAN JENIS PART OF SPEECH MENGGUNAKAN METODE N-GRAM DAN STRING MATCHING

Penerapan Algoritma Knuth-Morris-Pratt dalam Music Identification (Musipedia)

Deteksi Plagiarisme Gambar menggunakan Algoritma Pencocokan Pola Rabin-Karp

EFISIENSI PENGGUNAAN ALGORITMA BOYER MOORE UNTUK PREDIKSI PERILAKU ORANG MELALUI INTERAKSI DI TWITTER

BAB I PENDAHULUAN Latar Belakang

Pencarian Potongan Gambar Menggunakan Algoritma Boyer Moore

BAB 2 LANDASAN TEORI

Aplikasi Algoritma Pencarian String Dalam Sistem Pembayaran Parkir

Aplikasi Pencarian Data Produk Herbal Menggunakan Algoritma Boyer-Moore

Mencari Pola dalam Gambar dengan Algoritma Pattern Matching

Implementasi Algoritma Boyer-Moore pada Aplikasi Kamus Kedokteran Berbasis Android

BAB 2 LANDASAN TEORI

BAB II TINJAUAN PUSTAKA

Algoritma Pencarian String Knuth-Morris-Pratt Dalam Pengenalan Tulisan Tangan

Penggunaan Algoritma Pencocokkan Pola pada Sistem Barcode

Penerapan Algoritma Transversal pada Graf dan Algoritma Pencocokan String dalam Sistem Jual-Beli Tiket Bioskop

IMPLEMENTASI METODE STRING MATCHING UNTUK APLIKASI PENGARSIPAN DOKUMEN (STUDI KASUS : SMPN 3 SUMBER KAB. CIREBON)

Pencarian File Teks Berbasis Content dengan Pencocokan String Menggunakan Algoritma Brute force

APLIKASI ALGORITMA PENCOCOKAN STRING KNUTH-MORRIS-PRATT (KPM) DALAM PENGENALAN SIDIK JARI

Transkripsi:

7 BAB II LANDASAN TEORI 1.8. Quer Quer adalah satu atau beberapa kata atau frase / kalimat ang di masukan / di ketikan oleh pengguna saat melakukan pencarian pada search engine (google atau search engine lainna). 1.9. Search Engine Mesin pencari (search engine) adalah salah satu program komputer ang di rancang khusus untuk membantu seseorang menemukan file-file ang disimpan dalam komputer, misalna dalam sebuah web server umum di web (www) atau komputer sendiri (Supriadi, Eko. 2009). Mesin pencari memungkinkan kita untuk meminta content media dengan kriteria ang spesifik ( biasana berisikan frase atau kata ang kita inginkan) dan memperoleh daftar file ang memenuhi kriteria tersebut. Mesin pencari biasana menggunakan indeks ( ang sudah di buat sebelumna dan di mutakhirkan secara teratur ) untuk mencari file setelah pengguna memasukan kriteria pencarian. Mesin pencari ang akan saa bahas adalah mesin pencari khusus ang di gunakan untuk mencari informasi dan berbagai file di Internet, sehingga mesin pencari sangat berguna bagi para penggunana untuk mencari berbagai bahan referensi atau lainna. Untuk memudahkan pencarian di database ang begitu besar, mesin pencari menggunakan indeks untuk memilah-milah informasi ang ada di database. Sedangkan untuk memudahkan dan mempercepat pencarian, mesin pencari mempunai metode pencarian tertentu ang sering di sebut algoritma pencarian,

8 kecepatan dan ketepatan pencarian sebuah mesin pencarian tergantung kepada cara pengindeksan dan algoritma pencarian ang digunakan. Adapun struktur umum sebuah mesin pencari adalah sebagai berikut : 1. Kotak teks pencari Kotak ini digunakan sebagai tempat memasukan kata kunci ang akan dijadikan acuan dilakukan pencarian. 2. Tombol pencari Tombol ini ang 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 aitu : 1. Human Organized Search Engine Mesin pencari ang di kelola sepenuhna oleh tangan manusia. Mesin pencari ini menggunakan metode dengan memilah-milih informasi ang relevan dan dikelompokan sedemikian rupa sehingga lebih bermakna dan bermanfaaat bagi penggunanna. Situs ini dalam praktekna memperkerjakan para pakar dalam bidang-bidang tertentu, kemudian para pakar tersebut dapat mengkelompokan situs-situs tertentu sesuai dengan bidangnna atau kategori situs itu sendiri. 2. Computer Created Search Engine Search engine kategori ini banak memiliki kelebihan karena banak menajikan informasi walaupun kadang-kadang ada beberapa informasi ang tida relevan tidak seperti ang kita ingin kan. Search engine ini telah menggunakan software laba-laba atau spider software ang berfungsi menusup pada situs-situs tertentu, kemudian mengunpulkan data serta mengelompokan dengan sedikit bantuan tangan manusia.

9 3. Hbrid Seacrh Engine Merupakan gabungan antara tangan manusia dengan komputer, sehingga menghasilkan hasil pencarian ang relatif akurat. Peran manusia dalam hal ini adalah sebagai penelaah dalam proses pengkoleksian database halaman web. Sebenarna tipe ini lah anag paling mudah pembuatanna karena dapat di desain sesuai dengan keinginan kita. 4. MetaCrawler / Meta Search Merupakan perantara dari mesin pencari ang sebenarna. Mesin ini hana akan mengirimkan permintaan pencarian ke berbagai mesin pencari serta menampilkan hasilna satu di laer browser sehingga akan menampilkan banak sekali hasil dari berbagai mesin pencari ang ada. 2.2.2. Cara Kerja Mesin Pencari (Search Engine) Mesin pencari web bekerja dengan cara menimpan informasi tertang banak halaman web, ang diambil secara langsung dari www. Halaman ini di ambil dengan web crawler-browser, web ang otomatis mengikuti setiap pranala ang di lihatna. Isi setiap halaman lalu dianalisis untuk menentukan cara mengindeksna (misalna katakata di ambil dari judul, subjudul, atau field khusus ang di sebut meta tag ). Data tentang halaman web disimpan dalam sebuah database indeks untuk di gunakan dalam pencarian selanjutna. Sebagian mesin pencari seperti Google, menimpan seluruh atau sebagian halaman sumber ( ang di sebut cache) maupun informasi tentang halaman web itu sendiri. Ketika seorang pengguna menggunakan mesin pencari dan memasukin quer, biasana dengan memasukan kata kunci, mesin mencari akan meng-indesk dan memberikan daftar halaman web ang paling sesuai dengan kriteriana. Daftar ini biasana di sertai ringkasan singkat menggenai judul dokumen dan terkadang sebagian teks dari hasil pencarian ang kita cari.

10 2.3. Word Suggestion Word suggestion merupakan kata berbahasa inggris ang berarti Sugesti Kata. Jika kita uraikan menurut Kamus Umum Bahasa Indonesia, Kata berarti unsur bahasa g diucapkan atau dituliskan g merupakan perwujudan kesatuan perasaan dan pikiran g dapat digunakan dalam berbahasa, sedangkan Sugesti adalah pendapat g dikemukakan (untuk dipertimbangkan); anjuran; saran; (2) pengaruh g dapat menggerakkan hati orang ; dorongan. (KBBI Online, 2015) Word suggestion merupakan fungsi dari Aplikasi Auto Tet ang digunakan untuk memberikan saran terhadap kata ang akan diketik atau dicari. Dengan mengetikkan beberapa huruf atau seluruh huruf maka sistem akan mencari ke dalam database apakah ada sebuah kata ang memenuhi kriteria dari huruf-huruf ang dimasukkan. Jika setelah dicek dan ternata di dalam database ada, maka akan muncul list ang menunjukkan sugesti kata ang ada. Pengecekan itu sendiri berdasarkan dari kecocokan huruf dari kata ang dimasukkan user dengan list katakata ang 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 ang akan dicari, Misalna informasi ang akan dicari User adalah Pla dalam sebuah database kamus, maka setiap User melakukan input, word suggestion mencocokan teks input dengan database informasi ang akan dicari. b. Jika User meng-input karakter P, maka word suggestion akan menampilkan beberapa data ang cocok dengan database kamus, misalna Pla, Pool, Pluto, dan Plan. Biasana word suggestion membatasi jumlah opsi ang akan ditampilkan. c. Dengan adana word suggestion User bisa dengan mudah menemukan kata Pla dengan cepat. (Pradhana, F. 2012)

11 2.4. Algoritma Istilah algoritma digunakan dalam ilmu komputer untuk menggambarkan metode pemecahan masalah ang terbatas, deterministik, dan efektif ang cocok untuk implementasi sebagai program komputer (Sedgewick et al, 2011). Algoritma ang akan di implementasikan pada penelitian ini adalah algoritma String Matching aitu algoritma Brute Force dan algoritma Knuth-Morris-Pratt (KMP). Hal ini dikarenakan menurut banak peneliti komputer menganggap bahwa String matching adalah pencarian sebuah pattern pada sebuah teks. Menurut Munir (2004) algoritma string matching adalah algoritma ang 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 ang sudah ada. String matching digunakan untuk menemukan satu atau lebih string ang disebut dengan pattern (string ang akan dicocokkan ke dalam tet) dalam string ang disebut dengan tet (string ang diinput) (Charras & Lecroq, 2004). Menurut Singla dan Garg (2012), ada dua teknik utama dalam algoritma string matching aitu eact matching dimana hasil pencocokanna mengandung string ang sama persis dengan string ang di-input, contohna pada algoritma Needleman Wunsch, algoritma Smith Waterman, algoritma Knuth-Morris-Pratt, algoritma Boer- Moore-Horspool dan approimate matching dimana hasil pencocokanna mengandung string ang tidak harus persis dengan string ang di-input, contohna pada algoritma Fuzz String Searching, algoritma Rabin Karp, algoritma Brute Force. 2.4.2. Klasifikasi Algoritma Pencocokan String (String Matching) Menurut Christian Charras dan Thierr Lecroq (2004:12-14) ang diterjemahkan oleh Serupa Creative Commons ang dilansir dari situs Wikipedia (2013) tentang Algoritma Pencocokan String, Algoritma pencocokkan string dapat diklasifikasikan menjadi tiga bagian menurut arah pencarianna, aitu : a. Dari arah ang paling alami, dari kiri ke kanan, ang merupakan arah untuk membaca, algoritma ang termasuk kategori ini adalah:

12 1. Algoritma Brute Force 2. Algoritma dari Morris dan Pratt, ang kemudian dikembangkan oleh Knuth, Morris, dan Pratt. b. Dari kanan ke kiri, arah ang biasana menghasilkan hasil terbaik secara praktikal, contohna adalah Algoritma dari Boer dan Moore, ang kemudian banak dikembangkan, menjadi algoritma turbo Boer Moore, Algoritma Tuned Boer Moore, dan algoritma Zhu-Takaoka. c. Dan kategori terakhir, dari arah ang ditentukan secara spesifik oleh algoritma tersebut, arah ini menghasilkan hasil terbaik secara teoritis, algoritma ang termasuk kategori aitu 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 tet 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 seterusna). Algoritma Brute Force tidak memerlukan tahap praproses. Selama tahap pencarian, pembadingan karakter pada tet dapat selesai pada posisi manapun. Berikut merupakan coding algoritma Brute Force dalam bahasa C. void BF (char *, int m, char *, int n) { int i, j; } /* Searching */ for (j = 0; j <= n m) { for (i = 0; i < m && [i] == [i + j]; ++i); if (i >= m) OUTPUT(j); }

13 Pada algoritma Brute Force, diberikan sebagai tet dan sebagai pattern. Maka dilakukanlah proses pencocokan pattern pada tet-na. Untuk tahap pencocokan pertama, dilakukan pencocokan terhadap tet sepanjang karakter dari pattern. Apabila match karakter pertama pada tet dan karakter pertama pada pattern, maka dimulailah proses pencocokan pertama. Pada pencocokan pertama ini, dilakukanlah pencocokan pada karakter kedua untuk masing-masing tet dan pattern. Apabila ditemukan match pada pencocokan ini, maka lakukanlah pencocokan untuk karakter-karakter selanjutna. 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 tet dan karakter pertama pada pattern awal pada tahap sebelumna. Jika ditemukan match pada pencocokan ini, maka dimulailah proses pencocokan kedua. Selanjutna lakukan pencocokan pada karakter ketiga pada tet dan karakter kedua pada pattern. Apabila match, lanjutkan ke karakter-karakter berikutna dan apabila mismatch, lakukan tahap pencocokan ketiga. Untuk memulai tahap pencocokan ketiga, berpindahlah satu karakter ke arah kanan terhadap tet. Tahap demi tahap dilakukan pada proses pencocokan hingga ditemukan match pada tet ang karakterna sama panjang terhadap karakter pada pattern. Proses berakhir saat karakter terakhir pada tet telah dilakukan pencocokan ditemukan atau tidakna pattern pada tet. Sebagai contoh, diberikan sejumlah karakter sebagai tet = GCATCGCAGAGAGTATACAGTACG dan ang akan dicocokkan adalah pattern = GCAGAGAG sebagaimana dikutip pada Carras dan Lecroq (2004). Gambar 2.1 dan gambar 2.2 berikut akan menggambarkan proses pencocokan ang telah dijelaskan sebelumna pada algoritma Brute Force dimana merupakan tet dan merupakan pattern. Setelah dilakukan tahap pencocokan sepanjang karakter pada pattern, proses shift dilakukan dengan berpindah tepat satu karakter ke arah kanan terhadap tet.

14 Gambar 2.1 Ilustrasi tahap pencarian algoritma brute force

15 Gambar 2.2 Ilustrasi tahap pencarian algoritma brute force (lanjutan)

16 Menurut Fandi Pradhana (2012) pseudocode pada Algoritma Brute Force adalah sebagai berikut : Public static int BruteForce (string tet, string pattern) { Int n = tet.length(); //cari panjangna tet Int m = pattern.length(); //cari panjangna pattern Int j; For (int i = 0; i <= (n-m); i++) { J = 0; While ((j< m) && (tet.charat(i+j) == pattern.charat(j))) J++; If(j == m) Return i; //kecocokan ditemukan di i } } Return -1; //tidak ada ang 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 tet 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 ang sering digunakan untuk menelesaikan masalah pencocokan string. Algoritma ini adalah penempurnaan dari algoritma pencocokan string dengan menggunakan algoritma brute force. Pada algoritma brute force, setiap kali ditemukan ketidak cocokan pattern dengan teks, maka pattern akan digeser satu ke kanan. Sedangkan pada algoritma Knuth-Morris-Pratt, kita memelihara informasi ang digunakan untuk melakukan jumlah pergeseran. Algoritma menggunakan informasi tersebut untuk membuat pergeseran angka lebih jauh, tidak hana satu karakter seperti pada algoritma brute force. Dengan algoritma Knuth Morris Pratt ini, waktu pencarian dapat dikurangi

17 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 ang digunakan saat melakukan pergeseran. Informasi ini digunakan untuk melakukan pergeseran ang lebih jauh, tidak seperti brute force ang melakukan pergeseran perkarakter. Pergeseran dilakukan berdasarkan suffi kesamaan suffi dan prefi dalam pattern dan ang ditemukan di dalam teks. Secara sistematis, langkah-langkah ang 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 ang bersesuaian, sampai salah satu kondisi berikut dipenuhi: 1. Karakter di pattern dan di teks ang 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. Pencocokan karakter dari kiri ke kanan mencari prefi terpanjang dari P[0..j-1] ang juga merupakan suffi dari P [1..j-1], untuk menghindari pergeseran ang tidak perlu. Hasil dari pencarian prefi terpanjang disimpan dalam tabel ang disebut juga sebagai failure function. Misalkan panjang string ang telah diperiksa dan cocok = n dan nilai dari failure function adalah M, maka dilakukan pergeseran sebanak (n-m).

18 Gambar 2.3 dan gambar 2.4 berikut akan menggambarkan proses pencocokan ang telah dijelaskan sebelumna pada algoritma Knuth-Morris-Pratt dikutip Carras dan Lecroq (2004), dimana merupakan tet dan merupakan pattern. Setelah dilakukan tahap pencocokan sepanjang karakter pada pattern, proses shift dilakukan dengan berpindah tidak hana satu karakter seperti pada algoritma brute, pada algoritma Knuth-Morris-Pratt, algoritma ini dapat memelihara informasi ang digunakan untuk melakukan jumlah pergeseran. Gambar 2.3 Ilustrasi tahap pencarian algoritma Knuth-Morris-Pratt

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

20 Menurut Fandi Pradhana (2012) berikut merupakan pseudocode pada algoritma Knuth-Morris-Pratt : public static int kmpmatch (string tet, string pattern) { Int n = tet.length(); Int m = pattern.length(); Int fail[] = computefail (pattern); Int i = 0 ; Int j = 0 ; While (i < n) { If (pattern.charat(j) == tet.charat(i)) { i++; j++; Return i - m + 1; //match } else if (j > 0) { J = fail[j-i]; } else { i++; } } Return -1; // no match } // end of kmpmatch() Pada fungi KMP panjang teks di masukkan ke dalam variabel n, panjang pattern dimasukkan ke variabel m, i=0 dan j=0, jika i lebih kecil dari pada n jika pattern pada karakter j sama dengan teks pada posisi i jika cocok.. i + 1, j+1 (j > 0 ) maka i m + 1 (match). Jika tidak sama maka j menimpan (j-i) sebagai failure Function dan i+1. jika j tidak sama dengan i dan j tidak lebih besar daripada 0 maka dikembalikan -1 (no macth).