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
<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);
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) {
}
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
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
temp = String.valueOf(wTotal);
public void onClick(DialogInterface dialog, int which) { dialog.dismiss();
}
}).create(); dialog.show();
}
Log.d("Print", "catch update list");
public void KMP_start(String getTxt, String getPatt, String getIndo, String getKorea, byte[] getImage) {
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>
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);
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);
wMulai = System.currentTimeMillis(); AlertDialog dialog = new
AlertDialog.Builder(Hasil_BM_Activity.this)
public void onClick(DialogInterface dialog, int which) { dialog.dismiss();
}
}).create(); dialog.show();
}
try {
public void BM_start(String getTxt, String getPat, String getIndo, String getKorea, byte[] getImage) {
} 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>
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
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
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.
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.
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
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
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
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.
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
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
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
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
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
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)
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
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
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
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
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
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.
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
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
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
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.
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
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
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
Keterangan :
1. textView untuk menampilkan teks.
2. textView untuk menampilkan teks. 3. Button untuk tidak keluar dari aplikasi.
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
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
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
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.
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.
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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 :
= 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
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).
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
if (i > g && suf[i + mB - 1 - f] < i - g) { C4 m C4m
Tabel 4.27 Kompleksitas fungsi preBmGs Algoritma Boyer Moore
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
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 Ɵ.
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
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.
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
(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
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
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
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