Analisis Dan Perbandingan Algoritma Maximal Shift Dengan Algoritma Quick Search Pada Aplikasi Kamus Farmakologi

BAB 2

TINJAUAN PUSTAKA

2.1.

Algoritma

Algoritma ditemukan oleh seorang ahli matematika dari Uzbekistan, yang bernama
Abu Ja’far Muhammad Ibnu Al-Kwarizmi (770-840). Dalam bukunya yang berjudul
“Al-Jabr W’al Muqabala”, beliau telah menjelaskan langkah-langkah dalam
penyelesaian berbagai persoalan aritmatika. Kata “Algoritma”, kemungkinan diambil
dari kata “Al-Kwarizmi” yang kemudian berubah menjadi “Algorizm”, selanjutnya
panggilan ini dipakai untuk menyebut konsep “Algorithm” yang ditemukan (Munir,
2007).
Algoritma adalah prosedur komputasi yang terdefinisi dengan baik yang
menggunakan beberapa nilai sebagai masukan dan menghasilkan beberapa nilai yang
disebut keluaran. Jadi, algoritma adalah deretan langkah komputasi yang
mentransformasikan masukan menjadi keluaran (Munir, 2007). Tujuan algoritma
memberikan petunjuk tentang langkah-langkah logika penyelesaian permasalahan
dalam bentuk yang mudah dipahami nalar manusia sebagai acuan yang membantu

dalam mengembangkan program komputer. Pemahaman tentang algoritma akan
mencegah sejak dini kemungkinan terjadinya kesalahan logika pada program
komputer yang dikembangkan. Untuk mencapai tujuan diatas terdapat lima syarat
yang harus dipenuhi dalam algoritma menurut (Sutanta, 2004).
1. Logika prosedur pada algoritma harus cukup mudah dipahami nalar manusia.
2. Validitas prosedur pada algoritma dapat ditelusuri dengan mudah.
3. Tidak menimbulkan kerancuan interpretasi bagi orang lain.
4. Prosedur pada algoritma harus cukup mudah dikonversi ke program komputer.
5. Prosedur

pada

algoritma

tidak

terpengaruh/bergantung

pada


bahasa

pemrograman apapun.
Algoritma harus mempunyai lima ciri penting menurut (Munir, 2007) :

Universitas Sumatera Utara

1. Algoritma harus berhenti setelah mengerjakan sejumlah langkah terbatas.
Sebagai contoh, tinjau kembali algoritma Euclidean. Pada langkah 1, jika n=0,
algoritma berhenti. Jika n≠0, maka nilai n selalu berkurang sebagai akibat
langkah 2 dan 3, dan pada akhirnya nilai n=0. Program yang tidak pernah
berhenti mengindikasikan bahwa program tersebut berisi algoritma yang salah.
2. Setiap langkah harus didefinisikan dengan tepat dan tidak berarti dua
(ambiguous). Pembaca harus mengerti apa yang dimaksud dengan “m dan n
adalah bilangan bulat tak-negatif”. Contoh pernyataan, “bagilah p dengan
sejumlah beberapa buah bilangan bulat positif” dapat bermakna ganda.
Berapakah yang dimaksud dengan “berapa”?. Algoritma menjadi jelas jika
langkah tersebut ditulis “bagilah p dengan 10 buah bilangan positif ”.
3. Algoritma memiliki nol atau lebih masukan (input). Masukan ialah besaran
yang diberikan kepada algoritma untuk diproses. Algoritma Euclidean

mempunyai dua buah masukan, m dan n.
4. Algoritma mempunyai nol atau lebih keluaran (output). Keluaran dapat berupa
pesan atau besaran yang memiliki hubungan dengan masukan.
5. Algoritma harus sangkil (effective). Setiap langkah harus sederhana sehingga
dapat dikerjakan dalam sejumlah waktu yang masuk akal.
Berdasarkan ciri algoritma yang dipaparkan oleh Donald Knuth dan defenisi algoritma
maka dapat disimpulkan sifat utama suatu algoritma (Suarga, 2006) yaitu :
1. Input : Suatu algoritma memiliki input atau kondisi awal sebelum algoritma
dilaksanakan dan bisa berupa nilai-nilai pengubah yang diambil dari himpunan
khusus.
2. Output : Suatu algoritma menghasilkan output setelah dilaksanakan, atau
algoritma akan mengubah kondisi awal menjadi kondisi akhir, dimana nilai
output diperoleh dari nilai input yang telah diproses melalui algoritma.
3. Definiteness : Langkah-langkah yang dituliskan dalam algoritma terdefinisi
dengan jelas sehingga mudah dilaksana oleh penggunaan algoritma.
4. Finiteness : Suatu algoritma harus memberi kondisi akhir atau output setelah
melakukan sejumlah langkah yang terbatas jumlahnya untuk setiap kondisi
awal atau input yang diberikan.

Universitas Sumatera Utara


5. Effectiveness : Setiap langkah dalam algoritma bisa dilaksanakan dalam suatu
selang waktu tertentu sehingga pada akhirnya memberi solusi sesuai yang
diharapkan.

2.2. Konsep Algoritma
Penyelesain permasalahan dengan menggunakan alat bantu sistem komputer paling
tidak akan melibatkan lima tahapan, yaitu:
1. Analisis masalah.
2. Merancang algoritma.
3. Membuat program komputer.
4. Menguji hasil program komputer.
5. Dokumentasi.
Tahapan-tahapan tersebut dapat dikelompokan menjadi dua, yaitu fase penyelesaian
permasalahan (problem solving phase) dan fase implementasi (implementasi phase).
Langkah pertama, yaitu analisis masalah merupakan langkah paling awal untuk
mengetahui lebih jauh tentang permasalahan yang akan diselesaikan dengan
menggunakan alat bantu komputer. Langkah kedua, yaitu merancang algoritma
dilakukan dengan tujuan utama sebagai berikut (Sutanta, 2004).
a. Menentukan ide solusi.

b. Menyatakan algoritma.
c. Memvalidasi algoritma.
d. Menganalisis algoritma.
Validasi algoritma diperlukan untuk menguji validasi prosedur yang telah dinyatakan
dalam algoritma terhadap seluruh kemungkinan data yang di input. Sedangkan analisis
algoritma dimaksudkan untuk mengetahui tingkat efisiensi proses dalam algoritma,
yang berkaitan dengan efisiensi waktu dan efisiensi penggunaan memori dalam sistem
komputer.

Universitas Sumatera Utara

2.3.

String Matching

String matching adalah sebuah subjek yang banyak digunakan dalam lingkup
pencarian teks. Algoritma-algoritma string matching menjadi komponen dasar yang
diaplikasi pada berbagai piranti lunak dan dapat ditemukan pada hampir semua
jenis sistem operasi (Charras & Lecroq, 1997). Selain itu, algoritma-algoritma string
matching mempengaruhi metode pemrograman yang menjadi pola/acuan dalam

bidang lainnya di computer science (baik sistem maupun perancangan piranti lunak).
Algoritma-algoritma string matching juga mempunyai

perubahan penting dalam

lingkup teori computer science dengan menyediakan tantangan-tantangan dan
permasalahan-permasalahan untuk dipecahkan.
Secara umum, String Matching merupakan proses pencarian kata (pattern) dalam
sebuah kalimat teks (string), String matching bisa untuk menemukan satu pattern
yang pertama kali ditemukan, atau yang lebih umum menampilkan semua pattern
yang dapat ditemukan dalam teks (Charras & Lecroq, 1997). Jenis string matching
bermacam-macam, dibedakan menurut hasil yang diinginkan. Yang akan dibahas
pada tulisan ini adalah Exact String Matching, Artinya pencarian yang dilakukan
untuk menemukan sebuah substring/pattern yang tepat sama dalam sebuah
string/text. Pattern dilambangkan

dengan P=P[O...m-1], yang mana m adalah

panjang dari pattern tersebut atau bisa disebut P:Length. Teks dilambangkan
dengan T=IIO ...n-1], yang mana n adalah panjang dari teks atau bisa disebut

I:Length. String Matching dirumuskan sebagai berikut:
x = x[0…m-1]
y = y[0…n-1]
Dimana :

x adalah pattern
m adalah panjang pattern
y adalah teks
n adalah panjang teks

Kedua string terdiri dari sekumpulan karakter yang disebut alfabet yang dilambangkan
dengan ∑ (sigma) dan mempunyai ukuran σ (tao). String matching dibagi menjadi
dua, yakni exact matching dan heuristic atau statistical matching (Sarno, et al, 2012).

Universitas Sumatera Utara

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
kalimat pertama mengandung kata “pelajar” sedangkan kalimat kedua tidak, meskipun

kenyataannya pelajar dan siswa adalah kata yang bersinonim (Sarno, et al, 2012).
Cara kerja algoritma Exact String Matching adalah sebagai berikut: Posisi awal
pencarian adalah pada ujung kiri (karakter pertama) dari P atau T, lalu karakter pada
posisi tertentu di T dibandingkan dengan karakter pada P, bagian ini biasa disebut
dengan pattern, dan setelah seluruh perbandingan telah dilakukan atau ditemukan
ketidaksamaan maka P akan digeser ke kanan. Prosedur ini dilakukan berulang-ulang
sampai ujung kanan P bertemu dengan ujung kanan T. Setiap pattern dengan posisi i
pada T terjadi ketika P berada pada posisi

m-1. Berdasarkan arah pemeriksaan

karakter, metode yang digunakan dikelompokkan menjadi (Cahyo, 2007):
1. Metode pembacaan berawal dari posisi kiri mengarah ke kanan, salah satu
contohnya adalah algoritma Knut-Morris-Pratt. Metode ini tergolong alamiah
karena sesuai dengan arah pembacaan biasa dan memiliki karakteristik seperti
proses pada automata.
2. Metode pembacaan berawal dari posisi kanan mengarah ke kiri, misalnya
algoritma Boyer-Moore. Metode ini umumnya menghasilkan algoritma yang
sederhana dan dianggap paling mangkus.
3. Metode pencarian dengan aturan tertentu, salah satunya adalah pencarian dua

arah yang diawali dengan kemunculan algoritma dua jalur yang dicetuskan
oleh Crochemore-Perrin. Metode ini melakukan dua jenis pencarian, yang
pertama adalah mencari bagian kanan pola dari kiri ke kanan, dan jika tidak
ada ketidakcocokan, pencarian dilanjutkan dengan bagian kiri.
4. Metode yang tidak memiliki suatu pola tertentu, biasanya algoritma ini
menggunakan sebagian metode dari algoritma pada tiga kelompok di atas yang
dikombinasikan dengan metode lain, contohnya adalah algotima quick search.

Universitas Sumatera Utara

String matching adalah pencarian sebuah pattern pada sebuah teks. Prinsip kerja
algoritma string matching adalah sebagai berikut (Effendi, et al, 2013):
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 shift 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, et al, 2013),

yaitu:
1. Pattern, yaitu deretan karakter yang akan dicocokkan dengan teks, dinyatakan
dengan x[0..m-1], panjang pattern dinyatakan dengan m.
2. Teks, yaitu tempat pencocokan pattern dilakukan, dinyatakan dengan y[0..n1], panjang teks dinyatakan dengan n.
3. Alfabet, yang berisi semua simbol yang digunakan oleh bahasa pada teks dan
pattern, dinyatakan dengan ∑ dengan ukuran dinyatakan dengan ASIZE.

2.4.

Algoritma Maximal Shift

Algoritma Maximal Shift adalah algoritma yang mencari pola dalam teks dengan cara
pola dicari dari karakter yang memiliki nilai minShift yang terbesar hingga minShift
yang terkecil. Sunday merancang sebuah algoritma dimana karater pola yang satu
akan menyebabkan pergeseran yang lebih besar dan yang satu lainnya menyebabkan
pergeseran yang lebih pendek. Tahapan proses dari algoritma Maximal shift terdiri
dari memilah karakter pola dalam urutan penurunan pergeseran, membangun badcharaters shift dan fungsi good-suffix Shif. Fungsi tersebut disesuaikan dengan urutan
scanning karakter pola, (Charras & Lecroq, 2004). Langkah-langkah proses algoritma
Maximal Shift yaitu:


Universitas Sumatera Utara

Proses pertama adalah prosedur perhitungan nilai minShift karakter pola yang akan
digunakan untuk proses pengurutan. Dapat dilihat pada Tabel 2.1.
.
Tabel 2.1 Menentukan Nilai MinShift pada Contoh.
i

0

1

2

3

4

5

6

7

x[i]

G

C

A

G

A

G

A

G

minShift[i]

1

2

3

3

2

2

2

2

Proses kedua adalah orderPattern yang digunakan untuk mengurutkan karakter pada
pola dari nilai minShift tertinggi hingga terkecil pada pola. Jika menemukan karakter
yang memiliki nilai minShift yang sama maka pengurutan didasarkan pada posisi
pencarian dari kanan ke kiri, yaitu posisi karakter yang di temukan dahulu diurutkan
lebih awal. Seperti pada Tabel 2.2.

Tabel 2.2 OrdernPattern Maximal Shift pada Contoh.
I

0

1

2

3

4

5

6

7

Pat[i].loc

3

2

7

6

5

4

1

0

Pat[i].c

G

A

G

A

G

A

C

G

Proses ketiga adalah preQsBc yang mengitung nilai qsBc pada tiap-tiap karakter yang
selanjutnya nilai tersebut kemungkinan akan digunakan untuk pergeseran pola dengan
cara menetukan posisi karakter dalam pola dari kanan ke kiri dan jika ada karakter
sama dalam pola maka posisi karakter yang pertama ditemukan yang dicatat. Seperti
pada Tabel 2.3.
Tabel 2.3 Perhitungan preqsBc pada Contoh
c

A

C

G

T

qsBc[c]

2

7

1

9

Universitas Sumatera Utara

Proses keempat adalah preAdatedGs yang menghitung nilai pada tiap posisi dan
kemudian nilai inilah yang kemungkinan akan digunakan untuk pergeseran pada pola.
Dapat dilihat pada Tabel 2.4.

Tabel 2.4 Perhitungan adaptedGs pada Contoh.
i

0

1

2

3

4

5

6

7

adaptedGs[i]

1

3

3

7

4

7

7

7

Universitas Sumatera Utara

Gambar 2.1 Tahap pencarian algoritma Maximal Shift.

2.5.

Algoritma Quick Search

Menurut (Sunday, 1990) algoritma Quick Search adalah algoritma yang paling
sederhana dimana perbandingan yang dilakukan secara ketat dari kiri ke kanan
(Stephen, 1994). Algoritma Quick Search ini mencari data secara berurut pada tiap
karater dalam teks sehingga pencarian disebut pencarian sekuensial atau sequential
search. Algoritma Quick Search mencari pola karakter berdasarkan nilai Quick
Search-bad character atau qsBc (Handik, 2006).

[ ]

{

{

[

]

}

}

Proses pertama yang dilakukan adalah mencari nilai Quick Search-bad character atau
qsBc yang digunakan untuk proses pergeseran. Seperti pada Tabel 2.5.

Tabel 2.5 Perhitungan preQsBc pada Contoh QS
C

A

C

G

T

qsBc[c]

2

7

1

9

Langkah-langkah pencarian dengan algoritma Quick Search.
1. Pertama dihitung selisih panjang pola dan panjang teks.
2. Proses pencarian dimulai dengan mencocokkan karakter pola pertama dengan
karakter teks pertama.

Universitas Sumatera Utara

3. Jika terjadi kecocokkan maka pencarian diteruskan dengan mencocokkan
karakter pola selanjutnya dengan karakter pada teks.
4. Jika semua pola ditemukan maka dianggap telah menemukan ouput string
yang dicari.
5. Jika ada ketidakcocokkan maka terjadi perhitungan qsBc, dari hasil
perhitungan qsBc akan digunakan untuk pergeseran, pergeseran terus terjadi
hingga jumlah pergeseran lebih besar dibandingan selisih panjang teks dengan
panjang pola.

Universitas Sumatera Utara

Gambar 2.2 Tahap pencarian algoritma Quick Search

2.6.

Kompleksitas Algoritma

Kompleksitas dari suatu algoritma merupakan ukuran seberapa banyak komputasi
yang dibutuhkan algoritma tersebut untuk menyelesaikan masalah. Algoritma yang
dapat menyelesaikan suatu permasalahan dalam waktu yang singkat memiliki
kompleksitas yang rendah, sementara algoritma membutuhkan waktu yang lama untuk
menyelesaikan masalahnya mempunyai kompleksitas yang tinggi. Kompleksitas
algoritma terdiri dari dua macam yaitu kompleksitas waktu dan kompleksitas ruang
(Azizah, 2013).
Kompleksitas waktu dinyatakan oleh T(n), diukur dari jumlah tahapan komputasi yang
dibutuhkan untuk menjalankan sebagai fungsi dari ukuran masukan n, dimana ukuran
masukan (n) merupakan jumlah data yang diproses oleh algoritma. 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.6.1. Notasi Asimptotik
Untuk nilai n cukup besar, bahkan tidak terbatas, dilakukan analisis efisiensi
asimptotik dari suatu algoritma untuk menentukan kompleksitas waktu yang sesuai
atau disebut juga kompleksitas waktu asimptotik. Notasi yang digunakan untuk
menentukan kompleksitas waktu asimptotik dengan melihat waktu tempuh (running
time). Kompleksitas waktu asimptotik terdiri dari tiga macam yaitu (Lavitin, 2011):
1. Keadaan terbaik (best case) dinotasikan dengan

Big-Omega.

2. Keadaan rata-rata (everage case) dilambangkan dengan notasi

Big-

theta.

Universitas Sumatera Utara

3. Keadaan terburuk (worsh case) dilambangkan dengan notasi (

) Big-O.

Gambar 2.3 Contoh Grafik Notasi Asimptotik Ω.
Gambar 8.3 menunjukan notasi Ω menjadi batas bawah dari suatu fungsi
berada dalam suatu faktor konstan. Dinyatakan
konstanta positif

dan

selalu berada tepat pada

sedemikian sehingga pada
atau diatas

agar

jika terdapat
dan dikanan

, nilai

(Lavitin, 2011).

Gambar 2.4 Contoh Grafik Notasi Asimptotik .

Gambar 8.4 menunjukan notasi

membatasi suatu fungsi

faktor konstan. Dinyatakan dengan

agar berada dalam

jika terdapat konstanta positif

Universitas Sumatera Utara

,

, dan

sedemikian sehingga pada

tepat pada

, tepat pada

dan di kanan

, atau diantara

, nilai

selalu berada

dan

.

Gambar 2.5 Contoh Grafik Notasi Asimptotik .

Gambar 8.5 menunjukan noatsi

menjadi batas atas dari suatu fungsi

berada dalam suatu faktor konstan. Dinyatakan dengan
konstanta positif

, dan

selalu berada tepat pada

sedemikian sehingga pada
, atau dibawah

biasa dihitung dengan menggunakan notasi

agar

jika terdapat
dan di kanan

, nilai

. Kompleksitas waktu algoritma
, dibaca

dari

(Lavitin, 2011).

Universitas Sumatera Utara

2.7.

Farmakologi

Farmakologi adalah ilmu yang mempelajari tentang obat, bertujuan agar dapat
menggunakan obat untuk pencegahan, diagnosis, dan pengobatan penyakit. Prinsip
farmakologi adalah molekul obat harus dapat mempengaruhi secara kimia satu atau
lebih isi sel agar mengahasilkan respons farmakologi. Cabang-cabang farmakologi
mencakup (Susanti & Kumala, 2011) :
1. Farmakoqnosi adalah ilmu yang mempelajari tentang sifat-sifat tumbuhan dan
bahan lain yang merupakan sumber obat.
2. Farmasi

adalah

ilmu

yang

mempelajari

tentang

cara

membuat,

memformulasikan, menyimpan dan menyediakan obat.
3. Farmakologi klinik adalah ilmu yang mempelajari tentang efek obat pada
manusia.
4. Farmakokinetika adalah ilmu yang mempelajari tentang nasib obat dalam
tubuh yaitu absorpsi, distribusi, metabolisme, dan ekskresinya.
5. Farmakodinamika adalah ilmu yang mempelajari tentang efek obat terhadpa
fisiologi dan biokimia berbagai organ tubuh mekanisme kerjanya.
6. Toksikologi adalah ilmu yang mempelajari tentang keracunan zat kimia
termasuk obat.

Universitas Sumatera Utara