Perbandingan Algoritma Boyer-Moore Dan Algoritma Rabin Karp Pada Pencarian Teks Dalam Undang Undang Perlindungan Anak
6
BAB II
LANDASAN TEORI
2.1 Anak
Anak adalah seseorang yang belum berusia 18 (delapan belas) tahun, termasuk anak yang
masih dalam kandungan (Mona, 2015). Anak merupakan tunas sebuah bangsa. Kemajuan
sebuah banngsa bergantung pada kualitas anak-anak pada bangsa itu sendiri. Agar anak kelak
mampu memikul tanggung jawab tersebut, maka perlu mendapat kesempatan yang seluasluasnya untuk tumbuh dan berkembang secara optimal, baik fisik, mental maupun sosial.
2.2 Android
Android adalah 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, 2015).
2.3 Sejarah Android
Pada awal mula sejarah android, Google Inc. membeli Android Inc. yang merupakan
pendatang baru yang membuat piranti lunak untuk ponsel/smartphone. Kemudian untuk
mengembangkan Android, dibentuklah Open Handset Alliance, konsorsium dari 34
perusahaan piranti keras, piranti lunak, dan telekomunikasi, termasuk Google, HTC, Intel,
Motorola, Qualcomm, T-Mobile, dan Nvidia.
Pada saat perilisan perdana android, 5 November 2007, Android bersama Open
Handset Alliance menyatakan mendukung pengembangan open source pada perangkat
mobile. Di lain pihak, Google merilis kode-kode Android di bawah lisensi Apache, sebuah
lisensi perangkat lunak dan open platform perangkat seluler.
Sekitar September 2007 Google mengenalkan Nexus One, salah satu jenis
smartphone yang menggunakan Android sebagain sistem operasinya. Telepon seluler ini
diproduksi oleh HTC Corporation dan tersedia dipasaran pada 5 Januari 2010. Pada 9
Desember 2008, diumumkan anggota baru yang bergabung dalam program kerja Android
ARM Holdings, Atheros Communications, diproduksi oleh Asustek Computer Inc, Garmin
Universitas Sumatera Utara
7
Ltd, Softbank, Sony Ericsson, Toshiba Corp, dan Vodafone Group Plc. Seiring pembentukan
Open Handset Alliance, OHA mengumumkan produk perdana mereka, Android, perangkat
mobile yang merupakan modifikasi kernel Linux 2.6. Sejak Android dirilis telah dilakukan
berbagai pembaruan berupa perbaikan bug dan penambahan fitur baru.
Tidak hanya menjadi sistem operasi di smartphone, saat ini Android menjadi pesaing
utama dari Apple pada sistem operasi Tablet PC. Pesatnya pertumbuhan Andoroid selain
faktor yang disebutkan di atas adalah karena Android itu sendiri adalah platform yang sangat
lengkap baik itu sistem operasinya, Aplikasi dan Tools Pengembangan, Market aplikasi
Android serta dukungan yang sangat tinggi dari komunitas Open Handset Alliance di dunia,
sehingga Android terus berkembang pesat baik dari segi teknologi maupun dari segi jumlah
device yang ada di dunia (Safaat, 2015).
2.4 Fitur Android
Sebagai platform aplikasi-netral, Android memberikan kesempatan untuk membuat aplikasi
bawaan Handphone/Smartphone. Beberapa fitur-fitur Android yang sangat penting adalah
sebagai berikut :
o Fremework aplikasi yang mendukung penggantian komponen dan reusable.
o Mesin Virtual Dalvik dioptimalkan untuk perangkat mobile
o Intregrated browser berdasarkan angine open source WebKit
o Grafis yang dioptimalkan dan didukung oleh libraries grafis 2D, grafis 3D,
berdasarkan spesifikasi opengl ES 1,0 (opsional akselerasi hardware)
o SQLite untuk penyimpanan data
o Media support yang mendukung audio, video, dan gambar (MPEG4, H.264, MP3,
AAC, AMR, JPG, PNG, GIF), GSM Telephony (tergantung hardware)
o Bluetooth, EDGE, 3G, dan WiFi (tergantung hardware)
o Kamera, GPS, kompas, dan accelerometer (tergantung hardware)
o Lingkungan Development yang lengkap dan kaya termasuk perangkat emulator, tools
untuk debugging, profil dan kinerja memori (Safaat, 2015).
Universitas Sumatera Utara
8
2.5 Versi Android
o Android versi 1.1
Pada 9 Maret 2009, Google merilisi Android versi 1.1 Android versi ini dilengkapi
dengan pembaruan estetis pada aplikasi, jam, alarm, voice search (pencarian suara),
pengiriman pesan dengan Gmail, dan pemberitahuan email.
o Android versi 1.5 (Cupcake)
Pada pertengahan Mei 2009, Google kembali merilis telepon seluler dengan
menggunakan Android dan SDK (Software Development Kit) dengan versi 1.5
(Cupcake). Terdapat beberapa pembaruan termasuk juga penambahan beberapa fitur
dalam seluler versi ini yakni kemampuan merekam dan menonton video dengan
modus kamera, mengupload video ke Youtube dan gambar ke Picasa langsung dari
telepon, dukungan bluetooth A2DP, kemampuan terhubung secara otomatis ke
headset bluetooth, animasi layar, dan keyboard pada layar yang dapat disesuikan
dengan sistem.
o Android versi 2.0/2.1 (Eclair )
Pada 3 Desember 2009 diluncurkan ponsel Android dengan versi 2.0/2.1 (Éclair ),
perubahan yang dilakukan adalah pengoptimalan hardware, peningkatan Google
Maps 3.1.2, perubahang UI dengan browser baru dan dukungan HTML5, daftar
kontak yang baru, dukungan flash untuk kamera 3,2 Mp, digital Zoom, dan bluetooth
2.1.
o Android versi 2.2 (Froyo)
Pada bulan Mei 2010 Android versi 2.2 diluncurkan. Android inilah yang sekarang
sangat banyak beredar di pasaran, salah satunya adalah dipakai di Samsung FX tab
yang sudah ada dipasaran. Fitur yang tersedia pada versi ini sudah kompleks.
o Android versi 2.3 (Gingerbread)
Android versi 2.3 ini diluncurkan pada Desember 2010.
o Android versi 3.0 ( Honeycomb)
Dirilis Februari 2011 sebagain android revisi 1 serta android revisi 2 versi 3.0 telah
dirilis pada Juli 2011.
o Android versi 4.0 (Jelly Bean)
Android Jelly Bean diluncurkan pertama kali pada Juli 2012, dengan berbasis Linux
Kerneldari Android 4.1 API Level 16, Android 4.2 API Level 17, Android 4.3 API
Universitas Sumatera Utara
9
Level 18. Penamaan mengadaptasi nama sejenis permen dalam beraneka macam rasa
buah. Ukurannya sebesar kacang merah. Permen ini keras di luar tapi lunak di dalam
serta lengket bila di gigit.
o Android versi 4.4 (KitKat)
Android 4.4 Kitkat API level 19.Google mengumumkan Android KitKat (dinamai
dengan izin Nestle dan Hershey) pada 3 september 2013. Dengan tanggal rilis 31
Oktober 2013. KitKat merupakan merk sebuah coklat yang dikeluarkan oleh Nestle.
Rilis berikutnya setelah nama KitKat diperkirakan banyak pengamat akan diberi
nomor 5.0 dan dinamai „Pie’ (Safaat, 2015).
2.6 Query
Query adalah satu atau beberapa kata atau frase / kalimat yang di masukan / di ketikan oleh
pengguna saat melakukan pencarian pada search engine (google atau search engine lainnya).
2.7 Search Engine
Mesin pencari (search engine) adalah salah satu program komputer yang di rancang khusus
untuk membantu seseorang menemukan file-file yang disimpan dalam komputer, misalnya
dalam sebuah web server umum di web atau komputer sendiri. Mesin pencari memungkinkan
kita untuk meminta content media dengan kriteria yang spesifik ( biasanya berisikan frase
atau kata yang kita inginkan) dan memperoleh daftar file yang memenuhi kriteria tersebut.
Mesin pencari biasanya menggunakan indeks untuk mencari file setelah pengguna
memasukan kriteria pencarian. Mesin pencari yang akan dibahas adalah mesin pencari khusus
yang digunakan untuk mencari informasi di dalam database lokal. Untuk memudahkan dan
mempercepat pencarian, mesin pencari mempunyai metode pencarian tertentu yang sering
disebut algoritma. Adapun struktur umum sebuah mesin pencari adalah sebagai berikut :
1. Kotak teks pencari
Kotak ini digunakan sebagai tempat memasukan kata kunci yang akan dijadikan acuan
dilakukan pencarian.
2. Tombol pencari
Tombol ini yang akan menjalankan perintah pencarian.
Universitas Sumatera Utara
10
2.8 Algoritma
Algoritma adalah merupakan jantung ilmu komputer atau informatika. Banyak cabang ilmu
komputer yang diacu dalam terminologi algoritma. Namun jangan beranggapan algoritma
selalu identik dengan ilmu komputer saja. Cara membuat kue atau masakan dalam resep
masakan, itu juga merupakan algoritma (Saniman & Fathoni 2008). Logika berasal dari dari
bahasa Yunani yaitu LOGOS yang berarti ilmu.
Logika dapat diartikan ilmu yang mengajarkan cara berpikir untuk melakukan
kegiatan dengan tujuan tertentu. Algoritma berasal dari nama seorang Ilmuwan Arab yang
bernama Abu Jafar Muhammad Ibnu Musa Al Khuwarizmi penulis buku berjudul Al Jabar
Wal Muqabala. 2 Kata Al Khuwarizmi dibaca orang barat menjadi Algorism yang kemudian
lambat laun menjadi Algorithm diserap dalam bahasa Indonesia menjadi Algoritma.
Algoritma dapat diartikan urutan penyelesaian masalah yang disusun secara sistematis
menggunakan bahasa yang logis untuk memecahkan suatu permasalahan (Barakbah & Ahsan
2013).
Algoritma adalah suatu himpunan berhingga dari instruksi-instruksi yang secara jelas
memperinci langkah-langkah proses pelaksanaan, dalam pemecahan suatu masalah tertentu,
atau suatu kelas masalah tertentu, dengan dituntut pula bahwa himpunan instruksi tersebut
dapat dilaksanakan secara mekanik (Barakbah & Ahsan 2013).
2.8.1 Algoritma String Matching
Pengertian string menurut Dictionary of Algorithms and Data Structures, National Institute
of Standards and Technology (NIST) adalah susunan dari karakter-karakter (angka, alfabet
atau karakter yang lain) dan biasanya direpresentasikan sebagai struktur data array. String
dapat berupa kata, frase, atau kalimat. Pencocokan string
(string matching) menurut
Dictionary of Algorithms and Data Structures, National Institute of Standards and
Technology (NIST), diartikan sebagai sebuah permasalahan untuk menemukan pola susunan
karakter string di dalam string lain atau bagian dari isi teks. Algoritma pencarian string
(String Matching) salah satu bagian terpenting dalam berbagai proses yang berkaitan dengan
data dengan tipe teks.
2.8.2 Klasifikasi Pencocokan String
Pencocokan string (string matching) secara garis besar dapat dibedakan menjadi dua yaitu (...
...):
Universitas Sumatera Utara
11
o Exact string matching, merupakan pencocokan string secara tepat dengan susunan
karakter dalam string yang dicocokkan memiliki jumlah maupun urutan karakter dalam
string yang sama. Contoh: kata step akan menunjukkan kecocokan hanya dengan kata
step.
2. Inexact string matching atau Fuzzy string matching, merupakan pencocokan string secara
samar, maksudnya pencocokan string dimana string yang dicocokkan memiliki kemiripan
dimana keduanya memiliki susunan karakter yang berbeda (mungkin jumlah atau
urutannya)
tetapi
string-string
tersebut
memiliki
kemiripan
baik
kemiripan
tekstual/penulisan (approximate string matching) atau kemiripan ucapan (phonetic string
matching). Inexact string matching masih dapat dibagi lagi menjadi dua yaitu :
a. Pencocokan string berdasarkan kemiripan penulisan (approximate string matching)
merupakan pencocokan string dengan dasar kemiripan dari segi penulisannya (jumlah
karakter, susunan karakter dalam dokumen). Tingkat kemiripan ditentukan dengan
jauh tidaknya beda penulisan dua buah string yang dibandingkan tersebut dan nilai
tingkat kemiripan ini ditentukan oleh pemrogram (programmer ). Contoh: cimpuler
dengan compiler, memiliki jumlah karakter yang sama tetapi ada dua karakter yang
berbeda. Jika perbedaan dua karakter ini dapat ditoleransi sebagai sebuah kesalahan
penulisan maka dua string tersebut dikatakan cocok.
b. Pencocokan string berdasarkan kemiripan ucapan (phonetic string matching)
merupakan pencocokan string dengan dasar kemiripan dari segi pengucapannya
meskipun ada perbedaan penulisan dua string yang dibandingkan tersebut. Contoh
step dengan steb dari tulisan berbeda tetapi dalam pengucapannya mirip sehingga dua
string tersebut dianggap cocok. Contoh yang lain adalah step, dengan steppe, sttep,
stepp, stepe. Exact string matching bermanfaat jika pengguna ingin mencari string
dalam dokumen yang sama persis dengan string masukan. Tetapi jika pengguna
menginginkan pencarian string yang mendekati dengan string masukan atau terjadi
kesalahan penulisan string masukan maupun dokumen objek pencarian, contoh
algoritma exact string matching antara lain: algoritma Boyer-Moore.
2.8.3 Algoritma Boyer-Moore
Algoritma Boyer-Moore dipublikasikan oleh Robert S. Boyer,dan J. Strother Moore pada
tahun 1977. Pencocokan karakter yang dilakukan menggunakan algoritma boyer-moore
dimulai dari string sebelah kanan pattern. Ide di balik algoritma ini ialah dengan memulai
Universitas Sumatera Utara
12
pencocokan karakter dari kanan, maka akan lebih banyak informasi yang didapat. Algoritma
Boyer Moore termasuk algoritma string matching yang paling efisien dibandingkan
algoritma-algoritma string matching lainnya. Karena sifatnya yang efisien, banyak
dikembangkan algoritma string matching dengan bertumpu pada konsep algoritma BoyerMoore (Efendi & Kurniadi 2013).
2.8.3.1 Ilustrasi Pencarian String Algortima Boyer-Moore
Teks
: OKTAVIANIPRADITA
Pattern : PRADITA
1. Mencari nilai suffix
Tabel 2.1 Suffix
i
0
1
2
3
4
5
6
X[i]
P
R
A
D
I
T
A
suffix
Cara mencari :
Pada indeks ke – 6 pada tabel suffix beri nilai dari panjang pattern yaitu “PRADITA”
mempunyai panjang karakter 7, maka tabel suffix indeks ke – 6 =7
Tabel 2.2 Proses Pencarian Suffix (a)
I
0
1
2
3
4
5
6
X[i]
P
R
A
D
I
T
A
Suffix 0
0
1
0
0
0
7
M = panjang pattern
Lalu bandingkan dari kanan ke kiri teks, indeks ke -6 dibandingkan dengan indeks ke
– 5 ( “A” banding “T”), hasil tidak sama maka beri nilai 0 pada tabel suffix
Lalu bandingkan dari kanan ke kiri teks, indeks ke -6 dibandingkan dengan indeks ke
– 4 ( “A” banding “I”), hasil tidak sama maka beri nilai 0 pada tabel suffix
Lalu bandingkan dari kanan ke kiri teks, indeks ke -6 dibandingkan dengan indeks ke
– 3 ( “A” banding “D”), hasil tidak sama maka beri nilai 0 pada tabel suffix
Lalu bandingkan dari kanan ke kiri teks, indeks ke -6 dibandingkan dengan indeks ke
– 2 ( “A” banding “A”), hasil sama maka beri tanda - pada tabel suffix
Universitas Sumatera Utara
13
Tabel 2.3 Proses Pencarian Suffix (b)
i
0
1
2
3
4
5
6
X[i]
P
R
A
D
I
T
A
suffix 0
0
-
0
0
0
7
Lalu bandingkan dari kanan ke kiri teks, indeks ke -6 dibandingkan dengan indeks ke
– 1 ( “A” banding “R”), hasil tidak sama maka beri nilai 0 pada tabel suffix
Lalu bandingkan dari kanan ke kiri teks, indeks ke -6 dibandingkan dengan indeks ke
– 0 ( “A” banding “P”), hasil tidak sama maka beri nilai 0 pada tabel suffix
Untuk mencari nilai indeks ke – 2 maka, masukkan rumus i – (i – s) = 2 – ( 2 – 1 ) = 2
–1=1:
Tabel 2.4 Proses Pencarian Suffix (c)
i
0
1
2
3
4
5
6
X[i]
P
R
A
D
I
T
A
suffix 0
0
1
0
0
0
7
S dalam rumus= jumlah berapa banyak pola yang sama pada keseluruhan teks
i dalam rumus = indeks dalam pattern yang cocok yang ingin dicari nilai suffix-nya
2. Membuat tabel BmGs
Isi semua tabel BmGs dengan nilai panjang pattern yaitu 7
Tabel 2.5 Proses Pencarian BmGs
I
0
1
2
3
4
5
6
X[i]
P
R
A
D
I
T
A
suffix
0
0
1
0
0
0
7
BmGs 7
7
7
7
7
7
7
Lakukan pengecekan apakah hasil i + i hasil = suffix :
Untuk indeks ke – 6 :
i + i hasil = suffix -> 6 + 1 = 7 , 7 = nilai suffix maka sama
Universitas Sumatera Utara
14
Tabel 2.6 Proses Pencarian BmGs (a)
i
0
1
2
3
4
5
6
X[i]
P
R
A
D
I
T
A
suffix
0
0
1
0
0
0
7
BmGs 7
7
7
7
7
7
7
Lakukan pengecekan apakah hasil i + i hasil = suffix :
Untuk indeks ke – 5 :
i + i hasil = suffix -> 5 + 1 = 6, 6 tidak sama nilai suffix maka sama
Tabel 2.7 Proses Pencarian BmGs (b)
i
0
1
2
3
4
5
6
X[i]
P
R
A
D
I
T
A
suffix
0
0
1
0
0
0
7
BmGs 7
7
7
7
7
7
7
Lakukan pengecekan apakah hasil i + i hasil = suffix :
Untuk indeks ke – 4 :
i + i hasil = suffix -> 4 + 1 = 5, 5 tidak sama nilai suffix maka sama
Tabel 2.8 Proses Pencarian BmGs (c)
i
0
1
2
3
4
5
6
X[i]
P
R
A
D
I
T
A
suffix
0
0
1
0
0
0
7
BmGs 7
7
7
7
7
7
7
Lakukan pengecekan apakah hasil i + i hasil = suffix :
Untuk indeks ke – 3 :
i + i hasil = suffix -> 3 + 1 = 4, 4 tidak sama nilai suffix maka sama
Tabel 2.9 Proses Pencarian BmGs (d)
i
0
1
2
3
4
5
6
X[i]
P
R
A
D
I
T
A
suffix
0
0
1
0
0
0
7
BmGs 7
7
7
7
7
7
7
Lakukan pengecekan apakah hasil i + i hasil = suffix :
Universitas Sumatera Utara
15
Untuk indeks ke – 2 :
i + i hasil = suffix -> 2 + 1 = 3, 3 tidak sama nilai suffix maka sama
Tabel 2.10 Proses Pencarian BmGs (e)
I
0
1
2
3
4
5
6
X[i]
P
R
A
D
I
T
A
suffix
0
0
1
0
0
0
7
BmGs 7
7
7
7
7
7
7
Lakukan pengecekan apakah hasil i + i hasil = suffix :
Untuk indeks ke – 1 :
i + i hasil = suffix -> 1 + 1 = 2, 2 tidak sama nilai suffix maka sama
Tabel 2.11 Proses Pencarian Bmgs (f)
I
0
1
2
3
4
5
6
X[i]
P
R
A
D
I
T
A
suffix
0
0
1
0
0
0
7
BmGs 7
7
7
7
7
7
7
Lakukan pengecekan apakah hasil i + i hasil = suffix :
Untuk indeks ke – 0 :
i + i hasil = suffix -> 0 + 1 = 1, 1 tidak sama nilai suffix maka sama
Tabel 2.12 Proses Pencarian BmGs (g)
i
0
1
2
3
4
5
6
X[i]
P
R
A
D
I
T
A
suffix
0
0
1
0
0
0
7
BmGs 7
7
7
7
7
7
7
Masukkan rumus untuk mencari batas pencarian perhitungan nilai Bmgs :
M – 1 - i = 7 – 1 - 6 = 0 sebagai batas pertama
Karena hanya terdapat 1 saja nilai pencocokan suffix maka perhitungan di atas
selesai
Jika terdapat satu atau lebih lagi pencocokan nilai suffix yang sama maka lakukan
perhitungan dengan rumus m – 1 – i untuk batas selanjutnya. Karena tidak ada
untuk batas selanjutnya, maka :
Universitas Sumatera Utara
16
Mulai menghitung untuk mengetahui batas kedua M - 2 = 7 - 2 = 5, yang artinya
menghitung nilai untuk pencarian tabel Bmgs nya dimulai dari indeks ke – 0
sampai indeks ke – 5.
Lalu masukkan rumus M - 1 – suffix-i = 0 -7 – 1 – 0 = 6 -> artinya indeks yang
ingin diisi dengan nilai Bmgs
-M – 1 – i = 7 – 1 – 0 = 6 -> niali Bmgs yang akan diisi pada indeks 6 , maka ubah
nilai indeks ke – 6 menjadi 6
Tabel 2.13 Proses Pencarian BmGs (h)
I
0
1
2
3
4
5
6
X[i]
P
R
A
D
I
T
A
suffix
0
0
1
0
0
0
7
BmGs 7
7
7
7
7
7
6
i=1
M – 1 – suffix = 7 – 1 – 0 = 6 -> artinya indeks yang ingin diisi dengan nilai Bmgs
M – 1 – i = 7 – 1 – 1 = 5 -> nilai Bmgs yang akan diisi pada indeks 6 , maka ubah
nilai indeks ke – 6 menjadi 5
Tabel 2.14 Proses Pencarian BmGs (i)
I
0
1
2
3
4
5
6
X[i]
P
R
A
D
I
T
A
suffix
0
0
1
0
0
0
7
BmGs 7
7
7
7
7
7
5
i=2
M – 1 – suffix = 7 – 1 – 1 = 5 -> artinya indeks yang ingin diisi dengan nilai Bmgs
M – 1 – i = 7 – 1 – 2 = 4 -> nilai Bmgs yang akan diisi pada indeks 5 , maka ubah
nilai indeks ke – 5 menjadi 4
Universitas Sumatera Utara
17
Tabel 2.15 Proses Pencarian BmGs (j)
I
0
1
2
3
4
5
6
X[i]
P
R
A
D
I
T
A
suffix
0
0
1
0
0
0
7
BmGs 7
7
7
7
7
4
5
i=3
M – 1 – suffix = 7 – 1 – 0 = 6 -> artinya indeks yang ingin diisi dengan nilai Bmgs
M – 1 – i = 7 – 1 – 3 = 3 -> nilai Bmgs yang akan diisi pada indeks 6 , maka ubah
nilai indeks ke – 6 menjadi 3
Tabel 2.16 Proses Pencarian BmGs (k)
I
0
1
2
3
4
5
6
X[i]
P
R
A
D
I
T
A
suffix
0
0
1
0
0
0
7
BmGs 7
7
7
7
7
4
3
i=4
M – 1 – suffix = 7 – 1 – 0 = 6 -> artinya indeks yang ingin diisi dengan nilai Bmgs
M – 1 – i = 7 – 1 – 4 = 2 -> nilai Bmgs yang akan diisi pada indeks 6 , maka ubah
nilai indeks ke – 6 menjadi 2
Tabel 2.17 Proses Pencarian BmGs (l)
I
0
1
2
3
4
5
6
X[i]
P
R
A
D
I
T
A
suffix
0
0
1
0
0
0
7
BmGs 7
7
7
7
7
4
2
i=5
M – 1 – suffix = 7 – 1 – 0 = 6 -> artinya indeks yang ingin diisi dengan nilai Bmgs
M – 1 – i = 7 – 1 – 5 = 1 -> nilai Bmgs yang akan diisi pada indeks 6 , maka ubah
nilai indeks ke – 6 menjadi 1
Universitas Sumatera Utara
18
Tabel 2.17 Proses Pencarian BmGs (m)
I
0
1
2
3
4
5
6
X[i]
P
R
A
D
I
T
A
suffix
0
0
1
0
0
0
7
BmGs 7
7
7
7
7
4
1
3. Pembuatan tabel BmBc
Tabel 2.19 BmBc
I
0
1
2
3
4
5
6
X[i]
P
R
A
D
I
T A
Isi indeks paling akhir dengan tanda bintang (*) dan isi tabel akhir dengan panjang
pattern 7
Tabel 2.20 Proses Pencarian BmBc (a)
X[i]
P R A D I T *
BmBc
7
Mencari batas pencarian nilai BmBc denga rumus M -2 = 7 – 2 = 5, berarti sampai
indeks ke – 5
Melakukan pencarian nilai BmBc sampai i = 5 dengan rumus M – 1 – i
7 – 1 – 0 = 6, untuk indeks ke - 0 (i = 0)
7 – 1 – 1 = 5, untuk indeks ke - 1 (i = 1)
7 – 1 – 2 = 4, untuk indeks ke - 2 (i = 2)
7 – 1 – 3 = 3, untuk indeks ke - 3 (i = 3)
7 – 1 – 4 = 2, untuk indeks ke - 4 (i = 4)
7 – 1 – 5 = 5, untuk indeks ke - 5 (i = 5)
Tabel 2.21 Proses Pencarian BmBc (b)
X[i]
P R A D I T *
BmBc
6
5
4
3
2
1
7
Universitas Sumatera Utara
19
4. Melakukan pencocokan string :
Tabel 2.22 Proses Pencocokan String
0
1
2
3
4
5 6
7
8 9 10 11 12 13 14 15
O K T A V I
A N I
0 1
6
2
3
4 5
P R A D I
P R
A
D
I
T
A
T A
Lihat nilai BmBc pada tabel atas, yaitu “I” = 2
Masukkan rumus : 2 – (M+1+i) = 2 – (7+1+5) = -11
Lihat nilai BmGs untuk tabel kedua yaitu “T” = 4
Bandingakan nilai -11 dan 4, ambil nilai yang paling besar yaitu 4 untuk
pergeseran
Tabel 2.23 Proses Pencocokan String (a)
0
1
2
3
4
5 6
O K T A V I
0 1
7
8 9 10 11 12 13 14 15
A N I
2
3
P R
4 5
P R A D I
A
D
I
T
A
6
T A
Lihat nilai BmBc pada tabel atas, yaitu “R” = 5
Masukkan rumus : 5 – (M+1+i) = 5 – (7+1+10) = -18
Lihat nilai BmGs untuk tabel kedua yaitu “A” = 1
Bandingakan nilai -18 dan 1, ambil nilai yang paling besar yaitu 1 untuk
pergeseran selanjutnya
Tabel 2.24 Proses Pencocokan String (b)
0
1
2
3
4
5 6
O K T A V I
0 1
7
8 9 10 11 12 13 14 15
A N I
2
3
P R
4 5
P R A D I
A
D
I
T
A
6
T A
Lihat nilai BmBc pada tabel atas, yaitu “R” = 5
Masukkan rumus : 5 – (M+1+i) = 5 – (7+1+5) = -13
Lihat nilai BmGs untuk tabel kedua yaitu “T” = 4
Universitas Sumatera Utara
20
Bandingakan nilai -13 dan 4, ambil nilai yang paling besar yaitu 4 untuk
pergeseran selanjutnya
Tabel 2.25 Proses Pencocokan String (c)
0
1
2
3
4
5
6
7
8
9
10 11 12 13
14
15
O K T A V I A
N
I
P
R
T
A
A
D
I
0
1
2
3
4
5
6
P
R
A
D
I
T
A
5. Selesai
2.8.4 Algoritma Rabin-Karp
Algorima Rabin-Karp menggunakan metoda hash dalam mencari suatu kata. Algoritma ini
dibuat oleh Michael O. Rabin dan Richard M. Karp. Teori ini jarang digunakan untuk
mencari kata tunggal, namun teori ini cukup penting dan sangat efektif bila digunakan untuk
mencari lebih dari satu kata (Andres & Saloko 2010)
2.8.5 Hashing
Algoritma Rabin-Karp ini tidak melakukan pergeseran yang rumit untuk menyelesaikan
masalah, algoritma ini mempercepat pengecekan kata pada suatu teks dengan menggunakan
fungsi hash. Fungsi hash adalah fungsi yang mengkonversikan suatu kata menjadi nilai yang
disebut nilai hash (hashvalue). Contohnya seperti hash(“PRADITA”)=9853. Rabin-Karp
memiliki fakta bahwa jika suatu kata adalah sama maka nilai hash-nya juga sama. Jadi kita
dapat melihat bahwa yang perlu kita lakukan adalah mencari nilai hash dari kata yang kita
punya kemudian mencari kata dalam teks yang mempunyai nilai hash yang sama
(Atmopawiro, 2014).
2.8.5.1 Ilustrasi Pencarian String Algoritma Rabin-Karp
1. Menghitung nilai hash pada pola string [PRADITA] = 9853
cara menghitung hash :
Cari nilai pada tabel ASCII untuk teks “PRADITA” dan beri basis “2”, dimana teks yang
paling kiri memiliki nilai terbesar dan teks yang paling kanan memiliki nilai yang
terkecil.
Universitas Sumatera Utara
21
Tabel 2.26 Mencari Nilai Hash
P
R
A
D
I
T
A
80 82 65 68 73 84 65
26 25 24 23 22 21 20
Lakukan perhitungan nilai hash :
= 80*26 + 82*25 + 65*24 + 68*23 + 73*22 + 84*21 + 65*20
= 80*64 + 82*32 + 65*16 + 68*8 + 73*4 + 84*2 + 65*1
= 5120 + 2624 + 1040 + 544 + 292 + 168 + 65
= 9853
Lakukan hal yang sama untuk pencarian hash pada untuk teks “DIPRADITAO”
2. Memeriksa pencocokan antar string
o Langkah-1:
Tabel 2.27 Memeriksa Pencocokan String (a)
Y D I
X P
P
R A D I
R A D I
T
T A O
A
hash {Y[0 .. 6]} = 9093
o langkah-2 :
Tabel 2.28 Memeriksa Pencocokan String (b)
Y D I
X
hash {Y[1 .. 7]} =
P
R A D I
P R A D I
T
A O
T A A
9490
o langkah-3 :
Tabel 2.29 Memeriksa Pencocokan String (c)
Y
D I P R A D I T A O
X
P R A D I T A
hash {y[2 .. 8]} = 9853 cocok
Universitas Sumatera Utara
22
o langkah-4 :
Tabel 2.30 Memeriksa Pencocokan String (d)
Y
D I P R A D I
T A O
X
P
T
R A D I
A
hash {y[3 .. 9]} = 9545
3. Pada perbandingan ketiga didapatkan hasil yang sama dengan nilai hash pada string
“PRADITA” = 9853 (Carras & Thiery 2004).
Universitas Sumatera Utara
BAB II
LANDASAN TEORI
2.1 Anak
Anak adalah seseorang yang belum berusia 18 (delapan belas) tahun, termasuk anak yang
masih dalam kandungan (Mona, 2015). Anak merupakan tunas sebuah bangsa. Kemajuan
sebuah banngsa bergantung pada kualitas anak-anak pada bangsa itu sendiri. Agar anak kelak
mampu memikul tanggung jawab tersebut, maka perlu mendapat kesempatan yang seluasluasnya untuk tumbuh dan berkembang secara optimal, baik fisik, mental maupun sosial.
2.2 Android
Android adalah 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, 2015).
2.3 Sejarah Android
Pada awal mula sejarah android, Google Inc. membeli Android Inc. yang merupakan
pendatang baru yang membuat piranti lunak untuk ponsel/smartphone. Kemudian untuk
mengembangkan Android, dibentuklah Open Handset Alliance, konsorsium dari 34
perusahaan piranti keras, piranti lunak, dan telekomunikasi, termasuk Google, HTC, Intel,
Motorola, Qualcomm, T-Mobile, dan Nvidia.
Pada saat perilisan perdana android, 5 November 2007, Android bersama Open
Handset Alliance menyatakan mendukung pengembangan open source pada perangkat
mobile. Di lain pihak, Google merilis kode-kode Android di bawah lisensi Apache, sebuah
lisensi perangkat lunak dan open platform perangkat seluler.
Sekitar September 2007 Google mengenalkan Nexus One, salah satu jenis
smartphone yang menggunakan Android sebagain sistem operasinya. Telepon seluler ini
diproduksi oleh HTC Corporation dan tersedia dipasaran pada 5 Januari 2010. Pada 9
Desember 2008, diumumkan anggota baru yang bergabung dalam program kerja Android
ARM Holdings, Atheros Communications, diproduksi oleh Asustek Computer Inc, Garmin
Universitas Sumatera Utara
7
Ltd, Softbank, Sony Ericsson, Toshiba Corp, dan Vodafone Group Plc. Seiring pembentukan
Open Handset Alliance, OHA mengumumkan produk perdana mereka, Android, perangkat
mobile yang merupakan modifikasi kernel Linux 2.6. Sejak Android dirilis telah dilakukan
berbagai pembaruan berupa perbaikan bug dan penambahan fitur baru.
Tidak hanya menjadi sistem operasi di smartphone, saat ini Android menjadi pesaing
utama dari Apple pada sistem operasi Tablet PC. Pesatnya pertumbuhan Andoroid selain
faktor yang disebutkan di atas adalah karena Android itu sendiri adalah platform yang sangat
lengkap baik itu sistem operasinya, Aplikasi dan Tools Pengembangan, Market aplikasi
Android serta dukungan yang sangat tinggi dari komunitas Open Handset Alliance di dunia,
sehingga Android terus berkembang pesat baik dari segi teknologi maupun dari segi jumlah
device yang ada di dunia (Safaat, 2015).
2.4 Fitur Android
Sebagai platform aplikasi-netral, Android memberikan kesempatan untuk membuat aplikasi
bawaan Handphone/Smartphone. Beberapa fitur-fitur Android yang sangat penting adalah
sebagai berikut :
o Fremework aplikasi yang mendukung penggantian komponen dan reusable.
o Mesin Virtual Dalvik dioptimalkan untuk perangkat mobile
o Intregrated browser berdasarkan angine open source WebKit
o Grafis yang dioptimalkan dan didukung oleh libraries grafis 2D, grafis 3D,
berdasarkan spesifikasi opengl ES 1,0 (opsional akselerasi hardware)
o SQLite untuk penyimpanan data
o Media support yang mendukung audio, video, dan gambar (MPEG4, H.264, MP3,
AAC, AMR, JPG, PNG, GIF), GSM Telephony (tergantung hardware)
o Bluetooth, EDGE, 3G, dan WiFi (tergantung hardware)
o Kamera, GPS, kompas, dan accelerometer (tergantung hardware)
o Lingkungan Development yang lengkap dan kaya termasuk perangkat emulator, tools
untuk debugging, profil dan kinerja memori (Safaat, 2015).
Universitas Sumatera Utara
8
2.5 Versi Android
o Android versi 1.1
Pada 9 Maret 2009, Google merilisi Android versi 1.1 Android versi ini dilengkapi
dengan pembaruan estetis pada aplikasi, jam, alarm, voice search (pencarian suara),
pengiriman pesan dengan Gmail, dan pemberitahuan email.
o Android versi 1.5 (Cupcake)
Pada pertengahan Mei 2009, Google kembali merilis telepon seluler dengan
menggunakan Android dan SDK (Software Development Kit) dengan versi 1.5
(Cupcake). Terdapat beberapa pembaruan termasuk juga penambahan beberapa fitur
dalam seluler versi ini yakni kemampuan merekam dan menonton video dengan
modus kamera, mengupload video ke Youtube dan gambar ke Picasa langsung dari
telepon, dukungan bluetooth A2DP, kemampuan terhubung secara otomatis ke
headset bluetooth, animasi layar, dan keyboard pada layar yang dapat disesuikan
dengan sistem.
o Android versi 2.0/2.1 (Eclair )
Pada 3 Desember 2009 diluncurkan ponsel Android dengan versi 2.0/2.1 (Éclair ),
perubahan yang dilakukan adalah pengoptimalan hardware, peningkatan Google
Maps 3.1.2, perubahang UI dengan browser baru dan dukungan HTML5, daftar
kontak yang baru, dukungan flash untuk kamera 3,2 Mp, digital Zoom, dan bluetooth
2.1.
o Android versi 2.2 (Froyo)
Pada bulan Mei 2010 Android versi 2.2 diluncurkan. Android inilah yang sekarang
sangat banyak beredar di pasaran, salah satunya adalah dipakai di Samsung FX tab
yang sudah ada dipasaran. Fitur yang tersedia pada versi ini sudah kompleks.
o Android versi 2.3 (Gingerbread)
Android versi 2.3 ini diluncurkan pada Desember 2010.
o Android versi 3.0 ( Honeycomb)
Dirilis Februari 2011 sebagain android revisi 1 serta android revisi 2 versi 3.0 telah
dirilis pada Juli 2011.
o Android versi 4.0 (Jelly Bean)
Android Jelly Bean diluncurkan pertama kali pada Juli 2012, dengan berbasis Linux
Kerneldari Android 4.1 API Level 16, Android 4.2 API Level 17, Android 4.3 API
Universitas Sumatera Utara
9
Level 18. Penamaan mengadaptasi nama sejenis permen dalam beraneka macam rasa
buah. Ukurannya sebesar kacang merah. Permen ini keras di luar tapi lunak di dalam
serta lengket bila di gigit.
o Android versi 4.4 (KitKat)
Android 4.4 Kitkat API level 19.Google mengumumkan Android KitKat (dinamai
dengan izin Nestle dan Hershey) pada 3 september 2013. Dengan tanggal rilis 31
Oktober 2013. KitKat merupakan merk sebuah coklat yang dikeluarkan oleh Nestle.
Rilis berikutnya setelah nama KitKat diperkirakan banyak pengamat akan diberi
nomor 5.0 dan dinamai „Pie’ (Safaat, 2015).
2.6 Query
Query adalah satu atau beberapa kata atau frase / kalimat yang di masukan / di ketikan oleh
pengguna saat melakukan pencarian pada search engine (google atau search engine lainnya).
2.7 Search Engine
Mesin pencari (search engine) adalah salah satu program komputer yang di rancang khusus
untuk membantu seseorang menemukan file-file yang disimpan dalam komputer, misalnya
dalam sebuah web server umum di web atau komputer sendiri. Mesin pencari memungkinkan
kita untuk meminta content media dengan kriteria yang spesifik ( biasanya berisikan frase
atau kata yang kita inginkan) dan memperoleh daftar file yang memenuhi kriteria tersebut.
Mesin pencari biasanya menggunakan indeks untuk mencari file setelah pengguna
memasukan kriteria pencarian. Mesin pencari yang akan dibahas adalah mesin pencari khusus
yang digunakan untuk mencari informasi di dalam database lokal. Untuk memudahkan dan
mempercepat pencarian, mesin pencari mempunyai metode pencarian tertentu yang sering
disebut algoritma. Adapun struktur umum sebuah mesin pencari adalah sebagai berikut :
1. Kotak teks pencari
Kotak ini digunakan sebagai tempat memasukan kata kunci yang akan dijadikan acuan
dilakukan pencarian.
2. Tombol pencari
Tombol ini yang akan menjalankan perintah pencarian.
Universitas Sumatera Utara
10
2.8 Algoritma
Algoritma adalah merupakan jantung ilmu komputer atau informatika. Banyak cabang ilmu
komputer yang diacu dalam terminologi algoritma. Namun jangan beranggapan algoritma
selalu identik dengan ilmu komputer saja. Cara membuat kue atau masakan dalam resep
masakan, itu juga merupakan algoritma (Saniman & Fathoni 2008). Logika berasal dari dari
bahasa Yunani yaitu LOGOS yang berarti ilmu.
Logika dapat diartikan ilmu yang mengajarkan cara berpikir untuk melakukan
kegiatan dengan tujuan tertentu. Algoritma berasal dari nama seorang Ilmuwan Arab yang
bernama Abu Jafar Muhammad Ibnu Musa Al Khuwarizmi penulis buku berjudul Al Jabar
Wal Muqabala. 2 Kata Al Khuwarizmi dibaca orang barat menjadi Algorism yang kemudian
lambat laun menjadi Algorithm diserap dalam bahasa Indonesia menjadi Algoritma.
Algoritma dapat diartikan urutan penyelesaian masalah yang disusun secara sistematis
menggunakan bahasa yang logis untuk memecahkan suatu permasalahan (Barakbah & Ahsan
2013).
Algoritma adalah suatu himpunan berhingga dari instruksi-instruksi yang secara jelas
memperinci langkah-langkah proses pelaksanaan, dalam pemecahan suatu masalah tertentu,
atau suatu kelas masalah tertentu, dengan dituntut pula bahwa himpunan instruksi tersebut
dapat dilaksanakan secara mekanik (Barakbah & Ahsan 2013).
2.8.1 Algoritma String Matching
Pengertian string menurut Dictionary of Algorithms and Data Structures, National Institute
of Standards and Technology (NIST) adalah susunan dari karakter-karakter (angka, alfabet
atau karakter yang lain) dan biasanya direpresentasikan sebagai struktur data array. String
dapat berupa kata, frase, atau kalimat. Pencocokan string
(string matching) menurut
Dictionary of Algorithms and Data Structures, National Institute of Standards and
Technology (NIST), diartikan sebagai sebuah permasalahan untuk menemukan pola susunan
karakter string di dalam string lain atau bagian dari isi teks. Algoritma pencarian string
(String Matching) salah satu bagian terpenting dalam berbagai proses yang berkaitan dengan
data dengan tipe teks.
2.8.2 Klasifikasi Pencocokan String
Pencocokan string (string matching) secara garis besar dapat dibedakan menjadi dua yaitu (...
...):
Universitas Sumatera Utara
11
o Exact string matching, merupakan pencocokan string secara tepat dengan susunan
karakter dalam string yang dicocokkan memiliki jumlah maupun urutan karakter dalam
string yang sama. Contoh: kata step akan menunjukkan kecocokan hanya dengan kata
step.
2. Inexact string matching atau Fuzzy string matching, merupakan pencocokan string secara
samar, maksudnya pencocokan string dimana string yang dicocokkan memiliki kemiripan
dimana keduanya memiliki susunan karakter yang berbeda (mungkin jumlah atau
urutannya)
tetapi
string-string
tersebut
memiliki
kemiripan
baik
kemiripan
tekstual/penulisan (approximate string matching) atau kemiripan ucapan (phonetic string
matching). Inexact string matching masih dapat dibagi lagi menjadi dua yaitu :
a. Pencocokan string berdasarkan kemiripan penulisan (approximate string matching)
merupakan pencocokan string dengan dasar kemiripan dari segi penulisannya (jumlah
karakter, susunan karakter dalam dokumen). Tingkat kemiripan ditentukan dengan
jauh tidaknya beda penulisan dua buah string yang dibandingkan tersebut dan nilai
tingkat kemiripan ini ditentukan oleh pemrogram (programmer ). Contoh: cimpuler
dengan compiler, memiliki jumlah karakter yang sama tetapi ada dua karakter yang
berbeda. Jika perbedaan dua karakter ini dapat ditoleransi sebagai sebuah kesalahan
penulisan maka dua string tersebut dikatakan cocok.
b. Pencocokan string berdasarkan kemiripan ucapan (phonetic string matching)
merupakan pencocokan string dengan dasar kemiripan dari segi pengucapannya
meskipun ada perbedaan penulisan dua string yang dibandingkan tersebut. Contoh
step dengan steb dari tulisan berbeda tetapi dalam pengucapannya mirip sehingga dua
string tersebut dianggap cocok. Contoh yang lain adalah step, dengan steppe, sttep,
stepp, stepe. Exact string matching bermanfaat jika pengguna ingin mencari string
dalam dokumen yang sama persis dengan string masukan. Tetapi jika pengguna
menginginkan pencarian string yang mendekati dengan string masukan atau terjadi
kesalahan penulisan string masukan maupun dokumen objek pencarian, contoh
algoritma exact string matching antara lain: algoritma Boyer-Moore.
2.8.3 Algoritma Boyer-Moore
Algoritma Boyer-Moore dipublikasikan oleh Robert S. Boyer,dan J. Strother Moore pada
tahun 1977. Pencocokan karakter yang dilakukan menggunakan algoritma boyer-moore
dimulai dari string sebelah kanan pattern. Ide di balik algoritma ini ialah dengan memulai
Universitas Sumatera Utara
12
pencocokan karakter dari kanan, maka akan lebih banyak informasi yang didapat. Algoritma
Boyer Moore termasuk algoritma string matching yang paling efisien dibandingkan
algoritma-algoritma string matching lainnya. Karena sifatnya yang efisien, banyak
dikembangkan algoritma string matching dengan bertumpu pada konsep algoritma BoyerMoore (Efendi & Kurniadi 2013).
2.8.3.1 Ilustrasi Pencarian String Algortima Boyer-Moore
Teks
: OKTAVIANIPRADITA
Pattern : PRADITA
1. Mencari nilai suffix
Tabel 2.1 Suffix
i
0
1
2
3
4
5
6
X[i]
P
R
A
D
I
T
A
suffix
Cara mencari :
Pada indeks ke – 6 pada tabel suffix beri nilai dari panjang pattern yaitu “PRADITA”
mempunyai panjang karakter 7, maka tabel suffix indeks ke – 6 =7
Tabel 2.2 Proses Pencarian Suffix (a)
I
0
1
2
3
4
5
6
X[i]
P
R
A
D
I
T
A
Suffix 0
0
1
0
0
0
7
M = panjang pattern
Lalu bandingkan dari kanan ke kiri teks, indeks ke -6 dibandingkan dengan indeks ke
– 5 ( “A” banding “T”), hasil tidak sama maka beri nilai 0 pada tabel suffix
Lalu bandingkan dari kanan ke kiri teks, indeks ke -6 dibandingkan dengan indeks ke
– 4 ( “A” banding “I”), hasil tidak sama maka beri nilai 0 pada tabel suffix
Lalu bandingkan dari kanan ke kiri teks, indeks ke -6 dibandingkan dengan indeks ke
– 3 ( “A” banding “D”), hasil tidak sama maka beri nilai 0 pada tabel suffix
Lalu bandingkan dari kanan ke kiri teks, indeks ke -6 dibandingkan dengan indeks ke
– 2 ( “A” banding “A”), hasil sama maka beri tanda - pada tabel suffix
Universitas Sumatera Utara
13
Tabel 2.3 Proses Pencarian Suffix (b)
i
0
1
2
3
4
5
6
X[i]
P
R
A
D
I
T
A
suffix 0
0
-
0
0
0
7
Lalu bandingkan dari kanan ke kiri teks, indeks ke -6 dibandingkan dengan indeks ke
– 1 ( “A” banding “R”), hasil tidak sama maka beri nilai 0 pada tabel suffix
Lalu bandingkan dari kanan ke kiri teks, indeks ke -6 dibandingkan dengan indeks ke
– 0 ( “A” banding “P”), hasil tidak sama maka beri nilai 0 pada tabel suffix
Untuk mencari nilai indeks ke – 2 maka, masukkan rumus i – (i – s) = 2 – ( 2 – 1 ) = 2
–1=1:
Tabel 2.4 Proses Pencarian Suffix (c)
i
0
1
2
3
4
5
6
X[i]
P
R
A
D
I
T
A
suffix 0
0
1
0
0
0
7
S dalam rumus= jumlah berapa banyak pola yang sama pada keseluruhan teks
i dalam rumus = indeks dalam pattern yang cocok yang ingin dicari nilai suffix-nya
2. Membuat tabel BmGs
Isi semua tabel BmGs dengan nilai panjang pattern yaitu 7
Tabel 2.5 Proses Pencarian BmGs
I
0
1
2
3
4
5
6
X[i]
P
R
A
D
I
T
A
suffix
0
0
1
0
0
0
7
BmGs 7
7
7
7
7
7
7
Lakukan pengecekan apakah hasil i + i hasil = suffix :
Untuk indeks ke – 6 :
i + i hasil = suffix -> 6 + 1 = 7 , 7 = nilai suffix maka sama
Universitas Sumatera Utara
14
Tabel 2.6 Proses Pencarian BmGs (a)
i
0
1
2
3
4
5
6
X[i]
P
R
A
D
I
T
A
suffix
0
0
1
0
0
0
7
BmGs 7
7
7
7
7
7
7
Lakukan pengecekan apakah hasil i + i hasil = suffix :
Untuk indeks ke – 5 :
i + i hasil = suffix -> 5 + 1 = 6, 6 tidak sama nilai suffix maka sama
Tabel 2.7 Proses Pencarian BmGs (b)
i
0
1
2
3
4
5
6
X[i]
P
R
A
D
I
T
A
suffix
0
0
1
0
0
0
7
BmGs 7
7
7
7
7
7
7
Lakukan pengecekan apakah hasil i + i hasil = suffix :
Untuk indeks ke – 4 :
i + i hasil = suffix -> 4 + 1 = 5, 5 tidak sama nilai suffix maka sama
Tabel 2.8 Proses Pencarian BmGs (c)
i
0
1
2
3
4
5
6
X[i]
P
R
A
D
I
T
A
suffix
0
0
1
0
0
0
7
BmGs 7
7
7
7
7
7
7
Lakukan pengecekan apakah hasil i + i hasil = suffix :
Untuk indeks ke – 3 :
i + i hasil = suffix -> 3 + 1 = 4, 4 tidak sama nilai suffix maka sama
Tabel 2.9 Proses Pencarian BmGs (d)
i
0
1
2
3
4
5
6
X[i]
P
R
A
D
I
T
A
suffix
0
0
1
0
0
0
7
BmGs 7
7
7
7
7
7
7
Lakukan pengecekan apakah hasil i + i hasil = suffix :
Universitas Sumatera Utara
15
Untuk indeks ke – 2 :
i + i hasil = suffix -> 2 + 1 = 3, 3 tidak sama nilai suffix maka sama
Tabel 2.10 Proses Pencarian BmGs (e)
I
0
1
2
3
4
5
6
X[i]
P
R
A
D
I
T
A
suffix
0
0
1
0
0
0
7
BmGs 7
7
7
7
7
7
7
Lakukan pengecekan apakah hasil i + i hasil = suffix :
Untuk indeks ke – 1 :
i + i hasil = suffix -> 1 + 1 = 2, 2 tidak sama nilai suffix maka sama
Tabel 2.11 Proses Pencarian Bmgs (f)
I
0
1
2
3
4
5
6
X[i]
P
R
A
D
I
T
A
suffix
0
0
1
0
0
0
7
BmGs 7
7
7
7
7
7
7
Lakukan pengecekan apakah hasil i + i hasil = suffix :
Untuk indeks ke – 0 :
i + i hasil = suffix -> 0 + 1 = 1, 1 tidak sama nilai suffix maka sama
Tabel 2.12 Proses Pencarian BmGs (g)
i
0
1
2
3
4
5
6
X[i]
P
R
A
D
I
T
A
suffix
0
0
1
0
0
0
7
BmGs 7
7
7
7
7
7
7
Masukkan rumus untuk mencari batas pencarian perhitungan nilai Bmgs :
M – 1 - i = 7 – 1 - 6 = 0 sebagai batas pertama
Karena hanya terdapat 1 saja nilai pencocokan suffix maka perhitungan di atas
selesai
Jika terdapat satu atau lebih lagi pencocokan nilai suffix yang sama maka lakukan
perhitungan dengan rumus m – 1 – i untuk batas selanjutnya. Karena tidak ada
untuk batas selanjutnya, maka :
Universitas Sumatera Utara
16
Mulai menghitung untuk mengetahui batas kedua M - 2 = 7 - 2 = 5, yang artinya
menghitung nilai untuk pencarian tabel Bmgs nya dimulai dari indeks ke – 0
sampai indeks ke – 5.
Lalu masukkan rumus M - 1 – suffix-i = 0 -7 – 1 – 0 = 6 -> artinya indeks yang
ingin diisi dengan nilai Bmgs
-M – 1 – i = 7 – 1 – 0 = 6 -> niali Bmgs yang akan diisi pada indeks 6 , maka ubah
nilai indeks ke – 6 menjadi 6
Tabel 2.13 Proses Pencarian BmGs (h)
I
0
1
2
3
4
5
6
X[i]
P
R
A
D
I
T
A
suffix
0
0
1
0
0
0
7
BmGs 7
7
7
7
7
7
6
i=1
M – 1 – suffix = 7 – 1 – 0 = 6 -> artinya indeks yang ingin diisi dengan nilai Bmgs
M – 1 – i = 7 – 1 – 1 = 5 -> nilai Bmgs yang akan diisi pada indeks 6 , maka ubah
nilai indeks ke – 6 menjadi 5
Tabel 2.14 Proses Pencarian BmGs (i)
I
0
1
2
3
4
5
6
X[i]
P
R
A
D
I
T
A
suffix
0
0
1
0
0
0
7
BmGs 7
7
7
7
7
7
5
i=2
M – 1 – suffix = 7 – 1 – 1 = 5 -> artinya indeks yang ingin diisi dengan nilai Bmgs
M – 1 – i = 7 – 1 – 2 = 4 -> nilai Bmgs yang akan diisi pada indeks 5 , maka ubah
nilai indeks ke – 5 menjadi 4
Universitas Sumatera Utara
17
Tabel 2.15 Proses Pencarian BmGs (j)
I
0
1
2
3
4
5
6
X[i]
P
R
A
D
I
T
A
suffix
0
0
1
0
0
0
7
BmGs 7
7
7
7
7
4
5
i=3
M – 1 – suffix = 7 – 1 – 0 = 6 -> artinya indeks yang ingin diisi dengan nilai Bmgs
M – 1 – i = 7 – 1 – 3 = 3 -> nilai Bmgs yang akan diisi pada indeks 6 , maka ubah
nilai indeks ke – 6 menjadi 3
Tabel 2.16 Proses Pencarian BmGs (k)
I
0
1
2
3
4
5
6
X[i]
P
R
A
D
I
T
A
suffix
0
0
1
0
0
0
7
BmGs 7
7
7
7
7
4
3
i=4
M – 1 – suffix = 7 – 1 – 0 = 6 -> artinya indeks yang ingin diisi dengan nilai Bmgs
M – 1 – i = 7 – 1 – 4 = 2 -> nilai Bmgs yang akan diisi pada indeks 6 , maka ubah
nilai indeks ke – 6 menjadi 2
Tabel 2.17 Proses Pencarian BmGs (l)
I
0
1
2
3
4
5
6
X[i]
P
R
A
D
I
T
A
suffix
0
0
1
0
0
0
7
BmGs 7
7
7
7
7
4
2
i=5
M – 1 – suffix = 7 – 1 – 0 = 6 -> artinya indeks yang ingin diisi dengan nilai Bmgs
M – 1 – i = 7 – 1 – 5 = 1 -> nilai Bmgs yang akan diisi pada indeks 6 , maka ubah
nilai indeks ke – 6 menjadi 1
Universitas Sumatera Utara
18
Tabel 2.17 Proses Pencarian BmGs (m)
I
0
1
2
3
4
5
6
X[i]
P
R
A
D
I
T
A
suffix
0
0
1
0
0
0
7
BmGs 7
7
7
7
7
4
1
3. Pembuatan tabel BmBc
Tabel 2.19 BmBc
I
0
1
2
3
4
5
6
X[i]
P
R
A
D
I
T A
Isi indeks paling akhir dengan tanda bintang (*) dan isi tabel akhir dengan panjang
pattern 7
Tabel 2.20 Proses Pencarian BmBc (a)
X[i]
P R A D I T *
BmBc
7
Mencari batas pencarian nilai BmBc denga rumus M -2 = 7 – 2 = 5, berarti sampai
indeks ke – 5
Melakukan pencarian nilai BmBc sampai i = 5 dengan rumus M – 1 – i
7 – 1 – 0 = 6, untuk indeks ke - 0 (i = 0)
7 – 1 – 1 = 5, untuk indeks ke - 1 (i = 1)
7 – 1 – 2 = 4, untuk indeks ke - 2 (i = 2)
7 – 1 – 3 = 3, untuk indeks ke - 3 (i = 3)
7 – 1 – 4 = 2, untuk indeks ke - 4 (i = 4)
7 – 1 – 5 = 5, untuk indeks ke - 5 (i = 5)
Tabel 2.21 Proses Pencarian BmBc (b)
X[i]
P R A D I T *
BmBc
6
5
4
3
2
1
7
Universitas Sumatera Utara
19
4. Melakukan pencocokan string :
Tabel 2.22 Proses Pencocokan String
0
1
2
3
4
5 6
7
8 9 10 11 12 13 14 15
O K T A V I
A N I
0 1
6
2
3
4 5
P R A D I
P R
A
D
I
T
A
T A
Lihat nilai BmBc pada tabel atas, yaitu “I” = 2
Masukkan rumus : 2 – (M+1+i) = 2 – (7+1+5) = -11
Lihat nilai BmGs untuk tabel kedua yaitu “T” = 4
Bandingakan nilai -11 dan 4, ambil nilai yang paling besar yaitu 4 untuk
pergeseran
Tabel 2.23 Proses Pencocokan String (a)
0
1
2
3
4
5 6
O K T A V I
0 1
7
8 9 10 11 12 13 14 15
A N I
2
3
P R
4 5
P R A D I
A
D
I
T
A
6
T A
Lihat nilai BmBc pada tabel atas, yaitu “R” = 5
Masukkan rumus : 5 – (M+1+i) = 5 – (7+1+10) = -18
Lihat nilai BmGs untuk tabel kedua yaitu “A” = 1
Bandingakan nilai -18 dan 1, ambil nilai yang paling besar yaitu 1 untuk
pergeseran selanjutnya
Tabel 2.24 Proses Pencocokan String (b)
0
1
2
3
4
5 6
O K T A V I
0 1
7
8 9 10 11 12 13 14 15
A N I
2
3
P R
4 5
P R A D I
A
D
I
T
A
6
T A
Lihat nilai BmBc pada tabel atas, yaitu “R” = 5
Masukkan rumus : 5 – (M+1+i) = 5 – (7+1+5) = -13
Lihat nilai BmGs untuk tabel kedua yaitu “T” = 4
Universitas Sumatera Utara
20
Bandingakan nilai -13 dan 4, ambil nilai yang paling besar yaitu 4 untuk
pergeseran selanjutnya
Tabel 2.25 Proses Pencocokan String (c)
0
1
2
3
4
5
6
7
8
9
10 11 12 13
14
15
O K T A V I A
N
I
P
R
T
A
A
D
I
0
1
2
3
4
5
6
P
R
A
D
I
T
A
5. Selesai
2.8.4 Algoritma Rabin-Karp
Algorima Rabin-Karp menggunakan metoda hash dalam mencari suatu kata. Algoritma ini
dibuat oleh Michael O. Rabin dan Richard M. Karp. Teori ini jarang digunakan untuk
mencari kata tunggal, namun teori ini cukup penting dan sangat efektif bila digunakan untuk
mencari lebih dari satu kata (Andres & Saloko 2010)
2.8.5 Hashing
Algoritma Rabin-Karp ini tidak melakukan pergeseran yang rumit untuk menyelesaikan
masalah, algoritma ini mempercepat pengecekan kata pada suatu teks dengan menggunakan
fungsi hash. Fungsi hash adalah fungsi yang mengkonversikan suatu kata menjadi nilai yang
disebut nilai hash (hashvalue). Contohnya seperti hash(“PRADITA”)=9853. Rabin-Karp
memiliki fakta bahwa jika suatu kata adalah sama maka nilai hash-nya juga sama. Jadi kita
dapat melihat bahwa yang perlu kita lakukan adalah mencari nilai hash dari kata yang kita
punya kemudian mencari kata dalam teks yang mempunyai nilai hash yang sama
(Atmopawiro, 2014).
2.8.5.1 Ilustrasi Pencarian String Algoritma Rabin-Karp
1. Menghitung nilai hash pada pola string [PRADITA] = 9853
cara menghitung hash :
Cari nilai pada tabel ASCII untuk teks “PRADITA” dan beri basis “2”, dimana teks yang
paling kiri memiliki nilai terbesar dan teks yang paling kanan memiliki nilai yang
terkecil.
Universitas Sumatera Utara
21
Tabel 2.26 Mencari Nilai Hash
P
R
A
D
I
T
A
80 82 65 68 73 84 65
26 25 24 23 22 21 20
Lakukan perhitungan nilai hash :
= 80*26 + 82*25 + 65*24 + 68*23 + 73*22 + 84*21 + 65*20
= 80*64 + 82*32 + 65*16 + 68*8 + 73*4 + 84*2 + 65*1
= 5120 + 2624 + 1040 + 544 + 292 + 168 + 65
= 9853
Lakukan hal yang sama untuk pencarian hash pada untuk teks “DIPRADITAO”
2. Memeriksa pencocokan antar string
o Langkah-1:
Tabel 2.27 Memeriksa Pencocokan String (a)
Y D I
X P
P
R A D I
R A D I
T
T A O
A
hash {Y[0 .. 6]} = 9093
o langkah-2 :
Tabel 2.28 Memeriksa Pencocokan String (b)
Y D I
X
hash {Y[1 .. 7]} =
P
R A D I
P R A D I
T
A O
T A A
9490
o langkah-3 :
Tabel 2.29 Memeriksa Pencocokan String (c)
Y
D I P R A D I T A O
X
P R A D I T A
hash {y[2 .. 8]} = 9853 cocok
Universitas Sumatera Utara
22
o langkah-4 :
Tabel 2.30 Memeriksa Pencocokan String (d)
Y
D I P R A D I
T A O
X
P
T
R A D I
A
hash {y[3 .. 9]} = 9545
3. Pada perbandingan ketiga didapatkan hasil yang sama dengan nilai hash pada string
“PRADITA” = 9853 (Carras & Thiery 2004).
Universitas Sumatera Utara