• Tidak ada hasil yang ditemukan

Perbandingan Algoritma Knuth Morris Pratt dan Boyer Moore pada Aplikasi Kamus Bahasa Indonesia-Korea Berbasis Android

N/A
N/A
Protected

Academic year: 2017

Membagikan "Perbandingan Algoritma Knuth Morris Pratt dan Boyer Moore pada Aplikasi Kamus Bahasa Indonesia-Korea Berbasis Android"

Copied!
111
0
0

Teks penuh

(1)

LAMPIRAN

LISTING PROGRAM

<FrameLayout

xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent" android:layout_height="match_parent"

tools:context="com.vici.kamusindo_korea.PencarianFragment"> <!-- TODO: Update blank fragment layout -->

<RelativeLayout

(2)
(3)

<android.support.design.widget.FloatingActionButton android:id="@+id/fab1"

android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right|top"

android:src="@android:drawable/stat_notify_sync" /> </FrameLayout>

public class PencarianFragment extends Fragment { View view;

public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {

// Inflate the layout for this fragment view =

inflater.inflate(R.layout.fragment_pencarian,container,fal se);

final TextView tv_indo =(TextView) view.findViewById(R.id.textView); final TextView tv_korea = (TextView) view.findViewById(R.id.textView2); final EditText et_input = (EditText) view.findViewById(R.id.editText);

(4)

Button bt_bm = (Button) view.findViewById(R.id.bt_bm); helper = new

DatabaseOpenHelper(getActivity().getBaseContext()); cursor = null;

bt_kmp.setOnClickListener(new View.OnClickListener() { @Override

public void onClick(View view) {

String pat = et_input.getText().toString(); if (pat.equals("")) {

bt_bm.setOnClickListener(new View.OnClickListener() { @Override

public void onClick(View view) {

String pat = et_input.getText().toString(); if (pat.equals("")) {

Toast.makeText(getActivity(), "Masukan Masih Kosong", Toast.LENGTH_SHORT).show();

} else {

fab.setOnClickListener(new View.OnClickListener() { @Override

public void onClick(View view) {

(5)

}

public class Hasil_KMP_Activity extends AppCompatActivity { View view;

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

setContentView(R.layout.activity_hasil__kmp_); getSupportActionBar().setDisplayHomeAsUpEnabled(true);//button balik

(6)

AdapterView.OnItemClickListener() { @Override

public void onItemClick(AdapterView<?> parent, View view, int position, long id) { String a, b;

String indonya = ((TextView)

view.findViewById(R.id.indonya)).getText().toString(); String koreanya = ((TextView)

view.findViewById(R.id.koreanya)).getText().toString(); ImageView imgnya = ((ImageView)

view.findViewById(R.id.imageView1));

ImageView imageView = new ImageView(getApplicationContext()); imageView.setImageDrawable(imgnya.getDrawable());

AlertDialog dialog = new

AlertDialog.Builder(Hasil_KMP_Activity.this)

public void onClick(DialogInterface dialog, int which) { dialog.dismiss();

fab.setOnClickListener(new View.OnClickListener() { @Override

(7)

temp = String.valueOf(wTotal);

public void onClick(DialogInterface dialog, int which) { dialog.dismiss();

}

}).create(); dialog.show();

}

(8)

Log.d("Print", "catch update list");

public void KMP_start(String getTxt, String getPatt, String getIndo, String getKorea, byte[] getImage) {

(9)

i = j = 0;

public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId();

<?xml version="1.0" encoding="utf-8"?>

<android.support.design.widget.CoordinatorLayout

xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"

android:layout_height="match_parent" android:fitsSystemWindows="true"

tools:context="com.vici.kamusindo_korea.Hasil_KMP_Activity"> <include layout="@layout/content_hasil__kmp_" />

<android.support.design.widget.FloatingActionButton android:id="@+id/fab"

android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|end"

android:layout_margin="@dimen/fab_margin"

android:src="@android:drawable/ic_dialog_info" /> </android.support.design.widget.CoordinatorLayout>

(10)

package com.vici.kamusindo_korea;

public class Hasil_BM_Activity extends AppCompatActivity { View view;

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

setContentView(R.layout.activity_hasil__bm_);

getSupportActionBar().setDisplayHomeAsUpEnabled(true);//button balik

getSupportActionBar().setHomeButtonEnabled(true);//button balik getSupportActionBar().setTitle("Hasil Pencarian..."); pat = getIntent().getStringExtra("pat");

state = getIntent().getStringExtra("state"); getSupportActionBar().setSubtitle(pat);

(11)

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

@Override

public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

ImageView imageView = new ImageView(getApplicationContext()); imageView.setImageDrawable(imgnya.getDrawable());

AlertDialog dialog = new

AlertDialog.Builder(Hasil_BM_Activity.this)

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);

(12)

wMulai = System.currentTimeMillis(); AlertDialog dialog = new

AlertDialog.Builder(Hasil_BM_Activity.this)

public void onClick(DialogInterface dialog, int which) { dialog.dismiss();

}

}).create(); dialog.show();

}

(13)

try {

public void BM_start(String getTxt, String getPat, String getIndo, String getKorea, byte[] getImage) {

(14)
(15)

} else {

public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId();

<?xml version="1.0" encoding="utf-8"?>

<android.support.design.widget.CoordinatorLayout

xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"

android:layout_height="match_parent" android:fitsSystemWindows="true"

tools:context="com.vici.kamusindo_korea.Hasil_BM_Activity"> <include layout="@layout/content_hasil__bm_" />

<android.support.design.widget.FloatingActionButton android:id="@+id/fab"

android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|end"

android:layout_margin="@dimen/fab_margin"

android:src="@android:drawable/ic_dialog_info" /> </android.support.design.widget.CoordinatorLayout>

(16)

DAFTAR RIWAYAT HIDUP

DATA PRIBADI

Nama Lengkap : Vici Indah Yana Jenis Kelamin : Perempuan

Tempat, Tanggal Lahir : Medan, 18 Agustus 1994

Alamat : Jl. Alumunium 2 No.11 Tanjung Mulia Medan

Agama : Islam

Telp/Hp : 0852 7627 4833

E-mail : indahyanavici@gmail.com

Pendidikan Terakhir : Universitas Sumatera Utara Medan, Fakultas Ilmu Komputer dan Teknologi Informasi. Jurusan S1 Ilmu Komputer

PENDIDIKAN FORMAL

1998 – 2000 : TK Swasta YWKA Medan 2000 – 2006 : SD Swasta YWKA Medan 2006 – 2009 : SMP Negeri 11 Medan 2009 – 2012 : SMA Negeri 7 Medan

2012 – 2016 : S1 Ilmu Komputer Universitas Sumatera Utara, Medan

PENDIDIKAN INFORMAL

(17)

PENGALAMAN ORGANISASI

 Wakil Ketua Pramuka SD Swasta YWKA Medan, 2002-2003

 Anggota Paduan Musik dan Suara SMP Negeri 11 Medan, 2006-2009  Anggota PMR SMA Negeri 7 Medan, 2010-2011

 Anggota Kewirausahaan UKMI Al Khwarizmi Fasilkom-TI USU, 2012-2014  Anggota KAM RABBANI, Fasilkom-TI USU, 2013-2014

PENGALAMAN KEPANITIAAN

 Anggota panitia konsumsi PORSENI, 2014

 Sekretaris panitia MEET AND GREET Kam Rabbani, 2014  Anggota panitia konsumsi PMB, 2014

SEMINAR

 Seminar Nasional Literasi Informasi “SENARAI”, 2014

(18)

Argakusumah, K.W. & Hansun, S. 2014. Implementasi Algoritma Boyer Moore Pada Aplikasi Kamus Kedokteran Berbasis Android. Jurnal Ultimatics 6(2): 71-72.

Bille, P. 2011. Fast searching in packed strings. Journal of Discrete Algorithm 9: 49-56.

Buulolo, E. 2013. Implementasi Algoritma String Matching dalam Pencarian Surat dan Ayat dalam Bible Berbasis Android. Jurnal Pelita Informatika

Budi Darma 3: 23-24.

Charras, C. & Lecroq, T. 2004. Handbook of Exact String-Matching Algorithms. King College Publications : Guernsey.

Cormen, T.H, Leiserson, C.E, Rivest, R.L. & Stein, C. 2009. Introduction to

Algorithms. 3th Edition. The MIT Press:England.

Effendi, D., Hartono, T. & Kurnaedi, A. 2013. Penerapan String Matching Menggunakan Algoritma Boyer-Moore pada Translator Bahasa Pascal ke C. Jurnal UNIKOM 11(2): 266.

Ervana, A. & Pertiwi, A. 2012. Implementasi Algoritma Pencocokan String pada Aplikasi Pengarsipan Berbasis Web. Jurnal Informatika 3(2): 3-4.

Franek, F., Jennings, C.G. & Smyth, W.F. 2007. A Simple fast hybrid pattern-matching algorithm. Journal of Discrete Algorithm 5: 628-695.

Hajar, T.I. 2015. Implementasi Algoritma Levenshtein Distance dan Boyer Moore untuk Fitur Autocomplete dan Autocorrect pada Aplikasi Katalog Perpustakaan Daerah Aceh Timur. Skripsi. Universitas Sumatera Utara. Kadir, A. & Heriyanto. 2005. Algoritma Pemograman menggunakan C++. Andi:

Yogyakarta.

Linhart, C. & Shamir, R. 2009. Faster pattern matching with character classes using prime number encoding. Journal of Computer and System Sciences 75: 155-162.

(19)

Nugraha, D.W. 2012. Penerapan kompleksitas waktu Algoritma Prim untuk menghitung kemampuan komputer dalam melaksanakan perintah. Jurnal

Ilmiah Foristek 2(2):196-197.

Priyatna, R.D. 2015. Implementasi Algoritma Levenshtein Distance dan Knuth Morris Pratt dalam Fitur Word Completion Pada Search Engine. Skripsi. Universitas Sumatera Utara.

Safaat, N. 2015. Android Pemograman Aplikasi Mobile Smartphone dan Tablet

PC Berbasis Android. Revisi kedua. Informatika Bandung:Bandung.

Silitonga, Y. 2015. Implementasi Pembuatan Kamus Bahasa Batak Toba-Indonesia-Inggris menggunakan Algoritma Boyer-Moore pada Platform Android. Skripsi. Universitas Sumatera Utara.

Singla, N. & Garg, D. 2012. String matching algorithms and their applicability in various applications. International Journal of Soft Computing and

Engineering 1(6): 2231 – 2307.

Subandijo. 2011. Efisiensi Algoritma dan Notasi O-besar. Jurnal ComTech 2(2):850-858.

Suntoro, M. 2015. Implementasi Algoritma Pecocokan String Boyer-Moore dalam Pembuatan Contact Manager pada Platform Android. Skripsi. Universitas Sumatera Utara.

Susanto. 2014. Perancangan Aplikasi Kamus Istilah Latin Hewan dan Tumbuhan dengan Menerapkan Algoritma Boyer-Moore Berbasis Mobile. Jurnal

Informasi dan Teknologi Ilmiah (INTI) 4(3):88-90.

(20)

ANALISIS DAN PERANCANGAN SISTEM

3.1 Analisis Sistem

Analisis sistem adalah sebuah teknik pemecahan masalah dimana sistem diuraikan menjadi komponen-kompenen dengan tujuan untuk mempelajari kinerja masing-masing komponen tersebut dalam mencapai tujuan sistem. Tahapan ini dilakukan agar pada saat proses perancangan aplikasi tidak terjadi kesalahan dan sistem dapat berjalan sesuai dengan tujuan utama. Ada dua tahapan analisis dalam tugas akhir ini yaitu analisis masalah dan analisis persyaratan. Analisis masalah untuk memahami kelayakan masalah dan analisis persyaratan untuk menjelaskan fungsi-fungsi yang ditawarkan dan mampu dikerjakan oleh sistem.

3.1.1 Analisis Masalah

Analisis masalah merupakan proses mengidentifikasi sebab dan akibat dibangunnya sebuah sistem agar sistem yang akan dibangun tersebut dapat berjalan sebagaimana mestinya sesuai dengan tujuan dari sistem itu. Selama ini jika seseorang ingin mempelajari bahasa asing,media yang digunakan untuk memperlancar penguasaan kosakatanya adalah melalui kamus. Aplikasi kamus didalam Smartphone tidak mencari kata secara manual. Tetapi dengan adanya fasilitas pencarian pada aplikasi kamus tersebut mempermudah user mendapatkan kata yang ingin dicarinya. Dengan memanfaatkan salah satu dari Algoritma String

Matching seperti Algoritma Knuth Morris Pratt dan Algoritma Boyer Moore, maka

mempermudah dan mempercepat pencarian kata dalam kamus.

Pencarian kata adalah masalah yang akan diselesaikan dengan menggunakan sistem ini. Untuk mengidentifikasi masalah tersebut digunakan diagram Ishikawa (fishbone diagram). Diagram Ishikawa berbentuk seperti ikan yang strukturnya terdiri dari kepala ikan (fish’s head) dan tulang-tulang ikan (fish’s

(21)

kepala ikan. Sedangkan tulang-tulang ikan menggambarkan penyebab-penyebab masalah tersebut. Diagram Ishikawa pada sistem ini dapat dilihat pada Gambar 3.1

Gambar 3.1 Diagram Ishikawa

Pada Gambar 3.1 dapat dilihat bahwa terdapat empat kategori penyebab masalah pada penelitian pencarian kata pada kamus Bahasa Asing dengan menggunakan Algoritma String Matching yang digambarkan dengan tanda panah yang mengarah ke tulang utama, yaitu berkaitan dengan pengguna (user), bahan (material), metode (method) dan media/alat yang terlibat (machine). Setiap detail penyebab masalah tersebut digambarkan dengan tanda panah yang mengarah ke masing-masing kategori.

3.1.2 Analisis Persyaratan

(22)

3.1.2.1 Persyaratan Fungsional

Persyaratan fungsional disini mendeskripsikan tentang sistem yang disediakan. Terdapat beberapa hal yang menjadi persyaratan fungsional pada Aplikasi Kamus Bahasa Indonesia-Korea, antara lain :

1. Sistem melakukan pencocokan string melalui kata yang diinput oleh pengguna. 2. Sistem dapat menghasilkan kata terjemahan dari inputan yang dicari dengan

menggunakan Algoritma Knuth Morris Pratt dan Algoritma Boyer Moore 3. Sistem melakukan inputan dan hasil pencarian hanya berupa kata dan tidak

berupa kalimat

3.1.2.2 Persyaratan Non-Fungsional

Persyaratan non fungsional sistem merupakan karakteristik atau batasan yang menentukan kepuasan pada sebuah sistem seperti kinerja, kemudahan pengguna, biaya, dan kemampuan sistem bekerja tanpa mengganggu fungsionalitas sistem lainnya. Terdapat beberapa persyaratan non-fungsional yang harus dipenuhi diantaranya :

1. Performa

Sistem yang akan dibangun harus dapat menampilkan hasil pencarian yang sesuai dengan apa yang dicari.

2. Mudah digunakan

Sistem yang akan dibangun harus mudah digunakan (user friendly), artinya sistem ini akan mudah digunakan oleh user dengan tampilan yang sederhana dan dapat dimengerti.

3. Hemat biaya

Sistem yang dibangun tidak memerlukan perangkat tambahan ataupun perangkat pendukung lainnya yang dapat mengeluarkan biaya.

4. Kontrol

Sistem yang dibangun mampu menampilkan pesan ketika tidak ada inputan yang akan dicari.

5. Manajemen Kualitas

(23)

3.2 Pemodelan

Pemodelan sistem dilakukan untuk memperoleh gambaran cara kerja sistem dan tentang objek apa saja yang akan berinteraksi dengan sistem, serta hal-hal apa saja yang harus dilakukan oleh sebuah sistem sehingga sistem dapat berfungsi dengan baik sesuai dengan kegunaannya.

Pada penelitian ini digunakan UML (Unified Modeling Language) sebagai bahasa pemodelan untuk mendesain dan merancang aplikasi Kamus Bahasa Indonesia-Korea. Model UML yang digunakan antara lain Use Case Diagram,

Activity diagram, dan Sequence diagram.

3.2.1. Use Case Diagram

Use Case Diagram adalah sebuah diagram yang dapat merepresentasikan interaksi

yang terjadi antara user dengan sistem. Diagram use case ini mendeskripsikan siapa saja yang menggunakan sistem dan bagaimana cara mereka berinteraksi dengan sistem. Use Case Diagram dari sistem yang akan dibangun dapat ditunjukkan pada Gambar 3.2.

(24)

Didalam use case diagram dapat digambarkan bahwa terdapat 1(satu) orang aktor yang akan berperan yaitu user. Untuk memperoleh kata terjemahan maka user harus menentukan tipe terjemahan terlebih dahulu,seperti bahasa Indonesia-Korea atau bahasa Korea-Indonesia. Selanjutnya user harus memasukkan input berupa kata yang ingin diterjemahkan ke dalam search box. Selanjutnya user memilih Algoritma yang ingin digunakan antara Algoritma Knuth Morris Pratt dan Algoritma Boyer Moore. Setelah Algoritma dipilih lalu sistem akan melakukan pencarian dan menampilkan hasil terjemahan. Pada Proses Menentukan tipe terjemahan dapat dinyatakan dalam Tabel 3.1.

Tabel 3.1 Use Case Proses Menentukan tipe terjemahan

Name Menentukan tipe terjemahan

Actors User

Description Use Case ini mendeskripsikan proses menentukan tipe

terjemahan, seperti bahasa Indonesia-Korea atau bahasa Korea-Indonesia

Basic Flow User menentukan tipe terjemahan

Alternate Flow User dapat memilih bahasa Indonesia-Korea atau bahasa

Korea-Indonesia

Pre Condition User ingin menentukan tipe terjemahan

Post Condition User telah menetapkan tipe terjemahan

Pada Proses Input kata, dapat dinyatakan dalam Tabel 3.2 Tabel 3.2 Use Case Proses Input kata

Name Input kata

Actors User

Description Use Case ini mendeskripsikan penginputan kata yang ingin

(25)

Basic Flow User menginput kata

Alternate Flow -

Pre Condition User ingin menginput kata

Post Condition User mendapatkan hasil pencarian kata

Pada Proses Algoritma Knuth Morris Pratt, dapat dinyatakan dalam Tabel 3.3 Tabel 3.3 Use Case Proses Algoritma Knuth Morris Pratt

Name Algoritma Knuth Morris Pratt

Actors User

Description Use Case ini mendeskripsikan proses pencarian kata

menggunakan Algoritma Knuth Morris Pratt

Basic Flow User memilih Algoritma Knuth Morris Pratt

Alternate Flow User memilih Algoritma Boyer Moore

Pre Condition User ingin mencari kata

Post Condition User mendapatkan hasil pencarian kata

Pada Proses Algoritma Boyer Moore, dapat dinyatakan dalam Tabel 3.4 Tabel 3.4 Use Case Proses Algoritma Boyer Moore

Name Algoritma Boyer Moore

Actors User

Description Use Case ini mendeskripsikan proses pencarian kata

menggunakan Algoritma Boyer Moore

Basic Flow User memilih Algoritma Boyer Moore

Alternate Flow User memilih Algoritma Knuth Morris Pratt

Pre Condition User ingin mencari kata

(26)

3.2.2 Activity Diagram

Activity diagram adalah diagram aktivitas yang mendeskripsikan proses kerja

dalam sebuah sistem yang sedang berjalan. Activity diagram bertujuan untuk membantu memahami keseluruhan proses dan menggambarkan interaksi antara beberapa Use Case Diagram. Activity diagram dari sistem yang akan dibangun dapat ditunjukkan pada Gambar 3.3.

Gambar 3.3 Activity Diagram Sistem

Didalam Activity diagram dapat dijelaskan bahwa user harus menentukan tipe terjemahan terlebih dahulu,seperti bahasa Indonesia-Korea atau bahasa Korea-Indonesia. Lalu sistem menetapkan tipe terjemahan yang telah dipilih. Selanjutnya

(27)

user menginput kata yang ingin dicari. Lalu user memilih Algoritma untuk

melakukan pencarian kata. Maka sistem melakukan pemanggilan fungsi pada Algoritma yang telah dipilih. Lalu sistem akan menampilkan hasil pencarian sesuai dengan Algoritma yang telah dipilih.

3.2.3 Sequence Diagram

Sequence diagram adalah suatu diagram yang menggambarkan interaksi antar

objek pada sistem dalam sebuah urutan waktu atau rangkaian waktu. Sequence

diagram dari sistem yang akan dibangun dapat ditunjukkan pada Gambar 3.4

Gambar 3.4 Sequence Diagram Sistem

Pada tahap ini, yang dilakukan user adalah menentukan tipe terjemahan terlebih dahulu,seperti bahasa Indonesia-Korea atau bahasa Korea-Indonesia di tampilan menu. Lalu tampilan menu menetapkan tipe terjemahan yang telah dipilih. Selanjutnya yang dilakukan user adalah menginput kata yang ingin dicari dan memilih algoritma untuk melakukan pencarian, lalu akan memanggil fungsi Algoritma yang telah dipilih. Kemudian menampilkan hasil pencarian kata kepada

(28)

3.3 Pseudocode

3.3.1 Pseudocode Algoritma Knuth Morris Pratt

Algoritma Knuth Morris Pratt memiliki dua fungsi yaitu fungsi preKmp (pre Knuth

Morris Pratt) dan fungsi KMP (pencarian Knuth Morris Pratt). Pseudocode untuk

masing-masing fungsi ditunjukkan pada Tabel 3.5 dan Tabel 3.6 Tabel 3.5 Pseudocode preKmp

Tabel 3.6 Pseudocode KMP

procedure preKmp (x : array of char, m : integer, kmpNext : array of integer)

procedure KMP (x:array of char, m:integer, y:array of char, n:integer)

Deklarasi : i, j : integer

(29)

3.3.2 Pseudocode Algoritma Boyer Moore

Algoritma Boyer Moore memiliki empat fungsi yaitu fungsi suffix, fungsi prebmGs (pre Good-suffix shift), fungsi prebmBc (pre Bad-character suffix) dan fungsi BM (pencarian Boyer Moore). Pseudocode untuk masing-masing fungsi ditunjukkan pada Tabel 3.7, 3.8, 3.9, dan 3.10.

Tabel 3.7 Pseudocode suffix

Tabel 3.8 Pseudocode prebmGs

procedure suffixes (x:array of char, m:integer, suff:array of integer)

(30)

Tabel 3.9 Pseudocode prebmBc

Tabel 3.10 Pseudocode BM

procedure preBmBc (x:array of char, m:integer, bmBc :array of integer)

procedure BM (x:array of char, m:integer, y:array of char, n:integer)

Deklarasi : i, j : integer

(31)

3.4 Flowchart

Flowchart merupakan gambar atau bagan yang memperlihatkan urutan dan

hubungan antar proses beserta pernyataannya. Gambaran ini dinyatakan dengan simbol. Dengan demikian setiap simbol menggambarkan proses tertentu. Sedangkan antara proses digambarkan dengan garis penghubung. Flowchart yang akan dibangun dapat ditunjukkan pada Gambar 3.5, 3.6, dan 3.7

Gambar 3.5 Flowchart Gambaran Umum Sistem Kamus

(32)

Gambar 3.6 Flowchart Algoritma Knuth Morris Pratt

Gambar 3.6 Menggambarkan alur pada proses pencarian Algoritma Knuth

Morris Pratt, dimana proses awal yang dilakukan yaitu memasukkan pola di dalam

text yang tersedia. Proses pencarian dimulai dari karakter paling kiri ke kanan

pattern. Setiap karakter akan dibandingkan satu per satu. Jika terjadi

ketidakcocokan, maka akan dicek nilai shift[i] dan bergeser sesuai dengan nilai

shift[i] seperti pada Tabel 2.1 Dan jika terjadi kecocokan maka mengeluarkan hasil

(33)

Gambar 3.7 Flowchart Algoritma Boyer Moore

Gambar 3.7 Menggambarkan alur pada proses pencarian Algoritma Boyer

Moore, dimana proses awal yang dilakukan yaitu memasukkan pola di dalam text

yang tersedia. Proses pencarian dimulai dari karakter paling kanan ke kiri pattern. Setiap karakter akan dibandingkan satu per satu. Jika terjadi ketidakcocokan, maka akan dicek nilai pergeseran yang dilakukan dengan melihat ke tabel bad-character

shift Tabel 2.4 dan good-suffix shift Tabel 2.3 Nilai terbesar yang didapat di antara

kedua tabel tersebut akan diambil dan pergeseran akan dilakukan sesuai dengan nilai tersebut. Dan jika terjadi kecocokan maka mengeluarkan hasil pencarian dan selesai.

Mulai

Masukkan pola

Pencocokan karakter dari kanan ke kiri

Apakah karakter

cocok?

Bandingkan karakter per karakter

Geser pola berdasarkan tabel bmGs dan bmBc

Hasil pencarian kata

Selesai yes

(34)

3.5 Perancangan Antarmuka Sistem (Interface)

Proses perancangan antarmuka (interface) sebuah sistem adalah proses yang cukup penting dalam perancangan sebuah sistem. Merancang antarmuka merupakan bagian yang paling penting dari merancang sebuah sistem. Sebuah antarmuka harus dirancang dengan memperhatikan faktor pengguna sehingga sistem yang dibangun dapat memberikan kenyamanan dan kemudahan untuk digunakan oleh pengguna.

3.5.1 Rancangan Halaman Splash Screen

Halaman Splash Screen merupakan halaman yang pertama kali muncul pada saat sistem dibuka. Rancangan Splash Screen dapat dilihat pada Gambar 3.8

Gambar 3.8 Rancangan Splash Screen

Keterangan :

1. Splash Screen untuk menampilkan loading progress saat pertama kali membuka

(35)

3.5.2 Rancangan Navigation Drawer

Navigation Drawer terdiri dari Header, Beranda, Pencarian, Fitur, Bantuan,

Tentang, dan Keluar. Rancangan Navigation Drawer dapat dilihat pada Gambar 3.9

Gambar 3.9 Rancangan Navigation Drawer

Keterangan :

1. Header berisi Logo Kamus.

2. Menu Beranda berisi pembelajaran dasar huruf hangul. 3. Menu Pencarian untuk melakukan pencarian kata.

4. Menu Fitur berisi menu-menu untuk bahasa korea seperti alat makan,angka, buah, elektronik, hari, hewan, keluarga, profesi, dan sayuran.

5. Menu Bantuan untuk panduan user menggunakan aplikasi beserta penjelasan Algoritma.

(36)

3.5.3 Rancangan Halaman Beranda

Halaman Beranda terdapat beberapa button yang akan menampilkan pembelajaran dasar huruf hangul seperti cara penulisan dan pelafalan huruf hangul. Rancangan Beranda dapat dilihat pada Gambar 3.10

Gambar 3.10 Rancangan Beranda

Keterangan :

1. Navigation Drawer

2. Button untuk menampilkan huruf-huruf hangul beserta pelafalannya.

3.5.4 Rancangan Halaman Pencarian

(37)

Gambar 3.11 Rancangan Pencarian

Keterangan :

1. Navigation Drawer.

2. textView untuk menampilkan teks.

3. Floating action button sebagai shortcut dari menu yang digunakan untuk

mengganti bahasa.

4. textView untuk menampilkan teks.

5. editText untuk menangkap input yang diketik user.

6. button untuk melakukan pencarian kata menggunakan Algoritma Knuth Morris Pratt. Rancangan setelah diklik Button dapat dilihat pada Gambar

3.12

(38)

Gambar 3.12 Rancangan Hasil Pencarian

Keterangan :

1. back untuk kembali ke halaman sebelumnya.

2. textView untuk menampilkan teks.

3. textView untuk menampilkan teks.

4. imageView untuk menampilkan gambar berupa huruf hangul. Rancangan

setelah diklik imageView akan muncul Alert dialog dapat dilihat pada Gambar 3.13

5. textView untuk menampilkan teks.

6. textView untuk menampilkan teks.

7. Floating action button sebagai shortcut dari menu yang digunakan untuk

melihat hasil Running Time. Rancangan setelah diklik Floating action

(39)

Gambar 3.13 Rancangan Alert Dialog Terjemahan

Keterangan :

1. textView untuk menampilkan teks.

2. textView untuk menampilkan teks.

3. textView untuk menampilkan teks.

4. imageView untuk menampilkan gambar berupa huruf hangul. 5. button untuk menutup Alert dialog.

Gambar 3.14 Rancangan Alert Dialog Hasil

Keterangan :

1. textView untuk menampilkan teks.

2. textView untuk menampilkan waktu pencarian.

3. textView untuk menampilkan jumlah teks yang ditemukan.

(40)

3.5.5 Rancangan Halaman Fitur

Halaman Fitur berisi menu-menu untuk bahasa korea berdasarkan katagori seperti alat makan, angka, buah, elektronik, hari, hewan, keluarga, profesi, sayuran. Rancangan Fitur dapat dilihat pada Gambar 3.15

Gambar 3.15 Rancangan Fitur

Keterangan :

1. Navigation Drawer.

2. listView untuk menampilkan item-item dari sekumpulan daftar fitur yang

tersusun berbaris ke bawah dengan tampilan yang dapat scroll.

3.5.6 Rancangan Halaman Bantuan

(41)

Gambar 3.16 Rancangan Tampilan Bantuan

Keterangan :

1. Navigation Drawer.

2. button untuk melihat panduan pemakaian aplikasi.

3. button untuk melihat penjelasan algoritma yang digunakan pada aplikasi.

4. textView untuk menampilkan teks.

3.5.7 Rancangan Halaman Tentang

(42)

Gambar 3.17 Rancangan Tentang

Keterangan :

1. Navigation Drawer.

2. ImageView menampilkan foto pembuat aplikasi.

3. ImageView menampilkan judul penelitian dan pembuat aplikasi.

3.5.8 Rancangan Halaman Keluar

Halaman Keluar berupa alert dialog ini merupakan untuk mengeluarkan user dari aplikasi Rancangan Keluar dapat dilihat pada Gambar 3.18

(43)

Keterangan :

1. textView untuk menampilkan teks.

2. textView untuk menampilkan teks. 3. Button untuk tidak keluar dari aplikasi.

(44)

BAB 4

IMPLEMENTASI DAN PENGUJIAN SISTEM

4.1 Implementasi

Implementasi sistem merupakan lanjutan dari tahap analisis dan perancangan sistem. Sistem ini dibangun dengan menggunakan bahasa pemrograman Java dan menggunakan Software Android Studio. Pada sistem ini terdapat 8 (delapan) tampilan halaman, yaitu Halaman Splash Screen, Navigation Drawer, Halaman Beranda, Halaman Pencarian, Halaman Fitur, Halaman Bantuan, Halaman Tentang, dan Halaman Keluar

4.1.1 Halaman Splash Screen

Halaman Splash Screen merupakan halaman yang pertama kali muncul pada saat sistem dibuka. Halaman Splash Screen dapat dilihat pada Gambar 4.1

(45)

4.1.2 Navigation Drawer

Navigation Drawer terdiri dari Header, Beranda, Pencarian, Fitur, Bantuan,

Tentang, dan Keluar. Halaman Navigation Drawer dapat dilihat pada Gambar 4.2

Gambar 4.2 Halaman Navigation Drawer

4.1.3 Halaman Beranda

Halaman Beranda terdapat beberapa button yang akan menampilkan pembelajaran dasar huruf hangul seperti cara penulisan dan pelafalan huruf hangul. Halaman Beranda dapat dilihat pada Gambar 4.3

(46)

4.1.4 Halaman Pencarian

Halaman Pencarian berfungsi melakukan pencarian kata pada kamus sesuai dengan algoritma yang dipilih. Halaman Pencarian dapat dilihat pada Gambar 4.4. Terdapat Floating action button untuk melihat hasil Running Time. Tampilan setelah diklik Floating action button akan muncul Alert dialog dapat dilihat pada Gambar 4.5. Tampilan setelah diklik imageView akan muncul Alert dialog Terjemahan dapat dilihat pada Gambar 4.6

Gambar 4.4 Halaman Pencarian

(47)

Gambar 4.6 Alert dialog Terjemahan

4.1.5 Halaman Fitur

Halaman Fitur berisi menu-menu untuk bahasa korea berdasarkan kategori seperti Alat Makan, Angka, Buah, Elektronik, Hari, Hewan, Keluarga, Profesi, Sayuran. Halaman Fitur dapat dilihat pada Gambar 4.7.

(48)

4.1.6 Halaman Bantuan

Halaman Bantuan merupakan panduan user untuk menggunakan aplikasi beserta penjelasan Algoritma yang dipakai pada pencarian kamus. Halaman Bantuan dapat dilihat pada Gambar 4.8.

Gambar 4.8 Halaman Bantuan.

4.1.7 Halaman Tentang

Halaman Tentang berisi Judul Aplikasi dan Nama pembuat Aplikasi. Halaman Tentang dapat dilihat pada Gambar 4.9.

(49)

4.1.8 Halaman Keluar

Halaman Keluar berupa alert dialog ini berfungsi untuk mengeluarkan user dari aplikasi. Halaman Keluar dapat dilihat pada Gambar 4.10.

(50)

4. 2 Pengujian Sistem

Pengujian sistem dilakukan untuk mengetahui bagaimana kinerja sistem dalam pencarian kata pada kamus Bahasa Indonesia-Korea menggunakan Algoritma

Knuth Morris Pratt dan Algoritma Boyer Moore. Dalam pengujian yang akan

dicari adalah string sebagai inputannya. Semua hasil pencarian ditampilkan sesuai dengan inputan yang match pada pencarian.

4.2.1 Pengujian Pencarian kata pada Kamus Bahasa Indonesia-Korea dengan Algoritma Knuth Morris Pratt

Tabel 4.1 Hasil Pencarian kata “a” dengan Algoritma Knuth Morris Pratt

Hasil

Pencarian

Gambar Hasil

Pencocokan

Gambar Hasil Running Time dan

Jumlah kata yang ditemukan

Match

Tabel 4.1 menjelaskan tentang hasil pencarian kata “a” match dengan teks yang

ada. Pencarian kata “a” dengan waktu pencarian 166.0 ms dan terdapat 1689 kata

(51)

Tabel 4.2 Hasil Pencarian kata “an” dengan Algoritma Knuth Morris Pratt

Hasil

Pencarian

Gambar Hasil

Pencocokan

Gambar Hasil Running Time dan

Jumlah kata yang ditemukan

Match

Tabel 4.2 menjelaskan tentang hasil pencarian kata “an” match dengan teks yang

ada. Pencarian kata “an” dengan waktu pencarian 146.0 ms dan terdapat 349 kata

yang ditemukan didalam teks.

Tabel 4.3 Hasil Pencarian kata “ma” dengan Algoritma Knuth Morris Pratt

Hasil

Pencarian

Gambar Hasil

Pencocokan

Gambar Hasil Running Time dan

Jumlah kata yang ditemukan

Match

Tabel 4.3 menjelaskan tentang hasil pencarian kata “ma” match dengan teks yang

ada. Pencarian kata “ma” dengan waktu pencarian 134.0 ms dan terdapat 116 kata

(52)

Tabel 4.4 Hasil Pencarian kata “perempuan” dengan Algoritma Knuth Morris

Pratt

Hasil

Pencarian

Gambar Hasil

Pencocokan

Gambar Hasil Running Time dan

Jumlah kata yang ditemukan

Match

Tabel 4.4 menjelaskan tentang hasil pencarian kata “perempuan” match dengan

teks yang ada. Pencarian kata “perempuan” dengan waktu pencarian 133.0 ms dan

terdapat 8 kata yang ditemukan didalam teks.

Tabel 4.5 Hasil Pencarian kata “komput” dengan Algoritma Knuth Morris Pratt

Hasil

Pencarian

Gambar Hasil

Pencocokan

Gambar Hasil Running Time dan

Jumlah kata yang ditemukan

Match

Tabel 4.5 menjelaskan tentang hasil pencarian kata “komput” match dengan teks

(53)

Tabel 4.6 Hasil Pencarian kata “ch” dengan Algoritma Knuth Morris Pratt

Hasil

Pencarian

Gambar Hasil

Pencocokan

Gambar Hasil Running Time dan

Jumlah kata yang ditemukan

Match

Tabel 4.6 menjelaskan tentang hasil pencarian kata “ch” match dengan teks yang

ada. Pencarian kata “ch” dengan waktu pencarian 144.0 ms dan terdapat 218 kata

yang ditemukan didalam teks.

Tabel 4.7 Hasil Pencarian kata “imnida” dengan Algoritma Knuth Morris Pratt

Hasil

Pencarian

Gambar Hasil

Pencocokan

Gambar Hasil Running Time dan

Jumlah kata yang ditemukan

Mis Match

Tabel 4.7 menjelaskan tentang hasil pencarian kata “imnida” mis match dengan

teks yang ada. Pencarian kata “imnida” dengan waktu pencarian 115.0 ms dan

(54)

Tabel 4.8 Hasil Pencarian kata “keopyuteogong” dengan Algoritma Knuth Morris

Pratt

Hasil

Pencarian

Gambar Hasil

Pencocokan

Gambar Hasil Running Time dan

Jumlah kata yang ditemukan

Match

Tabel 4.8 menjelaskan tentang hasil pencarian kata “keopyuteogong” match

dengan teks yang ada. Pencarian kata “keopyuteogong” dengan waktu pencarian

119.0 ms dan terdapat 1 kata yang ditemukan didalam teks.

Tabel 4.9 Hasil Pencarian kata “xy” dengan Algoritma Knuth Morris Pratt

Hasil

Pencarian

Gambar Hasil

Pencocokan

Gambar Hasil Running Time dan

Jumlah kata yang ditemukan

Mis Match

Tabel 4.9 menjelaskan tentang hasil pencarian kata “xy” mis match dengan teks

(55)

Tabel 4.10 Hasil Pencarian kata “samuso” dengan Algoritma Knuth Morris Pratt

Hasil

Pencarian

Gambar Hasil

Pencocokan

Gambar Hasil Running Time dan

Jumlah kata yang ditemukan

Match

Tabel 4.10 menjelaskan tentang hasil pencarian kata “samuso” match dengan teks

yang ada. Pencarian kata “samuso” dengan waktu pencarian 120.0 ms dan

(56)

4.2.2 Pengujian Pencarian kata pada kamus bahasa Indonesia korea dengan Algoritma Boyer Moore

Tabel 4.11 Hasil Pencarian kata “a” dengan Algoritma Boyer Moore

Hasil

Pencarian

Gambar Hasil

Pencocokan

Gambar Hasil Running Time dan

Jumlah kata yang ditemukan

Match

Tabel 4.11 menjelaskan tentang hasil pencarian kata “a” match dengan teks yang

ada. Pencarian kata “a” dengan waktu pencarian 151.0 ms dan terdapat 1689 kata

(57)

Tabel 4.12 Hasil Pencarian kata “an” dengan Algoritma Boyer Moore

Hasil

Pencarian

Gambar Hasil

Pencocokan

Gambar Hasil Running Time dan

Jumlah kata yang ditemukan

Match

Tabel 4.12 menjelaskan tentang hasil pencarian kata “an” match dengan teks

yang ada. Pencarian kata “an” dengan waktu pencarian 131.0 ms dan terdapat 349

kata yang ditemukan didalam teks.

Tabel 4.13 Hasil Pencarian kata “ma” dengan Algoritma Boyer Moore

Hasil

Pencarian

Gambar Hasil

Pencocokan

Gambar Hasil Running Time dan

Jumlah kata yang ditemukan

Match

Tabel 4.13 menjelaskan tentang hasil pencarian kata “ma” match dengan teks

yang ada. Pencarian kata “ma” dengan waktu pencarian 132.0 ms dan terdapat

(58)

Tabel 4.14 Hasil Pencarian kata “perempuan” dengan Algoritma Boyer Moore

Hasil

Pencarian

Gambar Hasil

Pencocokan

Gambar Hasil Running Time dan

Jumlah kata yang ditemukan

Match

Tabel 4.14 menjelaskan tentang hasil pencarian kata “perempuan” match dengan

teks yang ada. Pencarian kata “perempuan” dengan waktu pencarian 144.0 ms dan

terdapat 8 kata yang ditemukan didalam teks.

Tabel 4.15 Hasil Pencarian kata “komput” dengan Algoritma Boyer Moore

Hasil

Pencarian

Gambar Hasil

Pencocokan

Gambar Hasil Running Time dan

Jumlah kata yang ditemukan

Match

Tabel 4.15 menjelaskan tentang hasil pencarian kata “komput” match dengan teks

yang ada. Pencarian kata “komput” dengan waktu pencarian 152.0 ms dan

(59)

Tabel 4.16 Hasil Pencarian kata “ch” dengan Algoritma Boyer Moore

Hasil

Pencarian

Gambar Hasil

Pencocokan

Gambar Hasil Running Time dan

Jumlah kata yang ditemukan

Match

Tabel 4.16 menjelaskan tentang hasil pencarian kata “ch” match dengan teks

yang ada. Pencarian kata “ch” dengan waktu pencarian 124.0 ms dan terdapat 218

kata yang ditemukan didalam teks.

Tabel 4.17 Hasil Pencarian kata “imnida” dengan Algoritma Boyer Moore

Hasil

Pencarian

Gambar Hasil

Pencocokan

Gambar Hasil Running Time dan

Jumlah kata yang ditemukan

Mis Match

Tabel 4.17 menjelaskan tentang hasil pencarian kata “imnida” mis match dengan

teks yang ada. Pencarian kata “imnida” dengan waktu pencarian 126.0 ms dan

(60)

Tabel 4.18 Hasil Pencarian kata “keopyuteogong” dengan Algoritma Boyer

Moore

Hasil

Pencarian

Gambar Hasil

Pencocokan

Gambar Hasil Running Time dan

Jumlah kata yang ditemukan

Match

Tabel 4.18 menjelaskan tentang hasil pencarian kata “keopyuteogong” match

dengan teks yang ada. Pencarian kata “keopyuteogong” dengan waktu pencarian

128.0 ms dan terdapat 1 kata yang ditemukan didalam teks.

Tabel 4.19 Hasil Pencarian kata “xy” dengan Algoritma Boyer Moore

Hasil

Pencarian

Gambar Hasil

Pencocokan

Gambar Hasil Running Time dan

Jumlah kata yang ditemukan

Mis Match

Tabel 4.19 menjelaskan tentang hasil pencarian kata “xy” mis match dengan teks

(61)

Tabel 4.20 Hasil Pencarian kata “samuso” dengan Algoritma Boyer Moore

Hasil

Pencarian

Gambar Hasil

Pencocokan

Gambar Hasil Running Time dan

Jumlah kata yang ditemukan

Match

Tabel 4.20 menjelaskan tentang hasil pencarian kata “samuso” match dengan teks

yang ada. Pencarian kata “samuso” dengan waktu pencarian 135.0 ms dan

(62)

4.3. Hasil Pengujian

Hasil pengujian dari penelitian ini adalah Running time dari pencarian kata dan jumlah kata yang ditemukan pada Algoritma Knuth Morris Pratt dan Algoritma

Boyer Moore yang dilakukan terhadap string yang berbeda. Untuk pengujian

string Bahasa Indonesia-Korea dijelaskan pada No. 1 sampai 5. Sedangkan

pengujian string Bahasa Korea-Indonesia dijelaskan pada No. 6 sampai 10 Adapun hasil pengujian dari kedua Algoritma yang digunakan akan dijelaskan pada Tabel 4.21 dan Tabel 4.22.

Tabel 4.21 Hasil Pengujian Algoritma Knuth Morris Pratt

No Pola Running time

(ms)

Jumlah kata yang ditemukan

Kejadian

1 a 166.0 1689 Match

2 an 146.0 349 Match

3 ma 134.0 116 Match

4 perempuan 133.0 8 Match

5 komput 124.0 2 Match

6 ch 144.0 218 Match

7 imnida 115.0 0 Mis match

8 keopyuteogong 119.0 1 Match

9 xy 120.0 0 Mis match

10 samuso 120.0 1 Match

TOTAL 1321 ms

(63)

Tabel 4.22 Hasil Pengujian Algoritma Boyer Moore

No Pola Running Time

(ms)

Jumlah kata yang ditemukan

Kejadian

1 a 151.0 1689 Match

2 an 131.0 349 Match

3 ma 132.0 116 Match

4 perempuan 144.0 8 Match

5 komput 152.0 2 Match

6 ch 124.0 218 Match

7 imnida 126.0 0 Mis match

8 keopyuteogong 128.0 1 Match

9 xy 123.0 0 Mis match

10 samuso 135.0 1 Match

TOTAL 1346 ms

RATA-RATA 134.6 ms

(64)

Gambar 4.11 Perbandingan Hasil Running Time Algoritma Knuth Morris Pratt dan Algoritma Boyer Moore

Dari grafik diatas dapat dijelaskan bahwa Algoritma Knuth Morris Pratt mendapatkan Hasil Running Time yang relatif rendah dibandingkan dengan Algoritma Boyer Moore. Artinya bahwa Algoritma Knuth Morris Pratt lebih cepat untuk pencocokan kata dibandingkan dengan Algoritma Boyer Moore. Total Hasil Perbandingan dari kedua Algoritma tersebut dapat dijelaskan pada Gambar 4.12

(65)

Dari grafik diatas dapat dijelaskan bahwa Algoritma Knuth Morris Pratt memiliki nilai Total Running Time yang rendah dibandingkan dengan Algoritma Boyer

Moore. Artinya bahwa Algoritma Knuth Morris Pratt lebih cepat untuk

pencocokan kata dibandingkan dengan Algoritma Boyer Moore. 4.4. Kompleksitas Algoritma

Kompleksitas algoritma yang akan diuji adalah kompleksitas Algoritma Knuth

Morris Pratt dan Algoritma Boyer Moore. Seperti dijelaskan pada Tabel 4.23,

4.24, 4.25, 4.26, 4.27, dan 4.28 berikut:

4.4.1 Kompleksitas Algoritma Knuth Morris Pratt

Tabel 4.23 Kompleksitas fungsi preKmp Algoritma Knuth Morris Pratt

public static void preKmp() { C # C.#

int i, j; C1 1 C1

i = 0; C2 1 C2

j = kmpNext[0] = -1; C2 1 C2

while (i < m) { C3 m C3m

while (j > -1 && x[i] != x[j]) C3 m C3m

j = kmpNext[j]; }

C2 m C2m

i++; C2 m C2m

j++; C2 m C2m

if (i < m && j < m && x[i] == x[j]) { C4 m C4m

kmpNext[i] = kmpNext[j]; C2 m C2m

} else {

kmpNext[i] = j; }

}

C2 m C2m

FASE PRE-PROSES :

(66)

= m0 + m1 ≤ m1 + m1 = 2m = O(m)

Tmin(n) = m0 + m1 ≥ m1

= Ω(m)

Tavg(n) = Ɵ(m)

Tabel 4.24 Kompleksitas fungsi KMP Algoritma Knuth Morris Pratt

(67)

FASE PENCARIAN :

Tmax(n) = C1 + C2 + 2C3 + 5C3m + 2C4m + C5m + 7C5 = (C1+ C2 + +2C3 + C5 )m0 + (5C3 + 2C4 + C5)m1 = m0 + m1 ≤ m1 + m1 = 2m

= O(m)

T min(n) = m0 + m1 ≥ m1

= Ω(m)

Tavg(n) = Ɵ(m)

Tabel 4.23 menjelaskan Kompleksitas fungsi preKmp. Fungsi preKmp adalah bagian pre proses dari Algoritma Knuth Morris Pratt. Tabel 4.24 menjelaskan Kompleksitas fungsi KMP. Fungsi KMP adalah bagian pencarian dari Algoritma

Knuth Morris Pratt.

Tabel 4.23 dan 4.24 menjelaskan tentang kompleksitas dari Algoritma

Knuth Morris Pratt. C adalah konstanta atau deklarasi dari sebuah operasi. #

adalah frekuensi yang berfungsi sebagai ukuran masukan C.# adalah untuk mencari kompleksitas waktu (T(n)), t adalah waktu dan n adalah jumlah proses. Jumlahkan hasil dari perkalian C.# maka ambil pangkat terbesar dari nilai masukan (#) dan didapatlah pangkat terbesar yaitu m dari Tabel 4.23 dan 4.24.

Notasi untuk big O adalah keadaan terburuk (worst case) artinya pencapaian T(n) paling maksimum atau tidak ada yang bisa lebih lambat dari T(n) yang didapat. Notasi untuk big O bisa dikatakan jika algoritma dengan T(n) =

Ɵ(n) artinya memiliki O sama dengan atau lebih besar dari Ɵ(n).

Notasi untuk big Ω adalah keadaan terbaik (best case) artinya pencapaian

T(n) paling minimum atau tidak ada yang bisa lebih cepat dari T(n) yang didapat. Notasi untuk big Ω bisa dikatakan jika algoritma dengan T(n) = Ɵ(n) artinya

memiliki Ω sama dengan atau lebih kecil dari Ɵ(n).

(68)

Pada Algoritma Knuth Morris Pratt fase pre-proses memiliki T(n) = Ɵ(m) dan fase pencarian memiliki T(n) = Ɵ(m). Maka kompleksitas Algoritma Knuth

Morris Pratt adalah Ɵ(m)

4.4.2 Kompleksitas Algoritma Boyer Moore

Tabel 4.25 Kompleksitas fungsi preBmBc Algoritma Boyer Moore

public static void preBmBc() { C # C.#

for (int i = 0; i < 256; ++i) { C1 256 256C1

bmBc[i] = mB; }

C2 256 256C2

for (int i = 0; i < mB - 1; ++i) { C1 m C1m

bmBc[xB[i]] = mB - i - 1; }

}

C2 m C2m

FASE PRE-PROSES BMBC :

Tmax(n) = 256C1 + 256C2 + C1m + C2m = (256C1 + 256C2)m0 + (C1 + C2)m1 = m0 + m1 ≤ m1 + m1 = 2m

= O(m)

T min(n) = m0 + m1 ≥ m1

= Ω(m)

Tavg(n) = Ɵ(m)

Tabel 4.26 Kompleksitas fungsi suffixes Algoritma Boyer Moore

public static void suffixes() { C # C.#

int f = 0; C1 1 C1

int g; C2 1 C2

suf[mB - 1] = mB; C1 1 C1

g = mB - 1; C1 1 C1

(69)

if (i > g && suf[i + mB - 1 - f] < i - g) { C4 m C4m

Tabel 4.27 Kompleksitas fungsi preBmGs Algoritma Boyer Moore

(70)

int j = 0; C4 1 C4

for (int i = mB - 1; i >= 0; --i) { C2 m C2m

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

for (; j < mB - 1 - i; ++j) { C2 m2 C2m2

if (bmGs[j] == mB) { C5 m2 C5m2

bmGs[j] = mB - 1 - i; }

} } }

C3 m2 C3m2

for (int i = 0; i <= mB - 2; ++i) { C2 m C2m

bmGs[mB - 1 - suf[i]] = mB - 1 - i; }

}

C3 m C3m

FASE PRE-PROSES BMGS :

Tmax(n) = C1 + C2m2 + 3C2m + 2C3m + C3m2 +C4 + C5m + C5m2 = (C1 + C4)m0 + (3C2 + 2C3 + C5)m1 + (2C2 + C3 + C5)m2 = m0 +m1+ m2 ≤ m2 + m2 + m2 = 3m2

= O(m2)

T min(n) = m0 +m1 + m2 ≥ m2

= Ω(m2) Tavg(n) = Ɵ(m2)

Tabel 4.28 Kompleksitas fungsi BM Algoritma Boyer Moore

public static void BM() { C # C.#

int i, j; C1 1 C1

preBmGs(); C2 1 C2

preBmBc(); C2 1 C2

j = 0; C3 1 C3

(71)
(72)

Tabel 4.25 menjelaskan Kompleksitas fungsi preBmBc. Fungsi preBmBc (Boyer

moore Bad character) adalah bagian pre proses dari Algoritma Boyer Moore.

Tabel 4.26 menjelaskan Kompleksitas fungsi suffixes. Fungsi suffixes adalah bagian pre proses dari Algoritma Boyer Moore. Tabel 4.27 menjelaskan Kompleksitas fungsi preBmGs. Fungsi preBmGs (Boyer moore Good Suffixes) adalah bagian pre proses dari Algoritma Boyer Moore. Tabel 4.28 menjelaskan Kompleksitas fungsi BM. Fungsi BM adalah bagian pencarian dari Algoritma

Boyer Moore.

Tabel 4.25, 4.26, 4.27 dan 4.28 menjelaskan tentang kompleksitas dari Algoritma Boyer Moore. C adalah konstanta deklarasi dari sebuah operasi. # adalah frekuensi yang berfungsi sebagai ukuran masukan dan C.# adalah untuk mencari kompleksitas waktu (T(n)), t adalah waktu dan n adalah jumlah proses. Jumlahkan hasil dari perkalian C.# maka ambil pangkat terbesar dari nilai masukan (#) dan didapatlah pangkat terbesar yaitu mn dari Tabel 4.28.

Notasi untuk big O adalah keadaan terburuk (worst case) artinya pencapaian T(n) paling maksimum atau tidak ada yang bisa lebih lambat dari T(n) yang didapat. Notasi untuk big O bisa dikatakan jika algoritma dengan T(n) =

Ɵ(n) artinya memiliki O sama dengan atau lebih besar dari Ɵ(n).

Notasi untuk big Ω adalah keadaan terbaik (best case) artinya pencapaian

T(n) paling minimum atau tidak ada yang bisa lebih cepat dari T(n) yang didapat.

Notasi untuk big Ω bisa dikatakan jika algoritma dengan T(n) = Ɵ(n) artinya

memiliki Ω sama dengan atau lebih kecil dari Ɵ(n).

Notasi untuk big Ɵ adalah keadaan rata-rata (average case) artinya pencapaian nilai tengah atau T(n) berada di tengah antara O(n) dan Ω(n). Notasi untuk big Ɵ bisa dikatakan jika algoritma dengan T(n) = Ɵ(n) artinya jika nilai O(n) dan Ω(n) sama maka dikatakan kompleksitas itu adalah Ɵ.

(73)

BAB 5

KESIMPULAN DAN SARAN

5.1 Kesimpulan

Berdasarkan hasil studi literatur, analisis, perancangan, implementasi, dan pengujian sistem ini, maka kesimpulan yang didapat adalah sebagai berikut:

1. Kelemahan Algoritma Knuth Morris Pratt dalam penelitian ini adalah lebih lambat dibandingkan Algoritma Boyer Moore dalam pencarian kata yang pendek karena semakin sedikit jumlah kata yg dicari maka akan semakin lama waktu yg dibutuhkan untuk pencarian kata. Pergeseran yg terjadi hanya sebanyak jumlah kata yg dicari. Hal ni menimbulkan proses pengecekan yang lebih banyak sehingga menambah waktu proses pencarian. Kelebihan Algoritma Knuth Morris Pratt dalam penelitian ini adalah lebih cepat dibandingkan Algoritma Boyer Moore dalam pecarian kata yang panjang karena semakin panjang kata yang dicari maka semakin sedikit teks yang mengandung kata yang dicari sehingga pergeseran kata yang terjadi semakin besar. Hal ini menimbulkan proses pengecekan kata yang lebih sedikit sehingga mengurangi waktu proses pencarian. Rata-rata hasil running time Algoritma Knuth Morris Pratt untuk pencarian kata adalah 132.1 ms.

2. Kelebihan Algoritma Boyer Moore dalam penelitian ini adalah lebih cepat dibandingkan Algoritma Knuth Morris Pratt dalam pencarian kata yang pendek karena Algoritma Boyer Moore memaksimalkan nilai pergeseran sehingga kata yang dicari semakin cepat ditemukan. Kelemahan Algoritma

Boyer Moore dalam penelitian ini adalah lebih lambat dibandingkan

(74)

semakin panjang kata yang dicari maka semakin panjang pengecekan nilai untuk pergeseran sebab tiap fungsi pencarian dipanggil dan membuat tabel perhitungan untuk pencarian terlebih dahulu lalu melakukan pergeseran dengan mengambil nilai maksimal dari perhitungan pencarian yang telah dilakukan sebelumnya. Hal ini dilakukan dalam setiap pencarian per baris. Rata-rata hasil running time Algoritma Boyer Moore untuk pencarian kata adalah 134.6 ms.

3. Hasil Kompleksitas Algoritma Knuth Morris Pratt adalah T(n) = Ɵ(m). Sedangkan Hasil Kompleksitas Algoritma Boyer Moore adalah T(n) = Ɵ(mn). Maka pencarian dengan menggunakan Algoritma Knuth Morris Pratt lebih cepat dibandingkan dengan Algoritma Boyer Moore.

5.2 Saran

Adapun saran-saran yang diperlukan untuk penelitian maupun pengembangan berikutnya adalah:

1. Sistem ini sebaiknya ditambah menu pengolahan data seperti penambahan data,edit data dan hapus data agar data dalam kamus semakin banyak untuk pencarian kata pada kamus.

2. Sistem ini sebaiknya ditambahkan suara untuk pelafalan huruf hangul nya agar user mampu mengucapkan kata hangul.

(75)

BAB 2

LANDASAN TEORI

2.1 Definisi Kamus

Kamus adalah sejenis buku rujukan yang menerangkan makna kata-kata. Kamus berfungsi untuk membantu seseorang mengenal perkataan baru. Selain menerangkan maksud kata kamus juga mungkin mempunyai pedoman sebutan, asal usul (etimologi) sesuatu perkataan dan juga contoh penggunaan bagi sesuatu perkataan. Untuk memperjelas kadang kala terdapat juga ilustrasi didalam kamus (Susanto,2014).

2.2 Definisi Algoritma

Algoritma adalah langkah detail yang ditunjukkan untuk komputer guna menyelesaikan suatu masalah. Proses semacam algoritma sebenarnya dapat dijumpai dalam kehidupan sehari hari. Untuk lebih mudah memahami arti dari algoritma, dapat diilustrasikan seperti membaca resep makanan.

Jika membaca resep makanan pasti akan melihat prosedur untuk membuat masakan. Prosedur dalam resep itu sebenarnya menyatakan seperti algoritma. Dengan mengikuti langkah-langkah yang diberikan maka dapat membuat masakan tersebut. Dalam pengertian sekarang,algoritma mempunyai kesamaan tidak hanya dengan resep tetapi juga dengan proses,metode dan prosedur (Kadir, A. & Heriyanto. 2005).

2.2.1 Algoritma String Matching (pencocokan kata)

Pengertian string menurut Dictionary of Algorithms and Data Structures, National

Institute of Standards and Technology (NIST) adalah susunan dari

(76)

(string matching) merupakan bagian penting dari sebuah proses pencarian string(string

searching) dalam sebuah dokumen. Hasil dari sebuah sebuah pencarian string dalam

dokumen tergantung dari teknik dan cara pencocokan string yang digunakan (Buulolo, E. 2013).

Menurut Singla, N. & Garg, D. (2012) ada dua teknik utama dalam algoritma

string matching yaitu exact matching dimana hasil pencocokannya mengandung string

yang sama persis dengan string yang di-input, contohnya pada algoritma Needleman

Wunsch, algoritma Smith Waterman, algoritma Knuth-Morris-Pratt, algoritma

Boyer-Moore-Horspool dan approximate matching dimana hasil pencocokannya mengandung

string yang tidak harus persis dengan string yang di-input, contohnya pada algoritma

Fuzzy String Searching, algoritma Rabin Karp, algoritma Brute Force.

Prinsip kerja algoritma string matching adalah sebagai berikut:

1. Memindai teks dengan bantuan sebuah window yang ukurannya sama dengan panjang pattern.

2. Menempatkan window pada awal teks.

3. Membandingkan karakter pada window dengan karakter dari pattern. Setelah pencocokan (baik hasilnya cocok atau tidak cocok), dilakukan shift ke kanan pada window. Prosedur ini dilakukan berulang-ulang sampai window berada pada akhir teks. Mekanisme ini disebut mekanisme sliding-window (Effendi, D., et al. 2013).

Algoritma string matching mempunyai tiga komponen utama, yaitu:

1. Pattern, yaitu deretan karakter yang akan dicocokkan dengan teks, dinyatakan dengan x[0..m-1], panjang pattern dinyatakan dengan m.

2. Teks, yaitu tempat pencocokan pattern dilakukan, dinyatakan dengan y[0..n-1], panjang teks dinyatakan dengan n.

3. Alfabet, yang berisi semua simbol yang digunakan oleh bahasa pada teks dan pattern,

dinyatakan dengan Σ dengan ukuran dinyatakan dengan ASIZE (Effendi, D., et al.

2013).

2.2.1.1 Algoritma Knuth Morris Pratt

(77)

bersamaan pada tahun 1977. Algoritma Knuth Morris Pratt melakukan perbandingan karakter teks dan karakter pada pola dari kiri ke kanan. Ide dari algoritma ini adalah bagaimana memanfaatkan karakter-karakter pola yang sudah diketahui ada di dalam teks sampai terjadinya ketidakcocokkan untuk melakukan pergeseran (Ervana, A. & Pertiwi, A. 2012).

Secara sistematis, langkah-langkah yang dilakukan algoritma Knuth Morris

Pratt pada saat mencocokkan string :

1. Algoritma Knuth Morris Pratt mulai mencocokkan pattern pada awal teks.

2. Dari kiri ke kanan, algoritma ini akan mencocokkan karakter per karakter pattern dengan karakter di teks yang bersesuaian, sampai salah satu kondisi berikut dipenuhi :

a) Karakter di pattern dan di teks yang dibandingkan tidak cocok (mismatch). b) Semua karakter di pattern cocok.Kemudian algoritma akan memberitahukan

penemuan di posisi ini.

3. Algoritma kemudian menggeser pattern berdasarkan tabel shift, lalu mengulangi langkah 2 sampai pattern berada di ujung teks (Ervana, A. & Pertiwi, A. 2012).

Cara kerja Algoritma Knuth Morris Pratt yang digunakan untuk melakukan jumlah pergeseran adalah sebagai berikut :

Tabel 2.1 Hasil Perhitungan kmpNext[i] dan shift[i]

Langkah-langkah untuk

menghitung nilai kmpNext[i] dan shift[i] adalah sebagai berikut :

1. Untuk mendapatkan hasil pergeseran, mula-mula isi kmpNext[i] dengan nilai awal -1

i 0 1 2 3 4

x [i] A B A B

kmpNext[i] -1 0 -1 0 2

Shift[i] 1 1 3 3 2

i 0 1 2 3 4

x [i] A B A B

(78)

2. Membandingkan karakter dari kiri ke kanan

Bandingkan karakter A dan B jika tidak sama beri nilai 0 Bandingkan karakter A dan A jika sama beri nilai -1 Bandingkan karakter B dan B jika sama beri nilai 0 Bandingkan karakter A dan - jika tidak sama beri nilai 2

(untuk karakter yang sama lihat nilai kmpNext[i] untuk mengisi tabel

kmpNext[i], sedangkan untuk karakter yang tidak sama lihat nilai i untuk

mengisi tabel kmpNext[i])

3. Pengisian kolom Shift dilakukan dengan memakai rumus i - kmpNext[i] i - kmpNext[i] = 0 – (-1) = 1

i - kmpNext[i] = 1 – (0) = 1 i - kmpNext[i] = 2 – (-1) = 3 i - kmpNext[i] = 3 – (0) = 3 i - kmpNext[i] = 4 – (2) = 2

Setelah mendapatkan hasil pergeseran yang diperoleh dari Tabel 2.1 maka pencocokan kata dapat dilakukan dengan langkah-langkah berikut :

i 0 1 2 3 4

x [i] A B A B

kmpNext[i] -1 0 -1 0 2 Shift[i]

i 0 1 2 3 4

x [i] A B A B

kmpNext[i] -1 0 -1 0 2

Shift[i] 1 1 3 3 2

Index 0 1 2 3 4 5 6 7 8 9

Text B A C B A B A B A B

Index 0 1 2 3

(79)

Keterangan : Text menjelaskan tentang teks yang telah disimpan dalam database dan

Pattern menjelaskan tentang pola atau inputan kata yang ingin dicari atau dicocokkan

kedalam teks. Langkah 1 :

Index 0 1 2 3 4 5 6 7 8 9

Text B A C B A B A B A B

Index 0 1 2 3

Pattern A B A B

Keterangan : Terlihat karakter B dan A tidak cocok. Nilai Shift [0] yang berkarakter A bernilai 1 seperti terlihat pada Tabel 2.1 maka terjadi pergeseran sebanyak 1 kali. Langkah 2 :

Index 0 1 2 3 4 5 6 7 8 9

Text B A C B A B A B A B

Index 0 1 2 3

Pattern A B A B

Keterangan : Terlihat karakter C dan B tidak cocok. Nilai Shift [1] yang berkarakter B bernilai 1 seperti terlihat pada Tabel 2.1 maka terjadi pergeseran sebanyak 1 kali. Langkah 3 :

Index 0 1 2 3 4 5 6 7 8 9

Text B A C B A B A B A B

Index 0 1 2 3

Pattern A B A B

Gambar

Tabel 3.9 Pseudocode prebmBc
Gambar 3.5 Flowchart Gambaran Umum Sistem Kamus
Gambar 3.6 Flowchart Algoritma Knuth Morris Pratt
tabel bmGs dan bmBc
+7

Referensi

Dokumen terkait

Kamus data atau data dictionary ialah data yang digunakan dalam analisis struktur dan desain sistem informasi dan juga merupakan suatu katalog yang menjelaskan lebih

Dengan hormat kami beritahukan bahwa Panitia Pengadaan Jasa Konstruksi Pekerjaan Rehabilitasi 4 Ruang Kelas MTs Negeri Sumbang Tahun Anggaran 2012, bermaksud mengundang Saudara

The teacher asked them to identify subject, verb, complements, connectors, conjunctive adverb, semicolon and dependent clauses and identify each type of the

Sekali-sekali pasien akan mengalami rasa napas yang pendek (seperti orang yang kelelahan) dan bukanya tekanan pada substernal.Sekali-sekali bisa pula

Undang Republik Indonesia Nomor 13/Tahun 2016 tentang Paten, dimana Paten. diberikan berdasarkan permohonan yang diajukan oleh Pemohon atau

- Jika pasar efisien dalam bentuk lemah benar, maka tindakan investor untuk meramalkan harga saham di masa depan dengan menggunakan data harga saham historis tidak

• Apabila pengajuan Substantifnya diajukan setelah berakhirnya jangka waktu pengumuman, maka Pemeriksaan Substantifnya dilakukan setelah tgl. diterimanya Permohonan

Untuk lebih jelasnya, dapat dilihat pada contoh berikut ini. Tabel 1.2. merupakan contoh penerapan penentuan  kualitas  air  menurut  metoda  STORET  yang