BAB 2 LANDASAN TEORI

dokumen-dokumen yang mirip
BAB 2 LANDASAN TEORI

BAB 2 LANDASAN TEORI

BAB 2 LANDASAN TEORI

BAB III ANALISIS KOMPLEKSITAS ALGORITMA

BAB 2 LANDASAN TEORI

BAB 2 LANDASAN TEORI

BAB 2 TINJAUAN PUSTAKA

BAB 2 TINJAUAN PUSTAKA

Visualisasi Beberapa Algoritma Pencocokan String Dengan Java

BAB 2 LANDASAN TEORI

BAB II LANDASAN TEORI

BAB I PENDAHULUAN Latar Belakang

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

BAB 2 LANDASAN TEORI

BAB 1 PENDAHULUAN. Universitas Sumatera Utara

BAB 2 LANDASAN TEORI

Penerapan Algoritma Pencocokan String Boyer-Moore untuk Keamanan Komputer

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

BAB II TINJAUAN PUSTAKA

BAB 2 LANDASAN TEORI

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

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

BAB II LANDASAN TEORI

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

BAB II TINJAUAN PUSTAKA

IMPLEMENTASI ALGORITMA BRUTE FORCE DALAM PENCARIAN DATA KATALOG BUKU PERPUSTAKAAN

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

BAB I PENDAHULUAN. bentuk utama penyimpanan data (Purwoko, 2006). 2006). Karena itu lah pencarian string merupakan salah satu hal yang sangat

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

BAB 2 LANDASAN TEORI

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

Team project 2017 Dony Pratidana S. Hum Bima Agus Setyawan S. IIP

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

BAB I PENDAHULUAN Latar Belakang

BAB II LANDASAN TEORI

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

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

BAB 2 LANDASAN TEORI

APLIKASI PENERJEMAH KALIMAT BAHASA INDONESIA KE BAHASA SIMALUNGUN DENGAN ALGORITMA BERRY - RAVINDRAN

BAB 1 PENDAHULUAN. 1.1.Latar Belakang

Studi Perbandingan Implementasi Algoritma Boyer-Moore, Turbo Boyer-Moore, dan Tuned Boyer-Moore dalam Pencarian String

PERBANDINGAN ALGORITMA KNUTH-MORRIS-PRATT, STRING MATCHING ON ORDERED ALPHABET, dan BOYER-MOORE dalam PENCARIAN UNTAI DNA

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

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

ALGORITMA PENCARIAN STRING DENGAN ALGORITMA BRUTE FORCE, KNUTH-MORRIS-PRATT DAN ALGORITMA DUA ARAH

BAB 2 LANDASAN TEORI

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

BAB 1 PENDAHULUAN. 1.1 Latar Belakang

BAB I PENDAHULUAN 1.1. Latar Belakang

BAB 2 LANDASAN TEORI

Aplikasi String Matching pada Plugin SMS Blocker untuk Validasi Pesan

BAB I PENDAHULUAN. 1.1Latar Belakang

Mencari Pola dalam Gambar dengan Algoritma Pattern Matching

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

BAB II TINJAUAN PUSTAKA

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

Aplikasi Algoritma BFS dan String Matching pada Tag Suggestions di Facebook

Perbandingan dan Pengujian Beberapa Algoritma Pencocokan String

Penerapan Algoritma Pattern Matching untuk Mengidentifikasi Musik Monophonic

BAB 2 LANDASAN TEORI

BAB 2 TINJAUAN PUSTAKA

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

PERBANDINGAN ALGORITMA KNUTH-MORRIS-PRATT DAN APOSTOLICO-CROCHEMOE PADA APLIKASI KAMUS BAHASA INDONESIA - BELANDA SKRIPSI

BAB 2 LANDASAN TEORI

Penerapan Pencocokan String pada Aplikasi Kamusku Indonesia

Aplikasi Algoritma String Matching dan Regex untuk Validasi Formulir

PENCOCOKAN DNA NR_ DAN DNA DI MENGGUNAKAN ALGORITMA BOYER MOORE

Modifikasi String dan Pattern untuk Mempercepat Pencocokan Rantai Asam Amino pada Rantai DNA

BAB 1 PENDAHULUAN Latar Belakang


Penggunaan String Matching Dalam Mencari Kata Dalam Permainan Mencari Kata Dari Sebuah Matriks Huruf

Penggunaan Algoritma Knuth-Morris-Pratt untuk Pengecekan Ejaan

Aplikasi String Matching dalam Analisis Cap Bibir

Penerapan Pencocokan String dalam Aplikasi Duolingo

Analisis Algoritma Bubble Sort

Pattern Matching dalam Aplikasi SimSimi

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

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

Aplikasi Algoritma Pencocokan String pada Mesin Pencari Berita

ANALISIS PERBANDINGAN ALGORITMA BOYER-MOORE, KNUTH- MORRIS-PRATT, DAN RABIN-KARP MENGGUNAKAN METODE PERBANDINGAN EKSPONENSIAL

BAB 3 ANALISIS DAN PERANCANGAN SISTEM

BAB 1 PENDAHULUAN Latar Belakang

Pengembangan Algoritma Boyer Moore

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

Deteksi Plagiarisme Gambar menggunakan Algoritma Pencocokan Pola Rabin-Karp

PENGKAJIAN DAN ANALISIS TIGA ALGORITMA EFISIEN RABIN-KARP, KNUTH-MORRIS-PRATT,

II. DASAR TEORI I. PENDAHULUAN

Pencocokan String dengan Algoritma Reverse Colussi

BAB II TINJAUAN PUSTAKA. Kriptografi adalah ilmu sekaligus seni untuk menjaga keamanan pesan (message).

Implementasi Algoritma Knuth Morris Pratt pada Alat Penerjemah Suara

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

BAB II TINJAUAN PUSTAKA. Kriptografi (cryptography) berasal dari Bahasa Yunani: cryptós artinya

Aplikasi Algoritma Pencarian String Dalam Sistem Pembayaran Parkir

Penerapan Algoritma Pencocokan String dalam Perangkat Lunak Pemblokir Akses Situs Negatif

BAB 2 LANDASAN TEORI

BAB 1 PENDAHULUAN 1.1 Latar Belakang Masalah

Perbandingan Algoritma String Matching yang Digunakan dalam Pencarian pada Search Engine

Aplikasi Pencarian Data Produk Herbal Menggunakan Algoritma Boyer-Moore

Efektifitas Algoritma Knuth-Morris-Pratt dan Algoritma Boyer- Moore Dalam Pencarian Word Suggestion Menggunakan Metode Perbandingan Eksponensial

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

Transkripsi:

6 BAB 2 LANDASAN TEORI 2. Information Retrieval Information Retrieval atau sering disebut temu kembali infromasi adalah suatu sistem yang mampu melakukan penyimpanan, pencarian, dan pemeliharaan informasi. Informatian retrieval merupakan ilmu yang mempelajari prosedur-prosedur dan metode-metode untuk menemukan kembali informasi yang tersimpan dari berbagai sumber yang relevan atau koleksi sumber informasi yang dicari atau dibutuhkan. Dengan tindakan index panggilan (searching), pemanggilan data kembali. (Kowalski, G. 997) Dalam pencarian data, beberapa jenis data dapat ditemukan diantaranya texts, table, image, video, audio. Adapun tujuan dari Infromation Retrieval ialah untuk memenuhi informasi pengguna dengan cara meretrieve dokumen yang relevan atau menguragi dokumen pencarian yang tidak relevan. (Kowalski, G. 997) Information Retrieval memiliki kegunaan yang banyak untuk user. Kita bisa melihat fungsinya di mesin pencari untuk mencari informasi, atau di perpustakaan, di apotik dan lain sebagainya. Itu semua adalah karena jasa Information Retrieval. Information Retrieval mempunyai peran untuk: ) Menganalisis isi sumber informasi dan pertanyaan pengguna. 2) Mempertemukan pertanyaan pengguna dengan sumber informasi untuk mendapatkan dokumen yang relevan. 2.2 String Matching String matching adalah pencarian sebuah pattern pada sebuah teks (Cormen, T.H. et al. 994). String matching digunakan untuk menemukan suatu string yang disebut dengan pattern dalam string yang disebut dengan teks (Charras, C. & Lecroq, T. 997). Prinsip kerja algoritma string matching (Effendi, D. et al. 203) adalah sebagai berikut:

7 ) Memindai teks dengan bantuan sebuah window yang ukurannya sama dengan panjang pattern. 2) Menempatkan window pada awal teks. 3) Membandingkan karakter pada window dengan karakter dari pattern. Setelah pencocokan (baik hasilnya cocok atau tidak cocok) dilakukan pergeseran ke kanan pada window. Prosedur ini dilakukan berulang-ulang sampai window berada pada akhir teks. Mekanisme ini disebut mekanisme sliding window. Algoritma string matching mempunyai tiga komponen utama (Effendi, D. et al. 203), yaitu: ) Pattern, yaitu deretan karakter yang akan dicocokkan dengan teks, dinyatakan dengan, panjang pattern dinyatakan dengan. 2) Teks, yaitu tempat pencocokan pattern dilakukan. Dinyatakan dengan, panjang teks dinyatakan dengan. 3) Alfabet, berisi semua simbol yang digunakan oleh bahasa pada teks dan pattern, dinyatakan dengan dengan ukuran dinyatakan ASIZE. 2.3 Cara Kerja String Matching Pattern adalah solusi umum yang dapat digunakan kembali pada permasalahan umum yang sering terjadi pada software design. Design pattern bukan desain final yang dapat ditransformasikan secara langsung kedalam kode. Ini hanyalah deskripsi atau template untuk mengetahui bagaimana menyelesaikan permasalahan yang dapat digunakan pada berbagai macam situasi yang berbeda. Cara yang jelas untuk mencari pattern yang cocok dengan teks adalah dengan mencoba mencari di setiap posisi awal dari teks dan mengabaikan pencarian secepat mungkin jika karakter yang salah ditemukan (Knuth, D.E. et al. 977). Proses pertama adalah menyelaraskan bagian paling kiri dari pattern dengan teks. Kemudian dibandingkan karakter yang sesuai dari teks dan pattern. Setelah seluruhnya cocok maupun tidak cocok dari pattern, window digeser ke kanan sampai posisi pada teks. Menurut Singh, R. & Verma, H.N. (20), efisiensi dari algoritma terletak pada dua tahap: ) Tahap praproses, tahap ini mengumpulkan informasi penuh tentang pattern dan menggunakan informasi ini pada tahap pencarian.

8 2) Tahap pencarian, pattern dibandingkan dengan window dari kanan ke kiri atau kiri ke kanan sampai kecocokan atau ketidakcocokan terjadi. 2.4 Klasifikasi Algoritma String Matching Algoritma string matching dapat diklasifikasikan menjadi tiga bagian menurut arah pencariannya (Charras, C. & Lecroq, T. 997), yaitu: ) Dari kiri ke kanan (left to right), algoritma yang termasuk dalam kategori ini adalah algoritma Brute Force, algoritma Morris dan Pratt yang kemudian dikembangkan menjadi algoritma Knuth-Morris-Pratt. 2) Dari kanan ke kiri (right to left) yang biasanya menghasilkan hasil terbaik secara partikal. Contoh algoritma ini adalah algoritma Boyer-Moore, yang kemudian banyak dikembangkan menjadi algoritma Tuned Boyer-Moore, algoritma Turbo Boyer-Moore, algoritma Zhu Takaoka dan algoritma Horspool. 3) Dari arah yang ditentukan secara spesifik oleh algoritma tersebut (in a spesific order), arah ini menghasilkan hasil terbaik secara teoritis. Algoritma yang termasuk kategori ini adalah algoritma Colussi dan algoritma Chrocemorre- Perrin. 2.5 Teknik Algoritma String Matching Menurut Singla, N. & Garg, D. (202), ada dua teknik utama dalam algoritma string matching, yaitu: ) Exact string matching Exact string matching, merupakan pencocokan string secara tepat dengan susunan karakter dalam string yang dicocokkan memiliki jumlah maupun urutan karakter dalam string yang sama. Beberapa algoritma exact string matching antara lain: a. Knuth-Morris-Pratt, metode ini mencari kehadiran sebuah kata dalam teks dengan melakukan observasi awal (preprocessing) dengan cara mengecek ulang kata sebelumnya. Algoritma ini melakukan pencocokan dari kiri ke kanan. b. Boyer-Moore, algoritma Boyer-Moore adalah algoritma string matching yang paling efisien dibandingkan algoritma string matching lainnya. Sebelum melakukan pencarian string, algoritma melakukan proses terlebih dahulu pada pattern, bukan pada string pada teks tempat pencarian. Algoritma ini melakukan

9 pencocokan karakter yang dimulai dari kanan ke kiri. Karena sifatnya yang sangat efisien, Boyer-Moore memiliki banyak variasi penyederhanaannya. Salah satunya adalah algoritma Horspool yang akan digunakan dalam penelitian ini dan akan dijelaskan pada poin berikutnya. 2) Approximate string matching atau Fuzzy string matching Fuzzy string matching merupakan pencocokan string secara samar, maksudnya pencocokan string dimana string yang dicocokkan memiliki kemiripan memiliki susunan karakter yang berbeda (mungkin jumlah atau urutannya), tetapi string tersebut memiliki kemiripan baik kemiripan tekstual/penulisan (approximate string matching) atau kemiripan ucapan (phonetic string matching). 2.6 Algoritma Not So Naive Algoritma Not So Naive pertama kali dipublikasikan oleh Christophe Hancart tahun 992. Algoritma Not So Naive merupakan variasi turunan dari algoritma Naive atau yang sering disebut algoritma Brute Force. Cara kerja algoritma ini adalah dengan memiliki fase pencarian mengecek teks dan pola dari kiri ke kanan. Lalu, algoritma Not So Naive akan mengidentifikasi terlebih dahulu dua kasus yang dimana di setiap akhir fase pencocokan pergeseran dapat dilakukan sebanyak 2 posisi ke kanan, tidak seperti algoritma Naive yang dimana pergeseran tetaplah sebanyak posisi ke kanan. Kita asumsikan bahwa P[0] P[]. Jika P[0] = T[s] dan P[] = T[s+], maka di akhir fase pencocokan pergeseran s bisa dilakukan sebanyak 2 posisi. Karena P[0] P[] = T[s+]. Dan jika P[0] = P[]. Jika P[0] = T[s] tapi P[] T[s+]. Maka sekali lagi pergeseran s dapat dilakukan sebanyak 2 posisi (Cantone & Faro,2004) dimana P adalah Pattern,T adalah Teks dan s adalah nilai posisi. Saat fase pencarian dari Algoritma Not So Naive perbandingan karakter dilakukan dengan posisi pola mengikuti urutan, 2,..., m-2, m-, 0 dimana m adalah panjang pattern. Di setiap percobaan dimana jendela diposisikan di teks faktor y[i..j+m-]. jika x[0] = x[] dan x[] y[ j+] atau jika x[0] x[] dan x[] = y[j+] polanya akan digeser sebanyak 2 posisi di setiap akhir percobaan dan sebanyak posisi jika kondisi di atas tidak terpenuhi (Alapati & Mannava, 20) dimana y adalah teks dan x adalah pattern. Berikut diberikan contoh untuk menunjukkan proses pencarian Algoritma Not So Naive dimana karakter urutan 0 dan karakter urutan pada pattern tidak

0 mengalami kesamaan (x[0]!= x[]) maka nilai variabel k akan diinisialisasi dengan nilai dan nilai variabel ell akan diinisialisasi dengan nilai 2 dimana kedua variabel tersebut akan digunakan untuk nilai pergeseran pada proses pencocokan. Contoh Teks : NURUL HASANAH HARAHAP Pattern : ARAH Tabel. Proses Pencocokan Algoritma Not So Naive Pada Percobaan Satu Pada Tabel. perbandingan karakter pertama (x[]!= y[j+]) sudah mengalami digeser sebanyak posisi sesuai dengan nilai variabel k. Tabel.2 Proses Pencocokan Algoritma Not So Naive Pada Percobaan Dua 2 Pada Tabel.2 perbandingan karakter pertama (x[]!= y[j+]) sudah mengalami digeser sebanyak 2 posisi sesuai dengan nilai variable ell. Tabel.3 Proses Pencocokan Algoritma Not So Naive Pada Percobaan Tiga Pada Tabel.3 perbandingan karakter pertama (x[]!= y[j+]) sudah mengalami digeser sebanyak posisi sesuai dengan nilai variabel k.

Tabel.4 Proses Pencocokan Algoritma Not So Naive Pada Percobaan Empat Pada Tabel.4 perbandingan karakter pertama (x[]!= y[j+]) sudah mengalami digeser sebanyak posisi sesuai dengan nilai variabel k. Tabel.5 Proses Pencocokan Algoritma Not So Naive Pada Percobaan Lima Pada Tabel.5, perbandingan karakter pertama (x[]!= y[j+]) sudah mengalami digeser sebanyak posisi sesuai dengan nilai variabel k. Tabel.6 Proses Pencocokan Algoritma Not So Naive Pada Percobaan Enam Pada Tabel.6 perbandingan karakter pertama (x[]!= y[j+]) sudah mengalami digeser sebanyak posisi sesuai dengan nilai variabel k. Tabel.7 Proses Pencocokan Algoritma Not So Naive Pada Percobaan Tujuh Pada Tabel.7 perbandingan karakter pertama (x[]!= y[j+]) sudah mengalami digeser sebanyak posisi sesuai dengan nilai variabel k.

2 Tabel.8 Proses Pencocokan Algoritma Not So Naive Pada Percobaan Delapan Pada Tabel.8 perbandingan karakter pertama (x[]!= y[j+]) sudah mengalami digeser sebanyak posisi sesuai dengan nilai variabel k. Tabel.9 Proses Pencocokan Algoritma Not So Naive Pada Percobaan Sembilan Pada Tabel.9 perbandingan karakter pertama (x[]!= y[j+]) sudah mengalami digeser sebanyak posisi sesuai dengan nilai variabel k. Tabel.0 Proses Pencocokan Algoritma Not So Naive Pada Percobaan Sepuluh Pada Tabel.0 perbandingan karakter pertama (x[]!= y[j+]) sudah mengalami digeser sebanyak posisi sesuai dengan nilai variabel k. Tabel. Proses Pencocokan Algoritma Not So Naive Pada Percobaan Sebelas Pada Tabel. perbandingan karakter pertama (x[]!= y[j+]) sudah mengalami digeser sebanyak posisi sesuai dengan nilai variabel k.

3 Tabel.2 Proses Pencocokan Algoritma Not So Naive Pada Percobaan Dua Belas Pada Tabel.2 perbandingan karakter pertama (x[]!= y[j+]) sudah mengalami digeser sebanyak posisi sesuai dengan nilai variabel k. Tabel.3 Proses Pencocokan Algoritma Not So Naive Pada Percobaan Tiga Belas Pada Tabel.3 perbandingan karakter pertama (x[]!= y[j+]) sudah mengalami digeser sebanyak posisi sesuai dengan nilai variabel k. Tabel.4 Proses Pencocokan Algoritma Not So Naive Pada Percobaan Empat Belas Pada Tabel.4 perbandingan karakter pertama (x[]!= y[j+]) sudah mengalami digeser sebanyak posisi sesuai dengan nilai variabel k. Tabel.5 Proses Pencocokan Algoritma Not So Naive Pada Percobaan Lima Belas 4 2 3

4 Pada Tabel.5 perbandingan karakter pertama (x[]!= y[j+]) sudah mengalami digeser sebanyak 2 posisi sesuai dengan nilai variabel ell. Tabel.6 Proses Pencocokan Algoritma Not So Naive Pada Percobaan Enam Belas Pada Tabel.6 perbandingan karakter pertama (x[]!= y[j+]) sudah mengalami digeser sebanyak posisi sesuai dengan nilai variabel k. Namun dikarenakan sisa Teks lebih kecil daripada pola maka fase pencarian berhenti disini. 2.7 Algoritma Two Way Algoritma Two Way Algorithm atau Algoritma Dua Arah dipublikasikan Maxime Crochemore dan Dominique Perrin pada tahun 99. Algoritma ini memfaktorkan pattern menjadi dua bagian patternkiri, dan patternkanan sehingga pattern=patternkiripatternkanan. Fase pencocokan pada algoritma ini terdiri dari dua bagian, pertama mencocokkan karakter patternkanan dari kiri ke kanan, lalu mencocokkan karakter patternkiri dari kanan ke kiri [CHA0]. Hal ini diilustrasikan pada Gambar 2. Fase inisialisasi pada algoritma ini menghitung faktorisasi yang baik dari pattern atas patternkiri dan patternkanan. Jika (u, v) merupakan sebuah faktorisasi dari pattern, maka sebuah pengulangan di (u, v) adalah sebuah kata w, sehingga dua persyaratan ini terpenuhi:. w adalah akhiran dari u atau u adalah akhiran dari w 2. w adalah awalan dari v atau v adalah awalan dari w Dengan kata lain, kata w muncul di kedua sisi dari potongan u dan v dengan kemungkinan overflow di kedua sisi. Panjang dari pengulangan terkecil di (u, v) disebut periode lokal, dan dinotasikan dengan r (u, v). Setiap faktorisasi dari (u, v) paling tidak mempunyai satu pengulangan. Dapat dilihat dengan mudah bahwa r (u, v) x. Faktorisasi (u, v) dari x sehingga r (u, v) = per (x) disebut faktorisasi kritis dari x. Jika (u, v) adalah faktorisasi kritis dari x, maka pada posisi pada u di x,

5 periode lokal dan periode global akan sama. Algoritma Crochemore-Perrin memilih faktorisasi kritis (patternkiri, patternkanan) sehingga patternkiri < per(x) dan patternkiri mempunyai nilai minimal. (Crochemore, M & Perrin, D. 99) Fase inisialisasi pada algoritma ini mempunyai kompleksitas waktu dan ruang O (n), sedang fase pencocokan dapat dilakukan dengan kompleksitas waktu O (m), dan pada kasus terburuk, algoritma ini melakukan 2m-n pencocokan karakter. Contoh: Teks : NURUL HASANAH HARAHAP Pattern : ARAH Tabel 2. Proses Pencocokan Algoritma Two Way Pada Percobaan Satu Terlihat perbedaan pada index R sehingga geser pattern sebanyak Tabel 2.2 Proses Pencocokan Algoritma Two Way Pada Percobaan Dua Terlihat perbedaan pada index U sehingga geser pattern sebanyak Tabel 2.3 Proses Pencocokan Algoritma Two Way Pada Percobaan Tiga Terlihat perbedaan pada index L sehingga geser pattern sebanyak Tabel 2.4 Proses Pencocokan Algoritma Two Way Pada Percobaan Empat Terlihat perbedaan pada index (spasi) sehingga geser pattern sebanyak

6 Tabel 2.5 Proses Pencocokan Algoritma Two Way Pada Percobaan Lima Terlihat perbedaan pada index H sehingga geser pattern sebanyak Tabel 2.6 Proses Pencocokan Algoritma Two Way Pada Percobaan Enam 2 Terlihat persamaan pada index A dan terlihat perbedaan pada index S sehingga geser pattern sebanyak 2 Tabel 2.7 Proses Pencocokan Algoritma Two Way Pada Percobaan Tujuh 2 Terlihat persamaan pada index A dan terlihat perbedaan pada index N sehingga geser pattern sebanyak 2 Tabel 2.8 Proses Pencocokan Algoritma Two Way Pada Percobaan Delapan 3 4 2 Terlihat persamaan pada index A, H, A dan terlihat perbedaan pada index N sehingga geser pattern sebanyak 2 Tabel 2.9 Proses Pencocokan Algoritma Two Way Pada Percobaan Sembilan 2 Terlihat persamaan pada index A dan terlihat perbedaan pada index R sehingga geser pattern sebanyak 2

7 Tabel 2.0 Proses Pencocokan Algoritma Two Way Pada Percobaan Sepuluh 3 4 2 Teks dan Pattern cocok sehingga geser pattern sebanyak 4 Tabel 2. Proses Pencocokan Algoritma Two Way Pada Percobaan Sebelas Pada pola ini tidak perlu dilakukan pergeseran karena sudah pada indeks terakhir. 2.8 Kompleksitas Algoritma Suatu masalah dapat mempunyai banyak algoritma penyelesaian. Algoritma yang digunakan tidak saja harus benar, namun juga harus efisien. Efisiensi suatu algoritma dapat diukur dari waktu eksekusi algoritma dan kebutuhan ruang memori. Algoritma yang efisien adalah algoritma yang meminimumkan kebutuhan waktu dan ruang. Dengan menganalisis beberapa algoritma untuk suatu masalah, dapat diidentifikasi satu algoritma yang paling efisien. Besaran yang digunakan untuk menjelaskan model pengukuran waktu dan ruang ini adalah kompleksitas algoritma. Kompleksitas dari suatu algoritma merupakan ukuran seberapa banyak komputasi yang dibutuhkan algoritma tersebut untuk menyelesaikan masalah. Secara informal, algoritma yang dapat menyelesaikan suatu permasalahan dalam waktu yang singkat memiliki kompleksitas yang rendah, sementara algoritma yang membutuhkan waktu lama untuk menyelesaikan masalahnya mempunyai kompleksitas yang tinggi. Kompleksitas algoritma terdiri dari dua macam yaitu kompleksitas waktu dan kompleksitas ruang. Kompleksitas waktu, dinyatakan oleh T ( n ) diukur dari jumlah tahapan komputasi yang dibutuhkan untuk menjalankan algoritma sebagai fungsi dari ukuran masukan, di mana ukuran masukan ( n ) merupakan jumlah data yang diproses oleh sebuat algoritma. Sedangkan kompleksitas ruang S( n ) diukur dari memori yang digunakan oleh struktur data yang terdapat di dalam algoritma sebagai fungsi dari masukan. Dengan menggunakan kompleksitas waktu atau kompleksitas ruang,

8 dapat ditentukan laju peningkatan waktu atau ruang yang diperlukan algoritma, seiring dengan meningkatnya ukuran masukan ( n ). Kecenderungan saat ini, ruang (memori utama) yang disediakan semakin besar yang artinya kapasitas data yang diproses juga semakin besar. Namun, waktu yang diperlukan untuk menjalankan suatu algoritma harus semakin cepat. Karena kompleksitas waktu menjadi hal yang sangat penting, maka analisis kompleksitas algoritma deteksi tepi akan dilakukan terhadap running time algoritma tersebut. 2.9 Notasi O (Big-O) Notasi O menyatakan running time dari duatu algoritma untuk kemungkinan kasus terburuk. Notasi memiliki dari beberapa bentuk. Notasi O dapat berupa salah satu bentuk maupun kombinasi dari bentuk-bentuk tersebut. Bentuk O () memiliki arti bahwa algoritma yang sedang dianalisis merupakan algoritma konstan. Hal ini mengindikasikan bahwa running time algoritma tersebut tetap, tidak bergantung pada n. O (n) berarti bahwa algoritma tersebut merupakan algoritma linier. Artinya, bila n menjadi 2n maka running time algoritma akan menjadi dua kali running time semula. O ( ) berarti bahwa algoritma tersebut merupakan algoritma kuadratik. Algoritma kuadratik biasanya hanya digunakan untuk kasus dengan n yang berukuran kecil. Sebab, bila n dinaikkan menjadi dua kali semula, maka running time algoritma akan menjadi empat kali semula. O ( ) berarti bahwa algoritma tersebut merupakan algoritma kubik. pada algoritma kubik, bila n dinaikkan menjadi dua kali semula, maka running time algoritma akan menjadi delapan kali semula. O ( ) Bentuk berarti bahwa algoritma tersebut merupakan algoritma eksponensial. Pada kasus ini, bila n dinaikkan menjadi dua kali semula, maka running time algoritma akan menjadi kuadrat kali semula. O ( ) berarti algoritma tersebut merupakan algoritma logaritmik Pada kasus ini, laju pertumbuhan waktu lebih lambat dari pada pertumbuhan n. Algoritma yang termasuk algoritma logaritmik adalah algoritma yang memecahkan

9 persoalan besar dengan mentransformasikannya menjadi beberapa persoalan yang lebih kecil dengan ukuran sama. Basis algoritma tidak terlalu penting, sebab bila misalkan n dinaikkan menjadi dua kali semula, meningkat sebesar jumlah tetapan. Bentuk O (n ) terdapat pada algoritma yang membagi persoalan menjadi beberapa persoalan yang lebih kecil, menyelesaikan setiap persoalan secara independen, kemudian menggabungkan solusi masing- masing persoalan. Sedangkan O (n ) berarti bahwa algoritma tersebut merupakan algoritma faktorial. Algoritma jenis ini akan memproses setiap masukan dan menghubungkannya dengan n- masukan lainnya. Bila n menjadi dua kali semula, maka running time algoritma akan menjadi faktorial dari 2n Kompleksitas algoritma yang akan diuji adalah kompleksitas Algoritma Not So Naive dan Algoritma Two Way. Seperti dijelaskan pada Tabel 4.7 dan Tabel 4.8 berikut 2.0 Penelitian yang relevan Berikut ini beberapa penelitian yang terkait dengan Algoritma Not So Naive dan Two Way :. Cantone, D. & Faro, S. (2004) Menjelaskan bahwa Algoritma Not So Naive merupakan variasi simpel dari Algoritma Naive yang ternyata cukup efisien dalam beberapa kasus. Proses searching dari Algoritma Not So Naive dilakukan dengan mencocokan teks dan pola dari kiri ke kanan. Namun, Algoritma Not So Naive mempunyai dua kasus yang jikalau terpenuhi maka akhir dari pencocokan, pola bisa bergeser sebanyak 2 posisi ke kanan, daripada posisi yang terdapat di Algoritma Not So Naive. 2. Dwinanto, Cahyono. (2003) dalam penelitiannya menganalisa algoritma pencarian string dengan algoritma Algoritma Brute Force, Knuth Morris Pratt dan Algoritma Dua Arah (Two Way). Dalam penelitiannya Algoritma pencarian string merupakan salah satu komponen penting dalam pemrosesan string. Penelitian ini menghasilkan masing masing algoritma menggunakan metode pemeriksaan string yang berbeda dalam konteks arah.

20 3. Vina Sagita, Maria Irmina Prasetiyowati (203) dalam penelitiannya membandingkan algoritma Boyer Moore, Turbo Boyer Moore dan Tuned Boyer Moore. Dalam penelitiannya menggunakan kecepatan waktu untuk menentukan algoritma yang terbaik. Penelitian ini menghasilkan algoritma boyer moore merupakan algoritma tercepat. Algoritma Turbo Boyer Moore merupakan tercepat kedua dan yang paling lambat adalah Tuned Boyer Moore.