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 seluas-luasnya 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.
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)
2.5 Versi Android
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)
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
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
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
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
Boyer-Moore (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
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)
 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
i 0 1 2 3 4 5 6
X[i] P R A D I T A
suffix
I 0 1 2 3 4 5 6
X[i] P R A D I T A
Tabel 2.3 Proses Pencarian Suffix (b)
 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
 Lakukan pengecekan apakah hasil i + i hasil = suffix :  Untuk indeks ke – 6 :
 i + i hasil = suffix -> 6 + 1 = 7 , 7 = nilai suffix maka sama
i 0 1 2 3 4 5 6
X[i] P R A D I T A
suffix 0 0 - 0 0 0 7
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
i + i hasil = suffix -> 2 + 1 = 3, 3 tidak sama nilai suffix maka sama Tabel 2.10 Proses Pencarian BmGs (e)
 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)
 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)
 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 :
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
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
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
 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 = 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 = 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
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 0 1 2 3 4 5 6
X[i] P R A D I T A
suffix 0 0 1 0 0 0 7
Tabel 2.17 Proses Pencarian BmGs (m)
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
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
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 P R A D I T A
0 1 2 3 4 5 6
P R A D I 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 7 8 9 10 11 12 13 14 15
O K T A V I A N I P R A D I T A
0 1 2 3 4 5 6 P R A D I 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 7 8 9 10 11 12 13 14 15 O K T A V I A N I P R A D I T A
0 1 2 3 4 5 6
 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 A D I T A
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
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 hashpada untuk teks “DIPRADITAO”
2. Memeriksa pencocokan antar string o Langkah-1:
Tabel 2.27 Memeriksa Pencocokan String (a) Y D I P R A D I T A O
X P R A D I T A
hash {Y[0 .. 6]} = 9093
o langkah-2 :
Tabel 2.28 Memeriksa Pencocokan String (b) Y D I P R A D I T A O
X P R A D I T A A
hash {Y[1 .. 7]} = 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
o langkah-4 :
Tabel 2.30 Memeriksa Pencocokan String (d) Y D I P R A D I T A O
X P R A D I T A
hash {y[3 .. 9]} = 9545