• Tidak ada hasil yang ditemukan

Perbandingan Algoritma Boyer-Moore Dan Algoritma Rabin Karp Pada Pencarian Teks Dalam Undang Undang Perlindungan Anak

N/A
N/A
Protected

Academic year: 2017

Membagikan "Perbandingan Algoritma Boyer-Moore Dan Algoritma Rabin Karp Pada Pencarian Teks Dalam Undang Undang Perlindungan Anak"

Copied!
95
0
0

Teks penuh

(1)

LISTING PROGRAM

public class MainActivity extends AppCompatActivity {

int SPLASH_TIME_OUT = 3000;

@Override

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

new Handler().postDelayed(new Runnable() {

public class MenuActivity extends AppCompatActivity {

private Button startButton; private Button aboutButton;

@Override

protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState);

(2)

startButton = (Button) findViewById(R.id.start_button); aboutButton = (Button) findViewById(R.id.about_button);

startButton.setOnClickListener(startClickListener);

aboutButton.setOnClickListener(aboutClickListener);

}

View.OnClickListener startClickListener = new View.OnClickListener() {

View.OnClickListener aboutClickListener = new View.OnClickListener() {

public class AboutActivity extends AppCompatActivity {

@Override

protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.activity_about); }

(3)

4. BoyerMoore.class

(4)
(5)

endMillis = System.currentTimeMillis();

(6)

// apakah hash sesuai?

(7)

}

public class MenuActivity extends AppCompatActivity {

private Button startButton; private Button aboutButton;

@Override

protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.activity_menu);

startButton = (Button) findViewById(R.id.start_button); aboutButton = (Button) findViewById(R.id.about_button);

startButton.setOnClickListener(startClickListener); aboutButton.setOnClickListener(aboutClickListener);

}

View.OnClickListener startClickListener = new View.OnClickListener() {

View.OnClickListener aboutClickListener = new View.OnClickListener() {

@Override

public void onClick(View view) {

(8)

startActivity(i);

public class UUAdapter extends ArrayAdapter<UUModel> {

public UUAdapter(Context context, int resource, List<UUModel> objects) {

super(context, resource, objects); }

@Override

public View getView(int position, View convertView, ViewGroup parent) {

(9)

}

(10)

public class SearchActivity extends AppCompatActivity {

private ArrayList<UUModel> uuModels; private UUAdapter uuAdapter;

private int MAX_CHAPTER = 14;

@Override

protected void onCreate(@Nullable Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_search);

// initialisasi view

listView = (ListView) findViewById(R.id.item_list_view); statusTextView = (TextView) boyerMoreButton.setOnClickListener(new

(11)

String pattern = isi kata yang dicari.", Toast.LENGTH_SHORT).show();

(12)

} "BAB " + i, pattern, contentLines, pos);

//tambah kan ke list UUModels uuModels.size() + " bab, "+banyak_kata+" kata dengan durasi " + formatter.format((endMillis-startMillis)) + "ms");

rabinKarpButton.setOnClickListener(new View.OnClickListener() { isi kata yang dicari.", Toast.LENGTH_SHORT).show();

} else {

long startMillis = System.currentTimeMillis();

(13)

for (int i = 1; i <= MAX_CHAPTER; i++) { "BAB " + i, pattern, contentLines, pos);

(14)

} }); }

private String readTextFile(InputStream inputStream) { ByteArrayOutputStream outputStream = new

public class ContentActivity extends AppCompatActivity {

private LinearLayout contentLinearLayout;

@Override

protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState);

Intent intent = getIntent();

(15)

contentLinearLayout = (LinearLayout) findViewById(R.id.content_linear_layout);

for(int i = 0; i < contentLines.length; i++){ TextView lineTextView = new TextView(this);

lineTextView.setLayoutParams(new ActionBar.LayoutParams( ActionBar.LayoutParams.MATCH_PARENT,

ActionBar.LayoutParams.WRAP_CONTENT));

if(pos[i] >= 0){

Spannable spanText =

Spannable.Factory.getInstance().newSpannable(contentLines[i]); spanText.setSpan(new

BackgroundColorSpan(0xFFFFFF00), pos[i], (pos[i] + pattern.length()), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); lineTextView.setText(spanText);

}else{

lineTextView.setText(contentLines[i]); }

contentLinearLayout.addView(lineTextView); }

(16)

CURRICULUM VITAE

Data Pribadi

Nama : Pradita Oktaviani

Tempat/Tanggal Lahir : PekanBaru/ 21 Oktober 1994

Tinggi/Berat Badan : 165 cm / 45 kg

Agama : Islam

Kewarganegaraan : Indonesia

Alamat Sekarang : Jl. Stasiun Gg TriKarya No.10 Medan

Alamat Orang Tua : Jl. Stasiun Gg TriKarya No.10 Medan

Telp/ Hp : 085361420720

Email : [email protected]

--- Riwayat Pendidikan

[2010 – 2014] : S1 Ilmu Komputer Universitas Sumatera Utara, Medan

[2007 – 2010] : SMA KARTIKA I-1 Medan

[2004 – 2007] : SMP KARTIKA I-2 Medan

(17)

Keahlian/Kursus

Keahlian Komputer :

Pemrograman : PHP,

Database : Microsoft Access,MySQL

Desain : Adobe Photoshop, Coreldraw

Multimedia : Adobe Flash

Perkantoran : Microsoft Office

--- Pengalaman Organisasi

[2007 – 2009] Pramuka SMP KARTIKA I-2 MEDAN

[2010 – 2012] Palang Merah Indonesia SMA KARTIKA I-1 MEDAN

--- Pengalaman Kepanitiaan

-

--- Seminar

[2014] Seminar Nasional Literasi I for asi SENARAI Prestasi

(18)

DAFTAR PUSTAKA

Abdullah, N. 2010. Kekerasan Terhadap Anak “Bom Waktu” Masa Depan.Jurnal Psikoligis. 1(5): 6

Andres, N., Christopher. & Saloko, H. 2010. Penelaahan Algoritma Rabin-Karp dan Perbandingan Prosesnya dengan Algoritma Knut-Morris-Pratt. Jurnal Informatika. 2(1): 4.

Atmopawiro, A. 2014. Pengkajian dan Analsis Tiga Algoritma Efisien Rabin-Karp, Knuth-Morris-Pratt, dan Boyer-Moore dalam Pencarian Pola dalam Suatu Teks. Jurnal Komputer dan Informatika. 5(3):10.

Barakbah, A.R., Karlita, T. & Ahsan, A.S. 2013. Logika dan Algoritma. Jurnal UNIKOM. 4(2): 1-2.

Charras, C., & Thierry L. 2004. Handbook of Exact String-Matching Algorithms. College Publication.

Efendi, D., Hartono, T. & Kurniadi, A. 2013. Penerapan String Matching Menggunakan Boyer-Moore Pada Translator Bahasa Pascal Ke C. JurnalInformatika. 11(2): 271.

Mona. ( Editor ). 2015. Undang-Undang Republik Indonesia Nomor 35 Tahun 2014 Tentang Perubahan Atas Undang-Undang Republik Indonesia Nomor 23 Tahun 2002 Tentang Perlindungan Anak. Pustaka Gramedia : Yogyakarta.

Rahman, Astriyani. 2010. Eksploitasi Orang Tua Terhadap Anak Dengan Memperkerjakan Sebagai Buruh. Skripsi. Universitas Gunadharma.

Safaat, N. 2015. Android: Pemrograman Aplikasi Smartphone dan Tablet PC berbasis Android. 2nd. Informatika : Bandung.

(19)

BAB III

ANALISIS DAN PERANCANGAN

3.1 Analisis Sistem

Tahapan ini dilakukan untuk memaparkan pemahaman tentang sistem yang dibuat secara

keseluruhan. Baik kinerja sistem maupun proses perancangan aplikasi pada sistem.

pemahaman yang menyeluruh terhadap kebutuhan sistem sehingga diperoleh tugas-tugas

yang akan dikerjakan sistem. Tahapan ini dilakukan agar pada saat proses perancangan

aplikasi tidak terjadi kesalahan.

3.1.1 Analisis Masalah

Seringnya terjadi tindak kekerasan baik secara fisik, mental maupun sosial kepada anak yang

dilakukan oleh orang-orang terdekat serta lingkungan sekitar mereka, membuat anak-anak

merasa tidak aman untuk bisa bersosialisasi secara optimal. Kurangnya pemahaman anak

Indonesia tentang hak-hak dan perlindungan yang sepantasnya mereka dapatkan oleh Negara

menjadi masalah yang akan diselesaikan. Pencarian kata dalam menemukan pola string yang

sama, menampilkan pada bab, pasal berapa saja yang mengandung string yang dicari dan

mencari algoritma mana yang lebih baik dalam pencarian string, menjadi masalah yang akan

diselesaikan.

Untuk membantu mengidentifikasi masalah di atas, maka di gunakan diagram

Ishikawa (fishbone diagram). Diagram Ishikawa adalah sebuah alat grafis yang digunakan

untuk menampilkan pendapat tentang komponen inti suatu kondisi di dalam organisasi.

diagram Ishikawa juga dapat menemukan dan mengatasi masalah-masalah yang akan di

(20)

Sulit Mencari Kata Yang Diinginkan User Metode String Matching

Apa Yang Baik Digunakan

Mesin Yang Dapat Meng- Materi Yang Mudah Compile Di Android Diakses

Gambar 3.1 Diagram Ishikawa

3.1.2 Analisis Persyaratan

Pada tahap analisis persyaratan ini dapat terbagi menjadi dua, yaitu : fungsional dan

non-fungsional. Persyaratan fungsional dapat diartikan sebagai penyedia aktivitas-aktivitas yang

ada dalam suatu sistem tersebut. Sedangkan, persyaratan non-fungsional dapat diartikan

sebagai mendeskripsikan fitur, performa fitur, karakteristik dari fitur, dan batasan lainnya.

3.1.2.1 Kebutuhan Fungsional

Kebutuhan fungsional yang terdapat pada aplikasi pencarian teks undang-undang

perlindungan anak terdiri atas :

METODE MANUSIA

MESIN MATERI

(21)

Tabel 3.1 Kebutuhan Fungsional

SRS ID Fungsi

F-01 Sistem dapat menjalankan algoritma yang akan digunakan untuk mencari string (Boyer-Moore atau Rabin-Karp)

F-02 Menemukan string dengan algoritma yang sudah dipilih F-03 Mencari string dalam teks.txt

F-04 Masukkan string terdiri dari satu kosa kata atau lebih

F-05 Sistem dapat menampilkan hasil pencrian string dengan menggunakan algoritma yang sudah dipilih sebelumnya

3.1.2.2 Kebutuhan Non-Fungsional

Kebutuhan fungsional yang terdapat pada aplikasi pencarian teks undang-undang

perlindungan anak terdiri atas :

Tabel 3.2 Kebutuhan Non-Fungsional

SRS ID Fungsi

NF-01 Menggunakan Interface yang mudah sehingga user cepat memahami aplikasi

NF-02 Menggunakan desain yang minimalis

NF-03 Menggunakan software Android Studio dalam pembuatannya

NF-04 Aplikasi ini hemat biaya karena tidak memerlukan perangkat tambahan dalam peng-operasiannya

3.1.3 Pemodelan

Pekerjaan-pekerjaan pemodelan spesifikasi kebutuhan pada dasarnya akan menghasilkan

beberapa jenis model-model berikut :

o Model berbasis skenario, yang menggambar spesifikasi kebutuhan perangkat lunak

dari berbagai sudut pandang “aktor” sistem/perangkat lunak. Contoh : Use Case.

o Model data, yang menjelaskan ranah informasi untuk permasalahan yang akan

diselesaikan.

o Model berorientasi kelas, yang memperhatikan kelas-kelas dalam konteks

(22)

bekerjasama untuk mencapai sasaran-sasaran spesifikasi kebutuhan perangkat lunak.

Contoh : diagram kelas.

o Model berorientasi aliran, yang menggambarkan elemen-elemen fungsional

sistem/perangkat lunak dan yang akan menggambarkan bagaimana caranya mereka

melakukan transformasi terhadap data saat data yang bersangkutan melintasi sistem.

o Model perilaku, yang menggambarkan bagaimana perangkat lunak berperilaku

terhadap event-event yang datang dari luar sistem

Pada penelitian ini digunakan UML (Unified Modeling Language) sebagai bahasa

pemodelan untuk mendesain dan merancang aplikasi pencarian teks undang-undang

perlindungan anak. Model UML yang digunakan antara lain Use case diagram, Activity

diagram, dan Sequence diagram.

3.1.3.1 Preprocessing

Preprocessing adalah tahapan awal dalam mengolah data yang di-input sebelum benar-benar

memasuki proses tahapan utama pada suatu sistem.

3.1.3.1.1 Case Folding

Case Folding merupakan tahapan yang mengubah huruf kapital menjadi huruf kecil dalam

tahap pencarian string pada database. Mengubah huruf “A” sampai dengan “Z” menjadi

(23)

Gambar 3.2 Preprocessing-Case Folding UpperCase to

LowerCase

(function)

Sistem memproses string yang di-input user dan mencari pada teks .txt sebanyak 14 bab.

Sistem mencari string menggunakan

algoritma Rabin-Karp Sistem mencari string

menggunakan algoritma Boyer-Moore

Inputstring oleh user

Input teks undang-undang

perlindungan anaksebanyak 14 bab dengan format

Sistem

(24)

3.1.3.2 Use Case Diagram

Use case diagram adalah gambaran yang dapat merepresentasikan interaksi antara aktor dan

sistem itu sendiri. Use case diagram sangat membantu dalam memahami kebutuhan

fungsional dalam suatu sistem yang dibangun. Use case diagram yang akan dibangung dapat

digambarkan pada gambar 3.2 sebagai berikut.

Gambar 3.3 Use Case Diagram

(25)

Tabel 3.3 Use Case Memasukkan String

Name Memasukkan String

Actors User

Description Use case mendeskrisikan untuk meng-input string yang akan dicari di dalam teks undang-undang perlindungan anak

Basic Flow User meng-inputstring

Alternate Flow

-Pre Condition User dapat melihat tampilan menu utama

Post Conditon User dapat mengetahui string yang dicari pada teks undang-undang perlindungan anak

Pada proses memilih algoritma, dapat dinyatakan dalam tabel 3.4.

Tabel 3.4 Use Case Memilih Algoritma

Name Memasukkan String

Actors User

Description Use Case ini mendeskripsikan pemilihan algoritma yang akan dipakai dalam pencarian teks undang-undang perlindungan anak

Basic Flow User memilih algoritma yang ingin digunakan

Alternate Flow

User dapat mengganti algoritma yang ingin digunakan

Pre Condition User dapat melihat tampilan button pemilihan algoritma

Post Conditon User sudah memilih algoritma

3.1.3.3 Activity Diagram

Activity diagram menggambarkan berbagai alir aktivitas dalam sistem yang akan dibangun,

bagaimana sistem itu berawal, kemungkinan decision yang akan terjadi, dan bagaimana

sebuah sistem akan berakhir. Manfaat dari activity diagram ialah untuk membantu memahami

(26)

Activity diagram dibuat berdasarkan sebuah atau beberapa use case diagram. Proses

pencarian dengan Algoritma Boyer-Moore dan algoritma Rabin-Karp, dapat dilihat Activity

Diagrampada Gambar 3.3 berikut:

Gambar 3.4 Activity Diagram 3.1.3.4 Sequence Diagram

Sequence Diagram merupakan diagram yang berfungsi untuk menampilkan perilaku

sistem/aplikasi tersebut. Diagram ini menunjukkan bagaiman pesan dikirim dan diterima

diantara objek, dan diurutan yang mana. Sequence Diagram dapat membantu dalam

menggambarkan data yang masuk dan keluar dari sistem. Sequence diagram untuk proses

pencarian teks undang-undag perlindungan anak menggunakan algoritma Boyer-Moore dan

(27)

Gambar 3.5 Sequence Diagram

Pada tahap ini, user membuka aplikasi, sistem mengembalikan feedback berupa intro sistem.

Setelah itu, user masuk ke dalam menu utama sistem. User dapat melihat keseluruhan isi bab

dan pasal yang terdapat pada sistem tersebut, sistem akan mengembalikan hasil ke user. User

meng-input string dan memilih algoritma mana yang akan di pakai, sistem memproses

algoritma tersebut dengan mencari file.txt yang terdapat undang-undang perlindungan anak,

lalu sistem mengembalikan hasil pencarian untuk ditampilkan ke user.

3.1.3.5 Flowchart Sistem

Flowchart merupakan bagan yang memperlihatkan urutan maupun hubungan antar proses

beserta keterangannya yang dinyatakan dengan simbol. Dengan demikian setiap simbol

menggambarkan proses tertentu. Sedangkan antara proses digambarkan dengan garis

penghubung. Untuk melihat Flowchart dari sistem yang akan dibangun perhatikan gambar

(28)

Gambar 3.6 Flowchart Sistem MULAI

Input kata yang dicari

Input algoritma yang digunakan

Melakukan pencocokan

(29)
(30)

Tidak

Ya

Gambar 3.8 Flowchart Rabin-Karp MULAI

Pattern/inputan, sumber string

Menghitung nilai hash dari pattern/inputan

apakah nilai h(si)=h(P) ?

Lakukan pencocokan antara string S dengan string P secara Brute Force

Penulusuran sampai string berakhir

SELESAI Melakukan Pencocokan nilai hash antara nilai hash pattern dengan nilai substring dari sumber string

String ditemukan

(31)

3.2 Perancangan Sistem

Proses perancangan antarmuka (interface) sebuah sistem adalah proses yang cukup penting

dalam membuat aplikasi. Sebuah antarmuka harus dirancang dengan memperhatikan faktor

pengguna sehingga sistem yang dibangun dapat memberikan kenyamanan dan kemudahan

untuk digunakan oleh pengguna.

3.2.1 Menu Intro

Gambar 3.9 Rancangan Interface Menu Intro

Tabel 3.5 Keterangan Gambar Rancangan Interface Menu Intro

No Keterangan

1. Image View 1 untuk menampilkan intro pada aplikasi sebelum benar-benar masuk

ke menu utama aplikasi.

Image View 1

Undang-undang perlindungan

(32)

Gambar 3.10 Rancangan Interface Menu Pemilihan

Tabel 3.6 Keterangan Gambar Rancangan Interface Menu Pemilihan

No Keterangan

1. Button 1 mulai untuk memulai aplikasi pencarian string 2. Button 2 tentang untuk menampilkan biodata diri

3.3.3 Menu Tentang

Gambar 3.11 Rancangan Interface Menu Tentang Button 1 Button 2

Label 1

Label 2

Image View 2

Label 3

Label 4 MULAI

TENTANG

JUDUL SKRIPSI

NAMA & NIM

LOGO USU

PROGRAM STUDI

(33)

Tabel 3.7 Keterangan Gamber Interface Menu Tentang

No Keterangan

1. Label 1 untuk menampilkan judul skripsi

2. Label 2 untuk menampilkan nama dan nim

3. Image View 2 untuk menampilkan logo Universitas Sumatra Utara 4. Label 3 untuk menampilak program studi

5. Label 4 untuk menampilkan tahun ajaran dan tempat

3.3.4 Menu Utama

Gambar 3.12 Rancangan Interface Menu Utama

Tabel 3.8 Keterangan Rancangan Gambar Interface Menu Utama

No Keterangan

1. Text View 1 untuk menampilkan judul Undang-UndangPerlindungan anak

2. Text View 2 untuk menampilkan teks isi string

3. Button 3 untuk tombol algotima Boyer-Moore

4. Button 4 untuk tombol algortima Rabin-Karp

5. Text View 3 untuk menampilkan kata yang dicari

6. List Vuew 1 untuk menampilkan hasil pencarian string Text View 1

Text View 2

Button 3 Button 4

List View 1 Undang-undang

perlindungan anak

Ketik kata

Boyer-moore Rabin-karp

Bab 1

Bab 2

Bab 3

(34)

BAB 4

IMPLEMENTASI DAN PENGUJIAN

4.1 Implementasi

Implementasi sistem merupakan tahapan yang harus dilalui dalam proses pengembangan

perangkat lunak dari suatu sistem. Tahap ini dilakukan setelah melalui tahap Analisis dan

Perancangan sistem yang telah diuraikan pada bab sebelumnya.Sistem ini dibangun dengan

menggunakanBasic4Android.Pada sistem initerdapat 5 menu, yaitu: Menu Intro,Menu

Pemilihan, Menu Tentang, dan Menu Utama.

4.1.1 Implementasi Algoritma Boyer-Moore dan Rabin-Karp

Penerapan algoritma Boyer-Moore dan algoritma Rabin-Karp dalam sistem yang dibuat

adalah pada proses pencarian string dengan algoritma Boyer-Moore dan algoritma

Rabin-Karp dalam mencari teks undang-undang perlindungan anak .

Adapun langkah pertama yang dilakukan adalah melakukan peng-inputan .txt teks

undang-undang perlindungan anak dengan jumlah 14 bab. Lalu, User akan memasukkan string yang

nantinya akan melakukan proses pencarian string dengan algoritma Boyer-Moore dan

algoritma Rabin-Karp. Kata yang sesuai dengan string akan di tampilkan ke user. Jika tidak

ada string yang sama pada saat proses pencarian string maka string tidak ditemukan.

Algoritma Boyer-Moore bekerja dengan cara memeriksa string dari kanan ke kiri teks

dengan pola perlonjakan kata yang besar sesuai dengan tabel BmBc dan BmGs yang

terbentuk. Algoritma Rabin-Karp melakukan pencocokan string dengan cara melakukan

pencocokan nilai hash yang didapatkan dengan mendaftarkan semua string ke tabel ASCII

(35)

4.2 Antarmuka Sistem

Pada Aplikasi pencarian teks dalam undang-undang perlindungan anak menggunakan

algoritma Boyer-Moore dan Rabin-Karp ini terdapat lima menu, yaitu :

1. Menu Intro

2. Menu Pemilihan

3. Menu Tentang

4. Menu Utama

4.2.1 Menu Intro

Menu intro merupakan menu atau form yang pertama kali akan muncul ketika user membuka

aplikasi pencarian teks undang-undang perlindungan anak.

Gambar 4.1 Menu Intro 4.2.2 Menu Pemilihan

Form ini berisikan button tentang dan button mulai, sehingga user dapat memilih akan

(36)

Gambar 4.2 Menu Pemilihan 4.2.3 Menu Tentang

Form ini berisi tentang identitas dari penulis

(37)

4.2.4 Menu Utama

Form ini merupakan menu utama pada aplikasi pencarian teks dalam undang-undang

perlindungan anak. Dalam form ini akan melakukan pencarian string dengan menggunakan

algoritma Boyer-Moore dan algoritma Rabin-Karp dalam menemukan string yang tepat.

User akan meng-input string, lalu user akan memilih algoritma mana yang akan

digunakan (algoritma Boyer-Moore atau algoritma Rabin-Karp). Lalu sistem akan melakukan

pencarian string dengan algoritma yang telah dipilih. Sistem akan menampilkan hasil

pencarian string.

Contoh string : “perlindungan”

Gambar 4.4 Hasil Pencarian Algoritma Boyer-Moore (a)

Pada gambar di atas terdapat 9 bab dari 14 bab, 48 kata dengan durasi 80 ms dalam

undang-undang perlindungan anak yang terdapat string “perlindungan” dengan menggunakan

(38)

Gambar 4.5 Hasil Pencarian Algoritma Boyer-Moore (b)

(39)

Gambar 4.6 Hasil Pencarian Algoritma Rabin-Karp (a)

Pada gambar di atas terdapat 9 bab dari 14, 48 kata denngan durasi 300 ms dalam

undang-undang perlindungan anak yang terdapat string “perlindungan” dengan menggunakan

(40)

Gambar 4.7 Hasil Pencarian Algoritma Rabin-Karp (b)

Pada gambar di atas dapat dilihat teks yang berwarna kuning yang mengandung string “perlindungan” dengan menggunakan algoritma Rabin-Karp.

4.3 Hasil Pengujian

Hasil pengujian pada dari peneletian ini adalah kompleksitas dari kedua algoritma (

(41)

4.3.1 Kompleksitas Algoritma Big θ

public BoyerMoore(String pattern, String text) { this.pattern = pattern;

(42)

}

T(n) = 6C1+3C2+C3+C4m+2C2m+C4m

= (6C1+3C2+C3)݉0+ (C4+2C2+C4)݉1

= ݉0+ ݉1= θ(m)

Tabel 4.1 adalah tabel kompleksitas algoritma Boyer-Moore , dimana proses pencarian

kompleksitasnya menggunakan bahasa Java, C sebagai konstanta, # sebagai ukuran masukan,

dan C. # (C kali #) adalah untuk mencari Theoritical Running Time (T(n)) atau kompleksitas

waktu, sehingga dapat dijumlahkan hasil dari perkalian C kali #, maka diperoleh hasil θ(m)

untuk pembentukan bad character-nya.

Tabel 4.2 Kompleksitas Boyer-Moore Suffixes

Code C # C.#

private static int[] suffixes(char[] x, int m) {

C1 1 C1

int f=0, g, i; C3 1 C3

int suff[] = new int[m]; C2 1 C2

suff[m - 1] = m; C2 m C2m

g = m - 1; C2 m C2m

for (i = m - 2; i >= 0; --i) { C4 m C4m

if (i > g && suff[i + m - 1 - f] < i - g)

C5 m C5m

suff[i] = suff[i + m - 1 - f];

C2 m C2m

else { C6 m C6m

if (i < g) C6 m C6m

(43)

f = i; C2 m C2m

while (g >= 0 && x[g] == x[g + m - 1 - f])

C7 m C7m

--g; C8 m C8m

suff[i] = f - g; }

}

C2 m C2m

return suff; }

C9 m C9m

T(n) = C1+C2+C3+2C2m+C4m+4C2m+C5m+2C6m+C7m+C8m+C9m

= (C1+C2+C3)݉0+ (2C2+C4+4C2+C5+2C6+C7+C8+C9)݉1

= ݉0+ ݉1= θ(m)

Tabel 4.2 adalah tabel kompleksitas algoritma Boyer-Moore , dimana proses pencarian

kompleksitasnya menggunakan bahasa Java, C sebagai konstanta, # sebagai ukuran masukan,

dan C. # (C kali #) adalah untuk mencari Theoritical Running Time (T(n)) atau kompleksitas

waktu, sehingga dapat dijumlahkan hasil dari perkalian C kali #, maka diperoleh hasil θ(m)

untuk pembentukan suffixes-nya.

Tabel 4.3 Kompleksitas Boyer-Moore BmGs

Code C # C.#

private static void preBmGs(char[] x, int m) {

C1 1 C1

int i, j; C3 1 C3

int suff[] = suffixes(x, m); C2 1 C2

for (i = 0; i < m; ++i) C4 m C4m

bmGs[i] = m C2 m C2m

(44)

if (suff[i] == i + 1) C5 m C5m

for ( j < m - 1 - i; ++j) C4 m C4m

if (bmGs[j] == m) C5 m C5m

bmGs[j] = m - 1 - i; C2 m C2m

for (i = 0; i <= m - 2; ++i) C4 m C4m

bmGs[m - 1 - suff[i]] = m - 1 - i; C2 m C2m

}

static int[] bmGs; static int[] bmBc;

C3 m C3m

T(n) = C1+C2+C3+C4m+4C2m+ C3m+3C4m+2C5m

= (C1+C2+C3)݉0+ (C4+4C2+C3+3C4+2C5)݉1

= ݉0+ ݉1= θ(m)

Tabel 4.3 adalah tabel kompleksitas algoritma Boyer-Moore , dimana proses pencarian

kompleksitasnya menggunakan bahasa Java, C sebagai konstanta, # sebagai ukuran masukan,

dan C. # (C kali #) adalah untuk mencari Theoritical Running Time (T(n)) atau kompleksitas

waktu, sehingga dapat dijumlahkan hasil dari perkalian C kali #, maka diperoleh hasil θ(m)

untuk pembentukan Good Suffix-nya

Tabel 4.4 Kompleksitas Boyer-Moore Check

Code C # C.#

public boolean check2() { C1 1 C1

long startMillis =

System.currentTimeMillis();

C2 1 C2

(45)
(46)

return result;

Tabel 4.4 adalah tabel kompleksitas algoritma Boyer-Moore , dimana proses pencarian

kompleksitasnya menggunakan bahasa Java, C sebagai konstanta, # sebagai ukuran masukan,

dan C. # (C kali #) adalah untuk mencari Theoritical Running Time (T(n)) atau kompleksitas waktu, sehingga dapat dijumlahkan hasil dari perkalian C kali #, maka diperoleh hasil θmn.

Maka untuk θ keseluruhan algoritma Boyer-Moore adalah sebagai berikut :

(47)

return duration;

double patternHash = getHash(pattern); C2 1 C2

int patternLength = pattern.length(); C2 1 C2

(48)

T(n) = 7C1+19C2+2C3+C3mn+C4m+C5m+C6m+C7m

= (7C1+19C2+2C3+C7)݉0+(C4+C5+C6+C7)݉1+(C3mn)

= ݉0+ ݉1+ m.n = θ(mn)

Tabel 4.5 adalah tabel kompleksitas algoritma Rabin-Karp , dimana proses pencarian

kompleksitasnya menggunakan bahasa Java, C sebagai konstanta, # sebagai ukuran masukan,

dan C. # (C kali #) adalah untuk mencari Theoritical Running Time (T(n)) atau kompleksitas

waktu, sehingga dapat dijumlahkan hasil dari perkalian C kali #, maka diperoleh hasil θ(mn).

(49)

T(n) = C1+2C2+5C2n+C6n+C7n+C8n

= (C1+2C2)݉0+(5C2+C6+C7+C8)݊1

= ݉0+ n = θm+n

= θ(mn)+ θ(m+n) = θ(mn)

Tabel 4.6 adalah tabel kompleksitas algoritma Rabin-Karp , dimana proses pencarian

kompleksitas nya menggunakan bahasa Java, C sebagai konstanta, # sebagai ukuran masukan,

dan C. # (C kali #) adalah untuk mencari Theoritical Running Time (T(n)) atau kompleksitas

waktu, sehingga dapat dijumlahkan hasil dari perkalian C kali #. Maka, diperoleh hasil θmn. Maka untuk θ keseluruhan algoritma Boyer-Moore adalah sebagai berikut :

θ(mn)(Rabin-Karp) + θ(mn)(Rabin-Karp(a)) = θmn. Maka, hasil kompleksitas algoritma Rabin-Karpadalah θ(mn).

Maka kompleksitas algoritma Boyer-Moore dan kompleksitas algoritma Rabin-Karp bernilai sama, yaitu : θ(mn).

4.3.2 Real-Running-Time

Tabel 4.7 Running-Time Boyer-Moore

n String Boyer-moore(s)

5 Peril 0,070 s

10 Perlindung 0,060 s

20 perlindungan khusus 0,080 s

30 perlindungan khusus adalah perl 0,100 s

40 perlindungan khusus adalah perlindungan y

0,100 s

50 perlindungan khusus adalah perlindungan yang diberik

0,090 s

60 perlindungan khusus adalah perlindungan yang diberikan kepada

(50)

perlindungan yang diberikan kepada anak dalam situasi darurat, anak yang

be

0,120 s

rata-rata 0,09181818181818 s

Pada tabel 4.7 n merupakan banyaknya string yang di ujicoba untuk menentukan hasil

real-running-time dalam penemuan string-nya. n(5) artinya panjang string yang diuji sebanyak 5

karakter, dan real-running-time yang dibutuhkan untuk penemuan 5 karakter adalah: 0,070 s.

n(10) artinya panjang string yang diuji sebanyak 10 karakter, dan real-running-time yang

dibutuhkan untuk penemuan 10 karakter adalah: 0,060 s. n(20) artinya panjang string yang

diuji sebanyak 20 karakter, dan real-running-time yang dibutuhkan untuk penemuan 20

karakter adalah: 0,080 s. n(30) artinya panjang string yang diuji sebanyak 30 karakter, dan

real-running-time yang dibutuhkan untuk penemuan 30 karakter adalah: 0,100 s. n(40)

artinya panjang string yang diuji sebanyak 40 karakter, dan real-running-time yang

dibutuhkan untuk penemuan 40 karakter adalah: 0,100 s. n(50) artinya panjang string yang

diuji sebanyak 50 karakter, dan real-running-time yang dibutuhkan untuk penemuan 50

karakter adalah: 0,080 s. n(60) artinya panjang string yang diuji sebanyak 60 karakter, dan

real-running-time yang dibutuhkan untuk penemuan 60 karakter adalah: 0,090 s. n(70)

artinya panjang string yang diuji sebanyak 70 karakter, dan real-running-time yang

dibutuhkan untuk penemuan 70 karakter adalah: 0,100 s. n(80) artinya panjang string yang

diuji sebanyak 80 karakter, dan real-running-time yang dibutuhkan untuk penemuan 5

karakter adalah: 0,090 s. n(90) artinya panjang string yang diuji sebanyak 90 karakter, dan

real-running-time yang dibutuhkan untuk penemuan 90 karakter adalah: 0,110 s. n(100)

artinya panjang string yang diuji sebanyak 100 karakter, dan real-running-time yang

(51)

Gambar 4.8 Grafik Running-Time Boyer-Moore

Pada gambar 4.8 sumbu X merupakan waktu real-running-time untuk mencari string dimulai

dari panjang sebanyak 5 karakter sampai dengan 100 karakter. Sumbu Y merupakan

banyaknya karakter yang diuji, n merupakan banyak karakter.

Disimpulkan bahwa waktu running-time dalam mencari string n(5) = 0,070 s, dan

menurun pada n(10) = 0,060 s, waktu running-time dalam mencari string n(100) = 0,530 s,

dengan rata-rata pencarian setiap string 0,09181818181818 s. Nilai rata-rata didapat dari

menjumlahkan semua waktu running-time dan membagi sebanyak berapa kali percobaan

yang diuji. Grafik yang terbentuk berbentuk linear yang artinya kompleksitas yang terbentuk adalah θ(mn).

0 0.1 0.2 0.3 0.4 0.5

n(5) n(10) n(20) n(30) n(40) n(50) n(60) n(70) n(80) n(90) n(100)

Boyer-Moore

(52)

Tabel 4.8 Running-Time Rabin-Karp

n String Rabin-Karp(s)

5 peril 0,180 s

10 perlindung 0,240 s

20 perlindungan khusus 0,410 s

30 perlindungan khusus adalah perl 0,590 s

40 perlindungan khusus adalah anak dalam situasi darurat, anak yang

be

0,840 s

rata-rata 0,618181818282 s

Pada tabel 4.8 n merupakan banyaknya string yang di ujicoba untuk menentukan hasil

real-running-time dalam penemuan string-nya. n(5) artinya panjang string yang diuji sebanyak 5

karakter, dan real-running-time yang dibutuhkan untuk penemuan 5 karakter adalah: 0,180 s.

n(10) artinya panjang string yang diuji sebanyak 10 karakter, dan real-running-time yang

dibutuhkan untuk penemuan 10 karakter adalah: 0,240 s. n(20) artinya panjang string yang

diuji sebanyak 20 karakter, dan real-running-time yang dibutuhkan untuk penemuan 20

karakter adalah: 0,410 s. n(30) artinya panjang string yang diuji sebanyak 30 karakter, dan

(53)

dibutuhkan untuk penemuan 40 karakter adalah: 0,670 s. n(50) artinya panjang string yang

diuji sebanyak 50 karakter, dan real-running-time yang dibutuhkan untuk penemuan 50

karakter adalah: 0,570 s. n(60) artinya panjang string yang diuji sebanyak 60 karakter, dan

real-running-time yang dibutuhkan untuk penemuan 60 karakter adalah: 0,770 s. n(70)

artinya panjang string yang diuji sebanyak 70 karakter, dan real-running-time yang

dibutuhkan untuk penemuan 70 karakter adalah: 0,810 s. n(80) artinya panjang string yang

diuji sebanyak 80 karakter, dan real-running-time yang dibutuhkan untuk penemuan 5

karakter adalah: 0,850 s. n(90) artinya panjang string yang diuji sebanyak 90 karakter, dan

real-running-time yang dibutuhkan untuk penemuan 90 karakter adalah: 0,870 s. n(100)

artinya panjang string yang diuji sebanyak 100 karakter, dan real-running-time yang

dibutuhkan untuk penemuan 100 karakter adalah: 0,840 s.

Gambar 4.9 Grafik Running-Time Rabin-Karp

Pada gambar 4.9 sumbu X merupakan waktu real-running-time untuk mencari string dimulai

dari panjang sebanyak 5 karakter sampai dengan 100 karakter. Sumbu Y merupakan

banyaknya karakter yang diuji, n merupakan banyak karakter.

Disimpulkan bahwa waktu running-time dalam mencari string n(5) = 0,840 s, dan

menurun pada n(50) = 0,570 s, running-time dalam mencari string n(100) = 0,840 s, dengan

rata-rata pencarian setiap string 0,618181818282 s. Nilai rata-rata didapat dari menjumlahkan

semua waktu running-time dan membagi sebanyak berapa kali percobaan yang diuji. Grafik 0

n(5) n(10) n(20) n(30) n(40) n(50) n(60) n(70) n(80) n(90) n(100)

Rabin-Karp

(54)

namun, pada saat running-time algoritma Rabin-Karp mempunyai kompleksitas θ(m+n).

Gambar 4.8 dan 4.9 dapat digabungkan untuk memudahkan perbandingkan waktu

running-time kedua algoritma tersebut, dapat dilihat pada gambar 4.10.

Tabel 4.9 Running-Time Boyer-Moore dan Rabin-Karp

n String Boyer-Moore (s) Rabin-Karp (s)

5 Peril 0,070 s 0,180 s

10 Perlindung 0,060 s 0,240 s

20 perlindungan khusus 0,080 s 0,410 s

30 perlindungan khusus adalah perl 0,100 s 0,590 s

40 perlindungan khusus adalah anak dalam situasi darurat, anak yang

be

(55)

Pada tabel 4.9 n merupakan banyaknya string yang di ujicoba untuk menentukan hasil

real-running-time dalam penemuan string-nya. n(5) artinya panjang string yang diuji sebanyak 5

karakter, dan real-running-time yang dibutuhkan untuk penemuan 5 karakter adalah: 0,070 s

dan 0,180 s. n(10) artinya panjang string yang diuji sebanyak 10 karakter, dan

real-running-time yang dibutuhkan untuk penemuan 10 karakter adalah: 0,060 s dan 0,240 s. n(20) artinya

panjang string yang diuji sebanyak 20 karakter, dan real-running-time yang dibutuhkan untuk

penemuan 20 karakter adalah: 0,080 s dan 0,410 s. n(30) artinya panjang string yang diuji

sebanyak 30 karakter, dan real-running-time yang dibutuhkan untuk penemuan 30 karakter

adalah: 0,100 s dan 0,590 s. n(40) artinya panjang string yang diuji sebanyak 40 karakter, dan

real-running-time yang dibutuhkan untuk penemuan 40 karakter adalah: 0,100 s dan 0,670 s.

n(50) artinya panjang string yang diuji sebanyak 50 karakter, dan real-running-time yang

dibutuhkan untuk penemuan 50 karakter adalah: 0,080 s dan 0,570 s. n(60) artinya panjang

string yang diuji sebanyak 60 karakter, dan real-running-time yang dibutuhkan untuk

penemuan 60 karakter adalah: 0,090 s dan 0,770 s. n(70) artinya panjang string yang diuji

sebanyak 70 karakter, dan real-running-time yang dibutuhkan untuk penemuan 70 karakter

adalah: 0,100 s dan 0,810 s. n(80) artinya panjang string yang diuji sebanyak 80 karakter, dan

real-running-time yang dibutuhkan untuk penemuan 5 karakter adalah: 0,090 s dan 0,850 s.

n(90) artinya panjang string yang diuji sebanyak 90 karakter, dan real-running-time yang

dibutuhkan untuk penemuan 90 karakter adalah: 0,110 s dan 0,870 s. n(100) artinya panjang

string yang diuji sebanyak 100 karakter, dan real-running-time yang dibutuhkan untuk

(56)

Gambar 4.10 Grafik Running-Time Boyer-Moore dan Rabin-Karp

Pada gambar 4.9 sumbu X merupakan waktu real-running-time untuk mencari string dimulai

dari panjang sebanyak 5 karakter sampai dengan 100 karakter. Sumbu Y merupakan

banyaknya karakter yang diuji, n merupakan banyak karakter.

Dapat diambil kesimpulan bahwa algoritma Rabin-Karp memerlukan waktu yang

lebih lama dalam penemuan string yang berukuran panjang n(5) – n(100). Sedangkan,

rata-rata waktu yang dibutuhkan dalam penemuan string untuk Boyer-Moore : 0,091818181818s,

Rabin-Karp : 0,618181818282s. Nilai rata-rata didapat dari menjumlahkan semua waktu running-time dan membagi sebanyak berapa kali percobaan yang diuji. Grafik yang terbentuk merupakan kompleksitas θ(mn).

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9

n(5) n(10) n(20) n(30) n(40) n(50) n(60) n(70) n(80) n(90) n(100)

Rabin-Karp

(57)

BAB 5

KESIMPULAN DAN SARAN

5.1 Kesimpulan

Berdasarkan hasil dari perbandingan algoritma Boyer-Moore dan algoritma Rabin-Karp

dalam pencarian string pada teks undang-undang perlindungan anak berbasis android, maka

dapat disimpulkan bahwa :

1. Sistem ini mengimplementasikan algoritma Boyer-Moore dan algoritma Rabin-Karp

dalam pencarian teks undang-undang perlindungan anak.

2. Dalam Algoritma Boyer-Moore pemeriksaan teks dilakukan dari kanan ke kiri teks,

dengan nilai lompatan string berdasarkan perbandingan table BmGs dan BmBc yang

terbentuk.

3. Dalam Algoritma Rabin-Karp pemeriksaan teks dilakukan dengan mencocokan nilai hash

pada teks, yang didapat dari tabel ASCII.

4. Real-Running-Time untuk algoritma Boyer-Moore memiliki rata-rata penemuan string :

0,091818181818 s dan algortima Rabin-Karp memiliki rata-rata penemuan string :

0,618181818282 s.

(58)

5.2 Saran

Adapun saran yang dapat diberikan untuk mengembangkan penelitian ini adalah sebagai

berikut:

1. Untuk pengembangan selanjutnya,diharapkan dapat menambahkan undang-undang IT

atau pun undang-undang lainnya.

2. Untuk pengembangan selanjutnya, diharapkan aplikasi ini menyediakan button view

untuk dapat melihat isi undang-undang perlindungan anak.

3. Untuk pengembangan selanjutnya, diharapkanaplikasi ini menyediakan menu pilihan

algoritma pencarian string dalam proses pencarian seperti Turbo, Knuth-Morris-Pratt,

(59)

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.

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

(60)

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

(61)

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

(62)

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

(63)

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 (...

(64)

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

(65)

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

(66)

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

(67)

Tabel 2.6 Proses Pencarian BmGs (a)

 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)

 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)

 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)

 Lakukan pengecekan apakah hasil i + i hasil = suffix : 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

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

(68)

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

(69)

 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

(70)

Tabel 2.15 Proses Pencarian BmGs (j)

 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 = 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 = 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

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 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 0 1 2 3 4 5 6

X[i] P R A D I T A

suffix 0 0 1 0 0 0 7

Gambar

Gambar 3.8 Flowchart Rabin-Karp
Gambar 3.11 Rancangan Interface Menu Tentang
Tabel 3.7 Keterangan Gamber Interface Menu Tentang Keterangan
Gambar 4.1 Menu Intro
+7

Referensi

Dokumen terkait

Puji syukur kepada tuhan Yang Maha Esa,penulis ucapkan karena skripsi dengan judul “ Perancangan Sistem Informasi Berbasis Web pada Biro Perjalanan PT.. Rikola Tour dan

Laba adalah pendapatan dan keuntungan setelah dikurangi beban dan kerugian. Laba merupakan pengukuran aktivitas operasi dan ditentukan menggunakan dasar akuntansi akrual. Dalam hal

Through IIFD-TF, the PPP Unit will hire a Procurement Specialist to provide technical assistance and support PPP Unit especially PMU,PPK and Pokja ULP in carrying out the

Pengadaan Jasa Outsourcing Pengemudi, Teknis dan Tenaga Fungsional Lainnya

Berdasarkan Berita Acara Evaluasi Penawaran Pengadaan Jasa Outsourching Pengemudi, Teknisi dan Tenaga Fungsional Lainnya TA 2015 dari Pokja Pengadaan Jasa Outsourching

Pengadaan barang/jasa dilaksanakan secara elektronik, dengan mengakses aplikasi Sistem Pengadaan Secara Elektronik (aplikasi SPSE) pada alamat: www.lpse.bkkbn.go.id.

Analisis SWOT terhadap faktor internal dan eksternal kantor cabang Medan, berhasil diproleh sembilan strategi dan kebijakan oprasional alternatif yang dapat diimplementasikan

Penerapan pendekatan inkuiri pada pembelajaran IPA mendapat respon baik dari peserta didik, Hal ini dapat dilihat dari aktivitas belajar peserta didik dan pemahamannya