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

dokumen-dokumen yang mirip
Analisis Algoritma Knuth Morris Pratt dan Algoritma Boyer Moore dalam Proses Pencarian String

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

BAB 2 LANDASAN TEORI

Penggunaan Algoritma Knuth-Morris-Pratt untuk Pengecekan Ejaan

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

Perbandingan dan Pengujian Beberapa Algoritma Pencocokan String

Penilaian Ujian Tertulis Menggunakan Algoritma Pattern Matching IF3051 Strategi Algoritma

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

Aplikasi Algoritma Pencarian String Dalam Sistem Pembayaran Parkir

Penerapan Algoritma Pencocokan String Boyer-Moore untuk Keamanan Komputer

Penerapan Pencocokan String pada Aplikasi Kamusku Indonesia

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

Penerapan Pencocokan String dalam Aplikasi Duolingo

II. DASAR TEORI I. PENDAHULUAN

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

Perbandingan Algoritma String Matching yang Digunakan dalam Pencarian pada Search Engine

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

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

Variasi-Variasi Algoritma Boyer-Moore dan perbandingannya dalam pencarian String

Pattern Matching dalam Aplikasi Pencarian Jodoh

Pencocokan String dengan Algoritma Reverse Colussi

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

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

Mencari Pola dalam Gambar dengan Algoritma Pattern Matching

Aplikasi String Matching pada Plugin SMS Blocker untuk Validasi Pesan

Penerapan Algoritma Pencocokan String Knuth-Morris-Pratt Sebagai Algoritma Pencocokan DNA

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

Aplikasi Algoritma Pencocokan String pada Mesin Pencari Berita

IMPLEMENTASI ALGORITMA BOYER-MOORE PADA PERMAINAN WORD SEARCH PUZZLE

Penerapan Algoritma Pencocokan String Boyer-Moore dan Knuth-Morris-Pratt (KMP) dalam Pencocokkan DNA

Penggunaan Algoritma Pencocokkan Pola pada Sistem Barcode

Aplikasi Algoritma String Matching dan Regex untuk Validasi Formulir

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

BAB 2 LANDASAN TEORI

Penerapan Algoritma String Matching dalam Intelligent Personal Assistant Siri

Algoritma Pencarian String dalam Pemilihan Anggota Sebuah Organisasi

Penerapan Algoritma Knuth Morris Pratt dalam Aplikasi Penerjemah Teks

String Matching Dalam Permainan The Hunt for Gollum

Algoritma Pencocokan String dalam Permainan Hangman

BAB 2 LANDASAN TEORI

Aplikasi Algoritma BFS dan String Matching pada Tag Suggestions di Facebook

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

Penerapan Algoritma Pattern Matching untuk Mengidentifikasi Musik Monophonic

Implementasi Algoritma Knuth Morris Pratt pada Alat Penerjemah Suara

Penerapan String Matching pada Fitur Auto Correct dan Fitur Auto Text di Smart Phones

BAB 2 LANDASAN TEORI

BAB II LANDASAN TEORI

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

Penerapan Algoritma Pencocokan String dalam Perangkat Lunak Pemblokir Akses Situs Negatif

Algoritma String Matching pada Mesin Pencarian

Aplikasi Algoritma Pencocokan String dan Algoritma Runut Balik dalam Konversi Romaji ke Hangul

Aplikasi String Matching dalam Analisis Cap Bibir

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

Implementasi Algoritma Pencocokan String dalam Penentuan Tombol Respons Facebook

Pengaplikasian Algoritma Knuth-Morris-Pratt dalam Teknik Kompresi Data

APLIKASI ALGORITMA KNUTH-MORRIS-PRATT DALAM CONTENT-BASED MUSIC INFORMATION RETRIEVAL

Visualisasi Beberapa Algoritma Pencocokan String Dengan Java

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

Penggunaan Algoritma Pencocokkan Pola pada Aplikasi How-Old.net

Pengembangan Algoritma Boyer Moore

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

BAB 2 LANDASAN TEORI

BAB 1 PENDAHULUAN. Universitas Sumatera Utara

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

PENERAPAN ALGORITMA PATTERN MATCHING KNUTH-MORRIS-PRATT DALAM PROGRAM MOUSE CAM

BAB 2 TINJAUAN PUSTAKA

Implementasi Algoritma Boyer-Moore untuk Memanipulasi Foto dengan Magic Color

IMPLEMENTASI PROGRAM DINAMIS DENGAN ALGORITMA NEEDLEMAN-WUNSCH PADA PENSEJAJARAN DNA DAN PROTEIN

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

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

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

BAB 2 LANDASAN TEORI

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

Penerapan Algoritma Brute Force di Permainan Nonogram

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

Pemanfaatan Algortima Boyer Moore dalam Penyaringan Teks Halaman Website Sederhana

BAB 2 LANDASAN TEORI

Penerapan Algoritma Brute Force pada permainan Countdown Number

Algortima Pencocokan String

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

Deteksi Plagiarisme Gambar menggunakan Algoritma Pencocokan Pola Rabin-Karp

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

Penerapan Algoritma String Matching untuk Mendeteksi Musik Plagiat

BAB 2 LANDASAN TEORI

Algoritma Cepat Pencocokkan String

Pattern Matching dalam Aplikasi SimSimi

Penggunaan Algoritma Boyer Moore untuk Memindai Berkas dari Virus

BAB 2 LANDASAN TEORI

BAB 2 TINJAUAN PUSTAKA

BAB 2 LANDASAN TEORI

BAB 1 PENDAHULUAN. 1.1 Latar Belakang

PENCARIAN BARANG DALAM BASIS DATA ONLINE SHOP MENGGUNAKAN ALGORITMA BFS, DFS, DAN KMP

BAB 1 PENDAHULUAN. 1.1.Latar Belakang

BAB II LANDASAN TEORI

Pencarian Potongan Gambar Menggunakan Algoritma Boyer Moore

Menentukan Tingkat Kecocokan Teks Menggunakan Algoritma KMP

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

BAB 2 LANDASAN TEORI

BAB II LANDASAN TEORI

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

Transkripsi:

PENGGUNAAN ALGORITMA APOSTOLICO-CROCHEMORE PADA PROSES PENCARIAN STRING DI DALAM TEKS Sindy Gita Ratri Program Studi Teknik Informatika Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung Jl. Ganesha No. 10, Bandung e-mail: if15071@students.if.itb.ac.id ABSTRAK Proses pencarian string atau disebut juga dengan pencocokan string (string matching atau pattern matching) telah menjadi salah satu kebutuhan dalam pemrosesan teks. Algoritma pencarian string digunakan untuk mencari lokasi sebuah atau lebih string (disebut pattern) dalam kumpulan string lain (teks). Algoritma pencarian string yang ada saat ini sangat bervariasi dan mungkin masih akan berkembang. Pada makalah ini akan dibahas mengenai salah satu variasi dari algoritma pencarian string yaitu algoritma Apostolico-Crochemore dan perbandingannya dengan algoritma Knuth-Morris- Path. Kata kunci: algoritma Apostolico-Crochemore, algoritma Knuth-Morris-Path, pattern, teks, fungsi pinggiran (border function). 1 PENDAHULUAN Proses pencarian string atau disebut juga dengan pencocokan string (string matching atau pattern matching) telah menjadi salah satu kebutuhan dalam pemrosesan teks. Proses pencarian string dilakukan dengan menggunakan algoritma pencarian string. Algoritma pencarian string adalah algoritma yang digunakan untuk mencari lokasi sebuah atau lebih string (disebut pattern) dalam kumpulan string lain (teks). Persoalan pencarian string dirumuskan sebagai berikut. 1. Diberikan teks, yaitu string yang panjangnya n karakter 2. Diberikan pattern, yaitu string dengan panjang m karakter (m < n) yang akan dicari di dalam teks Kemudian dicari lokasi pertama di dalam teks yang bersesuaian dengan pattern. Contoh : Pattern : hari Teks : kami pulang saat hari mulai malam 2 ALGORITMA PENCARIAN STRING YANG UMUM DIGUNAKAN Saat ini ada banyak variasi algoritma pencarian string yang digunakan. Algoritma yang paling dasar adalah algoritma brute force. Algoritma lain yang umum digunakan antara lain algoritma Knuth-Morris-Pratt dan algoritma Boyer-Moore. Kebanyakan algoritma-algoritma pencarian string yang lain merupakan varian dari kedua algoritma tersebut. 2.1 Algoritma Brute Force Algoritma brute force adalah algoritma yang paling sederhana. Teks diasumsikan berada dalam array T[1...n] dan pattern berada dalam array P[1...m] dengan m < n, maka dengan algoritma brute force pencarian string adalah sebagai berikut. 1. Mula-mula pattern dicocokkan pada awal teks T. 2. Dengan bergerak dari kiri ke kanan, setiap karakter pada pattern P dibandingkan dengan karakter yang bersesuaian pada teks T sampai : a. semua karakter yang dibandingkan cocok (pencarian berhasil), atau b. dijumpai sebuah ketidakcocokan karakter (pencarian belum berhasil). 3. Jika pattern P belum ditemukan kecocokannya dan teks T belum habis, pattern P digeser satu karakter ke kanan dan langkah 2 diulangi. Kompleksitas waktu algoritma brute force untuk kasus terbaik adalah O(n). Sedangkan kompleksitas untuk kasus terburuknya adalah O(mn). 2.2 Algoritma Knuth-Morris-Pratt (KMP) Algoritma KMP ditemukan oleh Knuth dan Pratt, dan secara independen oleh J. H. Morris pada tahun 1977. MAKALAH IF2251 STRATEGI ALGORITMIK TAHUN 2007 HALAMAN 1 DARI 5

Pada algoritma KMP, jumlah pergeseran karakter yang akan dilakukan apabila terjadi ketidakcocokan saat pencarian string telah dicari terlebih dahulu dengan melakukan perhitungan fungsi pinggiran pada pattern. Sehingga algoritma ini lebih efisien dibandingkan dengan algoritma brute force karena pergeseran dapat dilakukan lebih dari satu karakter. Fungsi pinggiran yang dihitung didefinisikan sebagai ukuran awalan terpanjang pattern P[i] yang merupakan akhiran dari P[i...m]. Pergeseran karakter akan dilakukan sebanyak jumlah karakter yang diperoleh dari fungsi pinggiran tersebut. Algoritma KMP memliki kompleksitas waktu fase proses awal O(m) dan kompleksitas waktu fase pencarian string O(n+m). 2.3 Algoritma Boyer-Moore (BM) Algoritma BM ditemukan oleh Bob Boyer and J. Strother Moore pada tahun 1977. Perbedaan paling mendasar dari algoritma BM dibandingkan dengan dua algoritma sebelumnya adalah algoritma BM melakukan perbandingan saat pencarian string dari kanan ke kiri (algoritma brute force dan KMP melakukan perbandingan dari kiri ke kanan). Prinsip utama algoritma ini adalah melompat sejauh mungkin apabila ditemukan ketidakcocokan saat perbandingan. Seperti pada algoritma KMP, algoritm BM juga memiliki dua fase. Pada fase proses awal, dilakukan perhitungan pada pattern sebagai indikasi pergeseran. Adadua fungsi perhitungan yang dilakukan, yaitu goodsuffix shift dan bad-character shift. Algoritma BM memiliki kompleksitas waktu fase proses awal sebesar O(m+σ ) dan kompleksitas waktu fase pencarian string sebesar O(mn). Perbandingan karakter yang terjadi saat kasus terburuk adalah sebanyak 3n. Sedangkan pada kasus terbaiknya, kompleksitas waktu yang dibutuhkan adalah O(n/m). 3 ALGORITMA APOSTOLICO- CROCHEMORE Algoritma Apostolico-Crochemore adalah salah satu jenis algoritma pencarian string dari banyak jenis algoritma pencarian string. Algoritma Apostolico- Crochemore adalah algoritma sederhana yang melakukan perbandingan karakter pada teks sebanyak 3n/2 pada kasus terburuknya. Algoritma Apostolico-Crochemore terdiri dari dua fase, yaitu fase proses awal (preprocessing) dan fase pencarian string. Pada fase proses awal dilakukan fungsi pinggiran untuk menentukan jumlah langkah pergeseran pattern terbesar dengan menggunakan perbandingan sebelum pencarian string. Pada fase pencarian string dilakukan perbandingan pattern pada teks. Algoritma Apostolico-Crochemore mirip dengan algoritma Knuth-Morris-Path (KMP). Fungsi pinggiran (border function) yang digunakan mirip seperti fungsi pinggiran pada algoritma KMP dan proses pencariannya sama-sama dimulai dari kiri ke kanan. Akan tetapi, tahapan pencarian (proses urutan pembandingan) berbeda dengan algoritma KMP. 3.1 Fase Proses Awal Fase proses awal (preprocessing) terhadap pattern x adalah dengan menghitung fungsi pinggiran yang mengindikasikan pergeseran x terbesar yang mungkin dengan menggunakan perbandingan yang dibentuk sebelum fase pencarian string. Dengan adanya fungsi pinggiran ini dapat dicegah pergeseran yang tidak berguna, seperti halnya pada algoritma brute force. Fungsi pinggiran hanya bergantung pada karakterkarakter di dalam pattern, dan bukan pada karakterkarakter di dalam teks. Oleh karena itu, kita dapat melakukan perhitungan fungsi sebelum pencarian string dilakukan. Fungsi pinggiran pada algoritma Apostolico- Crochemore adalah kmpnext. Algoritma untuk menghitung fungsi pinggiran kmpnext sebagai berikut (dalam bahasa C). void prekmp(char *x, int m, int kmpnext[]) { int i, j; i = 0; j = kmpnext[0] = -1; while (i < m) { while (j > -1 && x[i]!= x[j]) j = kmpnext[j]; i++; j++; if (x[i] == x[j]) kmpnext[i] = kmpnext[j]; else kmpnext[i] = j; Contoh penerapannya pada pattern x dapat dilihat pada tabel berikut. Tabel 1. Contoh fungsi pinggiran kmpnext[i] pada pattern x = GCAGAGAG MAKALAH IF2251 STRATEGI ALGORITMIK TAHUN 2007 HALAMAN 2 DARI 5

3.2 Fase Pencarian String Proses pencarian (pencocokan) pattern dengan teks pada algoritma Apostolico-Crochemore adalah sebagai berikut. Misalkan : x adalah string dari pattern yang akan dicari y adalah teks yang akan dicocokan dengan pattern m adalah panjang x n adalah panjang y l = 0 jika x adalah karakter tunggal yang dipangkatkan (x = c m dengan c di dalam Σ ) dan l adalah posisi karakter pertama dari x yang berbeda dari x[0] (x = a l bu untuk a, b di dalam Σ, u di dalam Σ, dan a b). Setiap pembandingan dilakukan dengan posisi yang berpola dengan urutan sebagai berikut : l, l+1,..., m-2, m-1, 0, 1,..., l -1. Selama fase pencarian, kita mempertimbangkan (i, j, k) di mana: - jendela karakter diposisikan pada teks y[j.. j+m-1] - 0 k l dan x[0.. k-1] = y[j.. j+k-1] - l i < m dan x[l..i-1] = y[j+l.. i+j-1] Inisialisasi awal dari (i, j, k) adalah (l, 0, 0). Gambar 1. Pembandingan dengan algoritma Apostolico- Crochemore memperhatikan (i, j, k). Komputasi (perhitungan) untuk menentukan (i, j, k) berikutnya mempertimbangkan tiga kasus yang bergantung pada nilai i. Ketiga kasus tersebut sebagai berikut. 1. i = l Jika x[i] = y[i+j] maka (i, j, k) berikutnya adalah (i+1, j, k). Jika x[i] y[i+j] maka (i, j, k) berikutnya adalah (l, j+1, max{0, k-1). 2. l < i < m Jika x[i] = y[i+j] maka (i, j, k) berikutnya adalah (i+1, j, k). Jika x[i] y[i+j] maka ada dua kasus yang muncul yang bergantung pada nilai kmpnext[i] : kmpnext[i] l maka (i, j, k) berikutnya (l, i+j-kmpnext[i], max{0, kmpnext[i]). kmpnext[i] >l maka (i, j, k) berikutnua (kmpnext[i], i+j-kmpnext[i], kmpnext[i] l ). 3. i = m Jika k < l dan x[k] = y[j+k] maka (i, j, k) berikutnya adalah (i, j, k+1). 4. Sebaliknya salah satu dari k < l dan x[k] y[j+k], atau k = l (jika k = l kemunculan x diberitahukan) pada kedua kasus tersebut perhitungan (i, j, k) berikutnya sama seperti perhitungan pada kasus l < i < m. Algoritma Apostolico-Crochemore secara keseluruhan dapat dilihat sebagai berikut (dalam bahasa C). void AXAMAC(char *x, int m, char *y, int n) { int i, j, k, ell, kmpnext[xsize]; /* Preprocessing */ prekmp(x, m, kmpnext); for (ell = 1; x[ell - 1] == x[ell]; ell++); if (ell == m) ell = 0; /* Searching */ i = ell; j = k = 0; while (j <= n - m) { while (i < m && x[i] == y[i + j]) ++i; if (i >= m) { while (k < ell && x[k] == y[j + k]) ++k; if (k >= ell) OUTPUT(j); j += (i - kmpnext[i]); if (i == ell) k = MAX(0, k - 1); else if (kmpnext[i] <= ell) { k = MAX(0, kmpnext[i]); i = ell; else { k = ell; i = kmpnext[i]; 3.3 Kompleksitas Algoritma Apostolico- Crochemore Kompleksitas waktu algoritma Apostolico-Crochemore pada fase proses awal adalah O(m) dengan m adalah MAKALAH IF2251 STRATEGI ALGORITMIK TAHUN 2007 HALAMAN 3 DARI 5

panjang pattern yang dicari. Fase pencarian string algoritm Apostolico-Crochemore memiliki kompleksitas waktu O(n) dengan n adalah panjang karakter teks. Algoritm Apostolico-Crochemore melakukan perbandingan karakter sebanyak 3n/2 karakter dalam kasus terburuk. 3.4 Contoh Pencarian String dengan Algoritma Apostolico-Crochemore Agar lebih mudah mengerti cara kerja algoritma Apostolico-Crochemore, maka dapat kita lihat contoh sebagai berikut. Teks y : Pattern x : Dengan algoritma Apostolico-Crochemore, carilah pattern x pada teks y tersebut. Fase Proses Awal Untuk menyelesaikan permasalahan tersebut dengan algoritma Apostolico-Crochemore, ada dua fase yang harus diselesaikan. Fase pertama yaitu fase proses awal (preprocessing). Pada fase ini dihitung fungsi pinggiran pada pattern x dengan menggunakan algoritma untuk menghitung fungsi pinggiran. Hasilnya diperoleh tabel kmpnext berikut. Tabel 2. Fungsi pinggiran kmpnext pada pattern x = BCABABAB i 0 1 2 3 4 5 6 7 8 x[i] kmpnext[i] -1 0 0-1 1-1 1-1 1 l = 1 Fase Pencarian String Pada fase ini, saat terjadi ketidakcocokan maka dilakukan pergeseran ke arah kanan sebanyak (ikmpnext[i]) karakter. Tahapan-tahapan pencarian string dapat dilihat sebagai berikut. Tahap 1 1 2 3 Digeser sebanyak : 3-kmpNext[3] = 3- -1 = 4 karakter Tahap 2 1 Digeser sebanyak : 1-kmpNext[1] = 1-0 = 1 karakter Tahap 3 8 1 2 3 4 5 6 7 Pada tahap 3, pattern x sudah ditemukan di dalam teks. Jumlah perbandingan yang dilakukan untuk mencari pattern dilakukan sebanyak 12 kali. Jika pencarian string terus dilakukan sampai tes habis maka pattern digeser sebanyak : 8-kmpNext[8] = 8-1 = 7 karakter. Tahap 4 1 Pada tahap 4, seluruh teks sudah habis dicari. Maka total perbandingan yang dilakukan seluruhnya sampai teks habis adalah 13 kali. 3.4 Perbandingan Antara Algoritma Apostolico-Crochemore dengan Algoritma Knuth-Morris-Pratt Jika dibandingkan antara algoritma Apostolico- Crochemore dengan algoritma KMP, maka dapat dilihat persamaan dan perbedaan antara kedua algoritma tersebut. Persamaan Kedua algoritma sama-sama memiliki dua fase yaitu fase proses awal (preprocessing) dan fase pencarian string. Pada fase proses awal dilakukan perhitungan fungsi pinggiran terhadap pattern yang ingin dicari sebagai indikasi pergeseran karakter saat terjadi ketidacocokan perbandingan karakter antara pattern dengan teks. Kompleksitas waktu fase proses awal adalah O(m). Pencarian string sama-sama dilakukan dari kiri ke kanan. Perbedaan Pada algoritma Apostolico-Crochemore : - kompleksitas waktu fase pencarian string adalah O(n) - perbandingan dimulai dari karakter pattern yang kedua Sedangkan pada algoritma KMP : - kompleksitas waktu fase pencarian string adalah O(n+m) - perbandingan dimulai dari karakter pattern yang pertama MAKALAH IF2251 STRATEGI ALGORITMIK TAHUN 2007 HALAMAN 4 DARI 5

4 APLIKASI MASALAH PENCARIAN STRING Aplikasi dari masalah pencarian string ini banyak dipakai. Misalnya, pada program untuk pemrosesan kata dan spreadsheet terdapat fitur FIND untuk mencari lokasi sebuah kata atau nomor pada sebuah dokumen. Program untuk memeriksa grammar juga membutuhkan algoritma pencarian string untuk memeriksa kalimat. Dalam basis data, kebanyakan pencarian ditangani dengan indeks. Tetapi jika mencari string yang kecil diantara basis data yang besar dibutuhkan algoritma pencarian string. Bahkan bidang biologi molekuler juga membutuhkan algoritma pencarian string karena molekul biologi dapat diaproksimasi sebagai urutan nukleotida atau asam amino. 5 KESIMPULAN Algoritma pencarian string digunakan dalam berbagai macam aplikasi di berbagai macam bidang sehingga algoritma pencarian string sendiri berkembang pesat. Saat ini algoritma pencarian string memiliki banyak variasi. Algoritma yang sudah umum digunakan ada dua yaitu algoritma Knuth-Morris-Pratt (KMP) dan algoritm Boyer- Moore (BM). Ada salah satu variasi algoritma pencarian string yang menyerupai algoritma KMP yaitu algoritma Apostolico- Crochemore. Algoritma ini memiliki kompleksitas waktu untuk fase proses awal sebesar O(m) dan fase pencarian string sebesar O(n). Pada kasus terburuk, perbandingan karakter yang dilakukan sebanyak 3n/2 kali. Algoritma ini merupakan perbaikan dari algoritma KMP karena algoritma ini memiliki kompleksitas waktu yang lebih baik dari algoritma KMP. REFERENSI [1] Rinaldi Munir, Diktat Kuliah IF2251 Strategi Algoritmik, Program Studi Teknik Informatika, STEI ITB, 2007. [2] Wikimedia Foundation, Inc. String searching algorithm, http://en.wikipedia.org/wiki/string_searching_algorithm, tanggal akses : 15 Mei 2007 [3] Christian.Charras, Thierry.Lecroq, Apostolico-Crochemore algorithm, http://www-igm.univmlv.fr/~lecroq/string/node16.html, tanggal akses : 15 Mei 2007 MAKALAH IF2251 STRATEGI ALGORITMIK TAHUN 2007 HALAMAN 5 DARI 5