Perbandingan Algoritma Turbo Boyer Moored dan String Matching on Ordered Alphabets Untuk Aplikasi Kamus Fisika Berbasis Android

BAB 2
LANDASAN TEORI

2.1

Definisi Kamus

Kamus menurut KBBI (Kamus Besar Bahasa Indonesia) merupakan buku acuan yang
memuat kata dan ungkapan, biasanya disusun menurut abjad berikut keterangan dan makna,
pemakaian atau terjemahan (Argakusumah, 2014). Selain itu, kamus merupakan buku yang
memuat kumpulan istilah atau nama yang disusun menurut abjad beserta dengan penjelasan
makna dan pemakaiannya.

2.2

Definisi Algoritma

Algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang disusun secara
sistematis (Rinal Munir, 1999). Kata logis merupakan kata kunci. Langkah-langkah tersebut
harus logis, ini berarti nilai kebenarannya harus dapat ditentukan, benar atau salah. Langkahlangkah yang tidak benar dapat memberikan hasil yang salah.
Algoritma adalah jantung ilmu komputer atau informatika. Banyak cabang ilmu

komputer yang diacu dalam terminologi algoritma. Dalam kehidupan sehari-hari banyak
terdapat proses yang digambarkan dalam suatu algoritma. Cara membuat kue atau masakan,
misalnya dinyatakan dengan suatu resep. Resep makanan adalah suatu algoritma.

2.2.1 Definisi Algoritma String Matching
String Matching adalah pencarian sebuah pattern pada sebuah teks (kurnaedi, 2012). Prinsip
kerja algoritma string matching adalah sebagai berikut :
1. 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 shif ke kanan pada
window. Prosedur ini dilakukan berulang-ulang sampai window berada pada akhir
teks. Mekanisme ini disebut sliding-window.

Universitas Sumatera Utara

7
String Matching dibagi menjadi dua, yaitu exact string matching dan heuristic (statistical
matching). Exact matching digunakan untuk menemukan pattern yang berasal dari satu teks.

Contoh pencarian exact matching adalah pencarian kata “pelajar” dalam kalimat “ saya
seorang pelajar” atau “saya seorang siswa”. Sistem akan memberikan hasil bahwa kata
pelajar dan siswa bersinonim. Algoritma exact matching diklasifisikan menjadi tiga bagian
menurut arah pencariannya, yaitu :
1. Arah pencarian dari kiri ke kanan.
Algoritma yang termasuk dalam kategori ini adalah Brute Force, Morris dan Pratt
(yang kemudian dikembangkan oleh Knuth, Morris dan Pratt).
2. Arah pembacaan dari kanan ke kiri.
Algoritma yang termasuk dalam kategori ini adalah Boyer Moore yang kemudian
dikembangkan menjadi algoritma Turbo Boyer Moore, Tuned Boyer Moore dan Zhu
Takaoka.
3. Arah pencarian yang ditentukan oleh program.
Algoritma yang termasuk dalam kategori ini adalah algoritma Colussi dan
Crochemore-Perrin.
Heuristic matching adalah teknik yang digunakan untuk menghubungkan dua data
terpisah ketika exact matching tidak mampu mengatasi karena pembatasan pada data yang
tersedia. Heuristic matching dapat dilakukan dengan perhitungan distance antara pattern
dengan teks. Exact dan heuristic matching memiliki kemiripan makna tetapi berbeda tulisan.

2.2.1.1 Algoritma Turbo Boyer Moore

Algoritma Turbo Boyer Moore adalah sebuah algoritma pencocokan pola tertentu terhadap
suatu kalimat atau paragraf. Algoritma ini merupakan varian dari Algoritma Boyer Moore
yang memungkinkan terjadinya ‘lompatan’ melewati segmen yang tidak memerlukan
preprosessing tambahan dengan kecepatan yang baik. Algoritma Turbo Boyer Moore
mengambil metode pencarian string boyer moore yaitu good suffix dan bad character suffix.
Akan tetapi, Algoritma Turbo Boyer Moore berbeda dengan Algoritma Boyer Moore,
algoritma ini dimungkinkan terjadinya ‘lompatan’ melewati segmen mengingat faktor dari
teks yang cocok dengan akhiran dari pattern selama attempt terakhir sehingga memanfaatkan
teknik turbo shift. Cara kerja algoritma Turbo Boyer Moore ini adalah :

Universitas Sumatera Utara

8
Pertama : inisialisasi, karena algoritma ini menggunakan good suffix shif dan bad character
shif dari Algoritma Boyer Moore maka untuk inisialisasi dijalankan prosedur preBmBc dan
preBmGs seperti Algoritma Boyer Moore.
Kedua : Melakukan proses pencocokan karakter pada pattern dengan karakter pada teks. Jika
terjadi ketidakcocokan maka dilakukan pergeseran terbesar berdasarkan tabel BmBc, tabel
BmGs dan turbo shif.
Adapun Prinsip Kerja dari Algoritma Turbo Boyer Moore adalah sebagai berikut :

1.

Algoritma Boyer Moore mulai melakukan pencocokan pattern pada awal teks.

2.

Dari kanan ke kiri, algoritma ini akan mencocokkan karakter per karakter pattern
dengan karakter pada teks yang bersesuaian sampai salah satu kondisi berikut dipenuhi:
a)

Di pattern dan di teks yang dibandingkan tidak cocok (missmatch).

b)

Semua karakter di pattern cocok. Algoritma akan memberitahukan penemuan di
posisi ini.

c)

Algoritma kemudian menggeser pattern dengan memaksimalkan nilai pergeseran

good suffix dan pergeseran bad character, lalu mengulangi langkah b sampai
patern berada di ujung teks.

Untuk fase pencarian dalam algoritma Turbo Boyer Moore, proses yang dilakukan
hampir sama dengan fase pencarian pada Algoritma Boyer Moore. Yang membedakan adalah
adanya variabel yang berfungsi untuk menampung nilai pergeseran apabila pada putaran
sebelumnya nilai yang diambil untuk pergeseran berasal dari tabel good suffix shift. Nilai ini
nantinya akan digunakan sebagai nilai yang mungkin digunakan untuk pergeseran pattern.
Fase inisialisasi pada algoritma ini sama dengan fase inisialisasi pada algoritma Boyer Moore,
yaitu mempunyai kompleksitas waktu dan ruang sebesar O(n + σ) dengan σadalah besar
ruang alfabet. Sedangkan pada fase pencocokan, algoritma ini mempunyai kompleksitas
waktu sebesar O(m) dengan jumlah pencocokan karakter pada algoritma ini adalah 2m.
Contoh :
Teks

: Titik Berat Benda

Pattern : Benda
Tabel 2.1 Tabel BmBc dan BmGs
Index


0

1

2

3

4

Pattern

B

e

n

d


a

BmBc

4

3

2

1

0

BmGs

4

4


4

4

1

Universitas Sumatera Utara

9

Temu Pola 1
Tabel 2.2 Pergeseran karakter TBM 1
T

I

T

I


K

B

E

R

A

T

B

E

N

D


A

1
B

E

N

D

A

Terlihat perbedaan pada index K :
- Geser BmBc(K) – m + ( index bawah + 1) = 5 – 5 + 5 = 5
- BmGs[4] = 1
Sehingga geser pattern sebesar 5 (nilai maksimal dari kedua perhitungan)

Temu Pola 2

Tabel 2.3 Pergeseran karakter TBM 2
T I

T

I

K

B

B

E

E

N

R

A

1

-

D

A

T

B

E

N

D

A

Terlihat perbedaan pada index R , maka :
-

Geser BmBc(R) – m + ( index bawah + 1 ) = 5 – 5 + 4 = 4

-

BmGs[3] = 4
Sehingga geser pattern sebesar 4 (nilai maksimal dari kedua perhitungan)

Temu Pola 3
Tabel 2.4 Pergeseran karakter TBM 3
T I

T

I

K

B

E

R

A

T

B

E

N

D

A

1
B

E

N

D

A

Terlihat perbedaan pada index E , maka :
-

Geser BmBc(E) – m + ( index bawah + 1 ) = 3– 5 + 5 = 3

- BmGs[4] = 1
Sehingga geser pattern sebesar 3 (nilai maksimal dari kedua perhitungan)

Universitas Sumatera Utara

10
Temu Pola 4
Tabel 2.5 Pergeseran karakter TBM 4
T I

T

I

K

B

E

R

A

T

B

E

N

D

A

-

-

-

-

-

B

E

N

D

A

Pada temu pola 4, tidak perlu dilakukan pergeseran lagi karena sudah sampai pada indeks
terakhir.

2.2.1.2 Algoritma String Matching on Ordered Alphabets
Algoritma String Matching on Ordered Alphabets ialah algoritma yang mirip dengan
algoritma pencarian satu-satu (brute force). Perbedaanya adalah pada saat dilakukan
percobaan untuk menyamakan string dimana ‘jendela’ diposisikan oleh substring y[j..j+m-1],
saat prefix u dari x telah ditemukan dan ketidaksamaan terjadi antara karakter a dalam x
dengan b dalam kata y.
y
x

U
U

B
A

Gambar 2.1 Percobaan pada algoritma string matching on ordered alphabets
Algoritma ini akan menghitung periode ub seperti pada gambar diatas. Jika tidak berhasil
dalam menemukan periode yang tepat, algoritma ini akan beralih untuk menghitung
perkiraannya.
Algoritma String Matching on Ordered Alphabets melakukan 37 kali perbandingan
karakter. Pada kasus terburuk, algoritma ini melakukan perbandingan karakter sebanyak
6n+5 perbandingan danmenghasilkan kompleksitas waktu pencariannya O(n).
Contoh :
Teks

: Titik Berat benda

Pattern : Benda
Perhitungan Pergeseran : Untuk proses pergeseran dihitung berdasarkan banyaknya string
yang sama ditambah dengan string yang berbeda. Jika karakter string teks dan pattern tidak
sama, lakukan pengecekan ke string berikutnya.

Universitas Sumatera Utara

11
Tabel 2.6. Pergeseran Pattern SMOA 1
T

I

T

I

K

B

E

N

D

A

B

E

R

A

T

B E

N

D

A

D

A

D

A

D

A

Geser pattern 1 kali.
Tabel 2.7. Pergeseran Pattern SMOA 2
T

I

T

B E

I

K

N

D

B

E

R

A

T

B

E

N

A

Geser pattern 1 kali
Tabel 2.8. Pergeseran Pattern SMOA 3
T

I

T

I

K

B

E

N

B

D

E

R

A

T

B

E

N

A

Geser pattern 1 kali
Tabel 2.9. Pergeseran Pattern SMOA 4
T I

T

I

K

B

E

N

B

E

D

A

R

A

T

B

E

N

Geser pattern 1 kali
Tabel 2.10. Pergeseran Pattern SMOA 5
T I

T

I

K

B

E

B

E

R

N

D

A

A

T

B

E

N

D

A

Geser pattern 1 kali
Tabel 2.11. Pergeseran Pattern SMOA 6
T I

T

I

K

B

B

E

R

A

E

N

D

A

T

B

E

N

D A

Geser pattern 1 kali

Universitas Sumatera Utara

12
Tabel 2.12. Pergeseran Pattern SMOA 7
T I

T

I

K

B

E

R

A

T

B

E

N

D

A

B

E

N

D

A

D

A

Geser pattern 3 kali
Tabel 2.13. Pergeseran Pattern SMOA 8
T I

T

I

K

B

E

R

A

T

B

E

N

B

E

D

A

N

Geser pattern 1 kali
Tabel 2.14. Pergeseran Pattern SMOA 9
T I

T

I

K

B

E

R

A

T

B

E

B

E

N

N

D

A

D

A

A

Geser pattern 1 kali
Tabel 2.15. Pergeseran Pattern SMOA 10
T I

T

I

K

B

E

R

A

T

B

B

E

N

D

E

N

D

A

Geser pattern 1 kali
Tabel 2.16. Pergeseran Pattern SMOA 11
T I

T

I

K

B

E

R

A

T

B

E

N

D

A

B

E

N

D

A

Pattern sudah cocok dan teks sudah berada diujung, proses pencocokan selesai.

2.3

Definisi Android

Android adalah sebuah sistem operasi untuk perangkat mobile berbasis linux yang mencakup
sistem operasi, middleware dan aplikasi. Android menyediakan platform terbuka bagi para
pengembang untuk menciptakan aplikasi mereka (Safaat,2011).

Universitas Sumatera Utara

13
Android dipuji sebagai “platform mobile pertama yang lengkap, terbuka dan bebas”.
1. Lengkap (Complete Platform) : para desainer dapat melakukan pendekatan yang
komprehensif ketika mereka sedang mengembangkan platform Android. Android
merupakan sistem operasi yang aman dan banyak menyediakan tools dalam
membangun software dan memungkinkan peluang pengembangan aplikasi.
2. Terbuka (Open Source Platform) : Platform Android disediakan melalui lisensi open
source. Pengembang dapat dengan bebas untuk mengembangkan aplikasi. Android
sendiri menggunakan Linux Kernel 2.6.
3. Bebas (Free Platform) : Android adalah platform/aplikasi yang bebas untuk develope.
Tidak ada lisensi atau biaya royalti untuk dikembangkan pada platform Android.
Tidak ada biaya keanggotaan diperlukan. Tidak ada biaya pengujian. Tidak ada
kontrak yang diperlukan. Aplikasi untuk Android dapat didistribusikan dan
diperdagangkan dalam bentuk apapun.

2.4

Kompleksitas Algoritma

Algoritma ialah urutan-urutan langkah logis dalam menyelesaikan suatu masalah secara
sistematis. Sebuah algoritma tidak saja harus benar, tetapi juga harus mangkus (efisien).
Algoritma yang bagus adalah algoritma yang mangkus (efficient). Kemangkusan algoritma
diukur dari waktu (time), eksekusi algoritma dan kebutuhan ruang (space) memori.
Algoritma yang mangkus ialah algoritma yang meminimumkan kebutuhan waktu dan
ruang. Kebutuhan waktu dan ruang suatu algoritma bergantung pada ukuran masukan (n),
yang menyatakan jumlah data yang diproses. Kemangkusan algoritma dapat digunakan untuk
menilai algoritma yang bagus dari sejumlah algoritma penyelesaian masalah. Model abstrak
pengukuran waktu/ruang harus independen dari pertimbangan mesin dan compiler apapun.
Besaran yang dipakai untuk menerangkan model abstrak pengukuran waktu/ruang ini adalah
kompleksitas algoritma.
Ada dua macam kompleksitas algoritma, yaitu: kompleksitas waktu dan kompleksitas
ruang. Kompleksitas waktu, T(n), diukur dari jumlah tahapan komputasi yang dibutuhkan
untuk menjalankan algoritma sebagai fungsi dari ukuran masukann. Kompleksitas ruang, S(n)
diukur dari memori yang digunakan oleh struktur data yang terdapat di dalam algoritma
sebagai fungsi dari ukuran masukan n.

Universitas Sumatera Utara

14
Kompleksitas algoritma diukur berdasarkan kinerja dengan menghitung waktu
eksekusi suatu algoritma. Waktu eksekusi algoritma dapat diklasifisikan menjadi tiga
kelompok besar, yaitu best-case (kasus terbaik), average-case (kasus rerata) dan worst-case
(kasus terjelek). Pada pemograman yang dimaksud dengan kasus terbaik, kasus rerata dan
kasus terjelek dalam suatu algoritma adalah besar kecilnya atau hanya sedikitnya sumbersumber yang digunakan oleh suatu algoritma. Makin sedikit makin baik, makin banyak makin
jelek. Biasanya sumber-sumber yang paling dipertimbangkan tidak hanya waktu eksekusi
tetapi bisa juga besar memori, catu-daya dan sumber-sumber lain (subandijo, 2011).

2.6 Notasi Big O
Notasi Big O adalah cara yang digunakan untuk menguraikan laju pertumbuhan suatu fungsi
yang tidak lain adalah time complexity suatu algoritma (subandijo, 2011). Secara sederhana
notasi Big O didefinisikan sebagai berikut:
Jika n adalah ukuran masukan dan f(n) serta g(n) adalah fungsi positif dari n maka f(n) adalah
O(g(n)) jika dan hanya jika terdapat konstanta positif c dan integer positif n0 sedemikian rupa
sehingga f(n) ≤ c g(n) untuk semua n ≥ n0.
Secara tidak formal, suatu algoritma disebut menunjukkan laju pertumbuhannya
merupakanorder suatu fungsi matematika jika untuk ukuran masukan n, fungsi f(n) dikalikan
konstanta positifmerupakan batas atas atau limit dari waktu eksekusi algoritma tersebut.
Dengan kata lain untuk ukuran masukan n yang lebih besar daripada n0 dan konstanta c,
waktu eksekusi algoritma tidak akanmelampaui c * f(n). Sebagai contoh, karena waktu
eksekusi insertion sort tumbuh secara kuadratik dengan besarnya masukan n ketika ukuran
masukan naik, insertion sort dikatakan mempunyai order O (n2).
Notasi ini dikenal dengan nama notasi Big O yang secara khusus digunakan untuk
menguraikan efisiensi algoritma. Notasi Big O tidaksecara spesifik memasukkan suku
konstanta. Jika hasil estimasi efisiensi algoritma mencakup jumlah beberapa suku, notasi ini
hanya akan mengambil suku dengan order tertinggi. Sebagai contohalgoritma dengan
efisiensi T(n) = n2+n+10 maka order algoritma tersebut adalah O(n2). Ilustrasiberikut
menujukkan bagaimana dominasi n2 terhadap nilai T(n) secara keseluruhan saat nilai n
menuju tak berhingga.

Universitas Sumatera Utara

15
n

n2

n

10

T(n)

0

0

0

10

10

10

100

10

10

120

100

10000

100

10

10110

1000

1000000

1000

10

1001010

10000

100000000

10000

10

100010010

Meskipun notasi ini dikembangkan sebagai bagian dari matematika murni, notasi ini
kerap dipakai pada analisis algoritma untuk menguraikan algoritma pemakaian sumbersumber komputasi, kasus terburuk atau kasus rerata waktu eksekusi atau pemakaian memori
suatu algoritma kerapdisajikan sebagai fungsi dari besaran masukan menggunakan notasi Big
O. Hal ini memungkinkan perancang algoritma memprediksi perilaku algoritmanya dan
menentukan algoritma mana yang akan digunakan tak tergantung pada arsitektur komputer
dan clock rate. Karena notasi Big O mengabaikan nilai konstanta dan kelipatannya dan juga
mengabaikan efisiensi untuk argumen-argumen dalam ukuran yang lebih kecil ordernya,
maka notasi Big O tidak selalu mencerminkan algoritma yang paling cepat pada data tertentu,
tetapi pendekatan ini tetap sangat efektif untuk membandingkan berbagai algoritma saat
ukuran data masukan menuju tak terhingga.
Konsep O(n) dikenal sebagai salah satu metode asymptotic analysis untuk
menyatakan batas atas asimptotik. Sebagai contoh, T(n) = 13n3+ 42n2+ 2n log n + 4n di mana
T merupakanfungsi dari obyek masukan n, ditulis sebagai T(n). Jika n tumbuh menjadi lebih
besar maka nilai n3akan jauh lebih besar daripada n2, n log n dan n sehingga n3 mendominasi
T(n). Waktu eksekusi T(n)secara garis besar mempunyai order n3 dan notasinya ditulis
sebagai O(n3).
Dua metode lain yang dikenal adalah Ω (n) untuk menyatakan batas bawah asimtotik
dan Ɵ(n) untuk menyatakan tight bound asymptotic. Secara formal T(n) didefinisikan sebagai
berikut: T(n) = O(f(n)) jika terdapat konstanta c dan n0 sedemikian rupa sehingga T(n) < c *
f(n) untuk n >n0. Ini berarti bahwa untuk n >n0 maka c * f(n) merupakan batas atas dari T(n).
Sebagai contoh, jika T(n) = 1000n dan f(n) = n2, n0 = 1000 dan c = 1 maka T(n) ≤ 1 * f(n)
untuk n > 1000 dan dikatakan bahwa T(n) = O(f(n)).

Universitas Sumatera Utara

16
Notasi Big O adalah cara yang sangat menyenangkan untuk menyajikan skenario
keadaanterjelek suatu algoritma, meskipun ia juga dapat digunakan untuk menyajikan kasus
rerata. Sebagai contoh, skenario kasus terjelek quick sort adalah O(n2), tetapi rerata waktu
eksekusinya adalah O(n log n).

2.5 Penelitian yang Relevan
Berikut ini beberapa penelitian yang terkait dengan Algoritma Turbo Boyer Moore dan String
Matching on Ordered Alphabets :
1. Vina Sagita, Maria Irmina Prasetiyowati (2013) dalam jurnal yang berjudul studi
perbandingan implementasi algoritma boyer moore, turbo boyer moore dan tuned
boyer moore dalam pencarian string. Menyatakan bahwa algoritma Turbo Boyer
Moore merupakan algoritma tercepat kedua dari ketiga varian algoritma tersebut.
2. Rizal (2015) dalam jurnal yang berjudul permainan tebak kata bahasa aceh
menggunakan algoritma turbo boyer moore. Menyatakan bahwa pencocokan string
yang diterapkan pada aplikasi permainan tebak kata bahasa aceh berhasil diterapkan
dan menghasilkan pencocokan yang sesuai dengan yang di harapkan. Algoritma
Turbo Boyer Moore melakukan pencocokan dengan sangat cepat.
3. Priskila Ifke Goni (2013) dalam skripsi yang berjudul penerapan algoritma turbo
boyer moore untuk pendeteksian kemiripan dokumen berbasis android. Menyatakan
bahwa dalam proses pendeteksian, Algoritma Turbo Boyer Moore dijadikan sebagai
string (pattern) matching. Berdasarkan dokumen yang diuji kinerja dari algoritma
Turbo Boyer Moore bergantung pula pada hasil akhir dari tahap preprocessing yakni
tahap tokenizing dan tahap filtering.

Universitas Sumatera Utara