LISTING PROGRAM
frmMenu.vb
Public Class frmMenu
Private Sub QuitToolStripMenuItem_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
QuitToolStripMenuItem.Click Close()
End Sub
Private Sub OtoritasToolStripMenuItem_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
OtoritasToolStripMenuItem.Click frmLogin.Show()
End Sub
Private Sub HelpToolStripMenuItem_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
HelpToolStripMenuItem.Click frmHelp.Show() End Sub
Private Sub AboutToolStripMenuItem_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
AboutToolStripMenuItem.Click frmAbout.Show() End Sub
Private Sub ListKamusToolStripMenuItem_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
System.EventArgs) Handles MyBase.Load koneksi()
txtUserID.Enabled = True
txtUserID.Select() End Sub
Private Sub cmdOpen_Click(ByVal sender As System.Object, ByVal e As
CMD = New MySqlCommand("select * from User where userID='" & txtUserID.Text & "' and passwd='" & txtPasswd.Text & "'", Kon)
RD = CMD.ExecuteReader
System.EventArgs) Handles cmdClose.Click Close()
End Sub
Private Sub txtUserID_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles txtUserID.KeyPress If e.KeyChar = Chr(13) Then
txtPasswd.Select() End If
End Sub
Private Sub txtUserID_TextChanged(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles txtUserID.TextChanged If Len(txtUserID.Text) < 10 Then
Exit Sub
End If
End Sub
Private Sub txtPasswd_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles txtPasswd.KeyPress If e.KeyChar = Chr(13) Then
Private Sub KamusHukumToolStripMenuItem_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
KamusHukumToolStripMenuItem.Click frmDataKamus.Show()
frmUser.Show() End Sub
Private Sub BackToolStripMenuItem_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
BackToolStripMenuItem.Click Close()
End Sub
Private Sub PencarianStringToolStripMenuItem_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles 2)) And x.Substring(0, 1).Equals(y.Substring(j, 1)) Then
Console.Write(NotSoNaive(x, y)) End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load txtPattern.Focus()
System.EventArgs) Handles btnProses.Click pb.Visible = True & txtPattern.Text & "'", Kon)
End Sub
Public Shared Function SearchStringNotSo(ByVal str As String, ByVal
pat As String) As Integer()
Public Shared Function SearchStringGalil(ByVal str As String, ByVal
txtHasil.Text = String.Format("{0} occurs at position {1}", m.Value, m.Index)
Next
End Sub
Private Sub btnQuit_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnQuit.Click Close()
End Sub
Private Sub btnClear_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnClear.Click pb.Value = 0
System.EventArgs) Handles Timer2.Tick
Dim difference As TimeSpan = DateTime.Now.Subtract(time) lblWaktu.Text = difference.Days.ToString & ":" &
Imports MySql.Data.MySqlClient
Do While RD.Read
System.EventArgs) Handles btnQuit.Click Close()
End Sub
Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnAdd.Click Call CariID()
System.Windows.Forms.KeyPressEventArgs) Handles txtKata.KeyPress If e.KeyChar = Chr(13) Then
txtDeskripsi.Enabled = True
txtDeskripsi.Focus() End If
End Sub
Private Sub txtDeskripsi_TextChanged(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles txtDeskripsi.TextChanged If bolTambah = True Then
btnSave.Enabled = True
End If
End Sub
Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnSave.Click btnSave.Enabled = False
CMD = New MySqlCommand("Insert into Kamus
(IdKamus,Kata,Deskripsi) values (" & IDKamus & ",'" & txtKata.Text & "','" & txtDeskripsi.Text & "')", Kon)
RD = CMD.ExecuteReader
System.EventArgs) Handles lv.Click If bolCari = True Then
CMD = New MySqlCommand("select * from Kamus where IDKamus=" &
System.EventArgs) Handles btnEdit.Click btnEdit.Enabled = False
btnDelete.Enabled = False
Dim edit As String
edit = "Update Kamus SET Kata='" & txtKata.Text & "',Deskripsi='" & txtDeskripsi.Text & "' where IDKamus=" & IDKamus & ""
CMD = New MySqlCommand(edit, Kon)
System.EventArgs) Handles btnDelete.Click
Call ViewData()
System.EventArgs) Handles MyBase.Load Call KoneKsi()
System.EventArgs) Handles cmdEdit.Click
Private Sub cmdDelete_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cmdDelete.Click cmdSave.Enabled = False
System.EventArgs) Handles cmdQuit.Click Me.Close()
System.Drawing.Font("Arial", 8, FontStyle.Bold) 'font untuk kolom header 'font untuk cell
DataGridViewContentAlignment.MiddleLeft 'rata kanan tengah untuk kolom 0 .Columns(0).Width = 80 'lebar kolom 0
.Columns(1).Name = "Passwd"
.Columns(1).DefaultCellStyle.Alignment =
baris(0) = RD(0)
Private Sub cmdAdd_Click_1(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles cmdAdd.Click cmdAdd.Enabled = False
System.EventArgs) Handles cmdSave.Click cmdSave.Enabled = False
CMD = New MySqlCommand("Insert into User (UserID, Passwd) values ('" & txtUserID.Text & "','" & txtPasswd.Text & "')", Kon)
RD = CMD.ExecuteReader
System.Windows.Forms.KeyPressEventArgs) Handles txtUserID.KeyPress If e.KeyChar = Chr(13) Then
System.Windows.Forms.KeyPressEventArgs) Handles txtPasswd.KeyPress If e.KeyChar = Chr(13) Then
If bolTambah = True Then
cmdSave.Enabled = True
End If
End Sub
Private Sub cmdClear_Click_1(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles cmdClear.Click txtUserID.Text = ""
e As System.Windows.Forms.DataGridViewCellEventArgs) Handles
dg.CellContentClick
If RD.HasRows Then
As System.EventArgs) Handles MyBase.Load Call KoneKsi()
End Sub
Private Sub lvKata_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles lvKata.Click
Kata = lvKata.FocusedItem.SubItems(0).Text
Private Sub lvKata_SelectedIndexChanged(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
lvKata.SelectedIndexChanged
CURRICULUM VITAE
[ D a f t a r R i w a y a t H i d u p ]
Data Pribadi
Nama Irvi Oktanisa, A.Md
Tempat / Tgl Lahir Medan / 19 Nopember 1993 Jenis Kelamin Perempuan
Kewarganegaraan Indonesia
Agama Islam
Alamat Jln. A.R. Hakim Gang Sukmawati No.15 C, Kel. Pasar Merah Timur, Kec. Medan Area
E-mail irvioktanisa93@gmail.com
No HP 081362896402
Alamat Orang Tua Jln. A.R. Hakim Gang Sukmawati No.15 C, Kel. Pasar Merah Timur, Kec. Medan Area
No HP Orang Tua 08126368612
Pendidikan
1999-2005 SD Negeri 064959 Medan
2005-2008 SMP Swasta Muhammadiyah 01 Medan 2008-2011 SMA Swasta Al-Ulum Medan
2011-2014 D-3 Teknik Informatika, Universitas Sumatera Utara
2014-sekarang S1-Ekstensi Ilmu Komputer, Universitas Sumatera Utara
Kemampuan
Database MySQL
Bahasa Indonesia, Inggris
DAFTAR PUSTAKA
Azizah, U.N. 2013. Perbandingan Detektor Tepi Prewit dan Detektor Tepi Laplacian Berdasarkan Kompleksitas Waktu dan Citra Hasil. Skripsi. Universitas Pendidikan Indonesia.
Charras, C. & Lecroq, T. 1997. Handbook of Exact String-Matching Algorithms.
London: King‟s College Publications.
Djindang, M.S. 1989. Pengantar dalam Hukum Indonesia. Jakarta. PT. Ichtiar Baru.
Jogiyanto. 2005. Pengenalan Komputer. Yogyakarta: Andi.
Levitin, A. 2011. Introduction to the Design and Analysis of Algorithm 3rd Edition. United States of America. Pearson Education,Inc.
Masriani, Y.T. 2004. Pengantar Hukum Indonesia. Penerbit PT Sinar Grafika: Jakarta.
Munir, R. 2007. Algoritma dan Pemrograman dalam Bahasa Pascal dan C. Bandung: Informatika Bandung.
Navarro, G. & Raffinot, M. 2002. Flexible Pattern Matching in Strings: Practical On-line Search Algorithms for Texts and Biological Sequences. Cambridge University Press.
Pasaribu, I.J. 2013. Program Aplikasi Kamus Bahasa Indonesia-Perancis Menggunakan Visual Basic 6.0. Tugas Akhir. Universitas Sumatera Utara
Priyatna,R.D. 2015. Implementasi Algoritma Levenshtein Distance dan Algoritma Knuth-Morris-Pratt (KMP) dalam Fitur Word Completion pada Search Engine. Skripsi. Universitas Sumatera Utara.
Purwanto, E.B. 2008. Perancangan dan Analisis AlgoritmaI. Yogyakarta. Graha Ilmu.
Sagita, V. 2013. Studi Perbandingan Implementasi Algoritma Boyer-Moore, Turbo Boyer-Moore, dan Tuned Boyer-Moore dalam Pencarian String. Ultimatics 1 Vol. IV(32): 1-2.
Sedgewick, R. & Wayne, K. 2011. Algorithms Fourth Edition. Boston : Princeton University.
Tania, S.M. 2015. Perancangan Fitur Autocomplete pada Aplikasi Kamus Istilah Teknologi Informasi Menggunakan Algoritma Boyer-Moore. Skripsi. Universitas Sumatera Utara.
BAB 3
ANALISIS DAN PERANCANGAN
3.1Analisis
Bab ini akan membahas tentang analisis serta perancangan perbandingan algoritma Galil-Seiferas dan Not So Naϊve, membuat pemodelan sistem seperti merancang alur kerja sistem (flowchart). Mempelajari konsep dan proses kerja algoritma serta merancang antarmuka pengguna (user interface).
Gambar 3.1 Diagram Ishikawa
Pada Gambar 3.1 dapat dilihat bahwa bagian kepala atau segiempat yang berada di sebelah kanan merupakan masalah, sementara dibagian tulang merupakan penyebab. Terdapat empat kategori penyebab masalah pada penelitian perbandingan algoritma Galil-Seiferas dan algoritma Not So Naϊve yang digambarkan dengan tanda panah yang mengarah ke tulang utama, yaitu berkaitan dengan pengguna (manusia),
penyebab masalah tersebut digambarkan dengan tanda panah yang mengarah ke masing-masing kategori.
3.1.1 Analisis Kebutuhan
Analisis kebutuhan sistem dibagi menjadi dua, yaitu analisis kebutuhan non-fungsional dan analisis kebutuhan non-fungsional. Pada tahapan analisis ini sangat dibutuhkan dalam mendukung kinerja sistem, apakah sistem yang dibuat telah sesuai dengan kebutuhan atau belum, karena kebutuhan sistem akan mendukung tercapainya tujuan yang diharapkan.
3.1.1.1Analisis Fungsional
Analisis kebutuhan fungsional merupakan jenis kebutuhan yang berisi proses-proses apa saja yang nantinya dilakukan oleh sistem. Kebutuhan fungsional juga berisi informasi-informasi apa saja yang harus ada dan dihasilkan oleh sistem. Berikut ini adalah kebutuhan fungsional dari sistem, yaitu:
a. Sistem dapat menginput data kamus oleh user. b. Sistem dapat menampilkan data kamus.
c. Sistem dapat melakukan pencarian string kata pada kamus dengan menggunakan algoritma Galil-Seiferas dan algoritma Not So Naϊve.
d. Sistem dapat menampilkan waktu proses serta tingkat akurasi pencarian dari kedua algoritma tersebut.
3.1.1.2Analisis Non-fungsional
Persyaratan non-fungsional sistem merupakan persyaratan apa yang harus dilakukan sistem. Beberapa persyaratan non-fungsional yang harus dipenuhi oleh sistem yang dirancang adalah sebagai berikut.
1. Performa
Sistem yang akan dibangun harus dapat menunjukkan hasil dari proses pencarian string kata.
2. Mudah dipelajari dan digunakan
3. Dokumentasi
Sistem yang akan dibangun dapat menyimpan saran kata yang ditambahkan oleh pengguna (user) ke dalam database.
4. Kontrol
Sistem yang akan dibangun harus memiliki pesan not found jika kata yang di ketikkan pengguna (user) tidak ada di dalam database kata.
5. Hemat biaya
Sistem yang akan dibangun tidak memerlukan perangkat tambahan dalam proses eksekusinya.
3.1.2 Pemodelan
Pemodelan sistem dapat dibagi menjadi Use Case Diagram, Activity diagram, dan Sequence diagram yang akan menggambarkan alur kerja dari sistem perbandingan algoritma Galil-Seiferas dan algoritma Not So Naϊve.
3.1.2.1Pemodelan Persyaratan Sistem dengan Use Case
Unified Modelling Language (UML) merupakan bentuk perancangan dan dokumentasi perangkat lunak berbasis pemrograman berorientasi objek. Pada penelitian ini, bentuk perancangan UML menggunakan beberapa diagram, yaitu use case diagram, activity diagram dan sequence diagram. Use case adalah salah satu pemodelan yang digunakan untuk memodelkan persyaratan sistem. Dengan use case ini digambarkan siapa saja yang berinteraksi dengan sistem dan apa saja yang dapat dilakukan dengan sistem.
Gambar 3.2 Use Case Diagram
Use case pada Gambar 3.2 menjelaskan aksi yang dapat dilakukan oleh user,
user dapat melakukan pencarian kata dan akan mengecek kata tersebut ada atau tidak
ada pada kamus kata serta dapat menambahkan kata atau saran kata istilah baru pada kamus kata pada aplikasi tersebut. Selanjutnya proses pendeskripsian pencarian kata dapat dilihat pada Tabel 3.1.
Perbandingan Algoritma Galil-Seiferas dan Algoritma Not So Naϊve
Pemasukan string kata huruf
Menampilkan daftar kata dan saran dengan algoritma Galil-Seiferas
dan Not So Naϊve USER
«Includes»
Menampilkan hasil pencarian dan waktu
proses
Tabel 3.1 Dokumentasi Naratif Use Case
Nama Use case Proses pencarian string kata
Actors User
Description Use case ini mendeskripsikan Pencarian string kata dengan algoritma Galil-Seiferas dan algoritma Not So Naϊve.
Pre-Condition -
Basic Flow Kegiatan pengguna Respon sistem User memasukkan inputan
karakter berupa huruf
Menunggu keseluruhan proses inputan selesai
Alternate Flow User dapat memilih alternatif saran algoritma Galil-Seiferas dan algoritma Not So Naϊve, tambah kata dan tampilan lainnya.
Post-Condition User mengetahui hasil pencarian, waktu proses alternatif algoritma Galil-Seiferas dan algoritma Not So Naϊve.
3.1.2.2Activity Diagram
Activity diagram menggambarkan proses-proses yang terjadi ketika aktivitas dimulai
Gambar 3.3 Activity Diagram
Didalam activity diagram yang terlihat pada Gambar 3.3 dapat dijelaskan bahwa user harus memulai proses terlebih dahulu. Lalu sistem menampilkan form pencarian. Selanjutnya user meng-input kata yang ingin dicari terjemahannya. Lalu sistem melakukan proses pencarian kata dengan menggunakan algoritma untuk melakukan pencarian kata dan kemudian sistem melakukan pemanggilan fungsi mencari apakah list kata ditemukan. Jika kata ditemukan maka sistem akan
Mulai
User Sistem
Memilih tambah kata kamus Input string kata
Melakukan pencarian kata
Dengan menggunakan algoritma
Kata tidak ditemukan
Menampilkan form tambah kata Menampilkan Kata
Waktu proses dan kata ditemukan
Menampilkan form Pencarian
= list kata
tidak
menampilkan kata, waktu proses, dan jumlah kata yang ditemukan. Jika kata tidak ditemukan pada sistem maka user akan memilih menambah data kamus lalu sistem akan menampilkan form tambah data kamus.
Tabel 3.2 Keterangan Bagian-Bagian Rancangan Form Pencarian
Nama Use case Proses pencarian string kata
Actors User
Description Use case ini mendeskripsikan pencarian string kata dengan algoritma Galil-Seiferas dan algoritma Not So Naϊve.
Pre-Condition Sudah masuk ke menu utama sistem pencarian kata Event detail Kegiatan user Respon sistem
1. Menginputkan kata yang ingin dicari
2. Menekan tombol Proses 3. Menekan tombol Cancel 4. Menekan tombol tambah kata
5. Menambahkan kata yang baru
1. Sistem menampilkan halaman yang dipilih
2. Sistem akan melakukan searching pada database
3. Tampilkan hasil pencarian dan waktu proses dalam pencarian kata 4. Menyimpan kata yang baru.
Pasca-Condition Menampilkan hasil pencarian kata
3.1.2.3Sequence Diagram
Gambar 3.4 SequenceDiagram Sistem
Dari Gambar 3.4 dapat dijelaskan dengan sequence diagram mengenai informasi sistem yang berjalan saat ini, sehingga dengan diagram ini dapat menggambarkan pergerakan sebuah objek dan pesan yang terjadi di dalam sistem penyampaian informasi.
3.1.3 Flowchart Algoritma Galil-Seiferas
Menampilkan Halaman Utama Halaman Utama
:Halaman Utama :Halaman Hasil Pencarian User
Memilih tombol Pencarian Kata
Memilih Tombol Tambah Kata
Menampilkan Halaman Tambah Kata Menampilkan halaman Pencarian Kata
Flowchart algoritma Galil-Seiferas adalah alur proses yang terjadi dalam pencarian
kata seperti pada Gambar 3.5.
Start
Start
m = length (x) n = length (y)
Input
x = string yang dicari y = tempat pencarian
x[s+q1] == x[s+p1+q1]
?
++q1
p1 + q1 >= k*p1
?
s += p1 q1 -= p1
p1 += (q1 / k+1) q1 = 0
p1 >= p2
? stop
s=0 p1=1
Ya
tidak
Ya
tidak
Ya
tidak
newP1
Start
Start
m = length (x) n = length (y)
Input
x = string yang dicari y = tempat pencarian
x[s+q1] == x[s+p1+q1]
? ++q1
p1 + q1 >= k*p1
?
Ya
tidak
Ya s + p1 + q1
== m ?
p2 = q1 q2 = 0
p1 += q1 / k+1
1 = 0 stop
tidak tidak
Ya
newP2()
search()
Pada algoritma Galil-Seiferas, pemanggilan fungsi dilakukan secara rekursif. Gambar 3.5, Gambar 3.6, Gambar 3.7, dan Gambar 3.8 menggambarkan alur pada proses masing-masing void yang terdapat pada algoritma Galil-Seiferas untuk melakukan proses pencarian dimana proses awal yang diilakukan adalah menginisialisasi variabel yaitu p, q, s untuk memasukkan pola didalam teks pencarian sebelum proses dimulai. Proses pencarian dimulai dari karakter paling kiri pattern. Setiap karakter akan di cocokkan antara pola dan teks sampai ditemukan kecocokan. Dan jika terjadi kecocokan maka mengeluarkan hasil pencarian dan selesai.
3.1.4 Flowchart Algoritma Not So Naϊve
Start
m = length (x) n = length (y)
x[0] = x[1] Input
x = string yang dicari y = tempat pencarian
k = 2 l = 1
k =1 l = 2
Ya
tidak
j = 0
j <= n-m x[1]≠y[j+1] j = j + k
x[2..m-1]= y[j+2...j+m-1]
&& x[0] == y[j]
Ya
Ya
tidak
j = j + l
Ya
tidak
Output j = indeks
Stop
Pada Gambar 3.9 menggambarkan alur pada proses pencarian kata menggunakan algoritma Not So Naϊve dengan proses awal yang dilakukan yaitu memasukkan pola didalam text yang tersedia. Proses pencarian dimulai dari karakter paling kiri ke kanan dari pattern. Akan tetapi pada algoritma ini indeks pencarian dimulai dari indeks kedua dari pattern. Jika terjadi kecocokan maka mengeluarkan hasil dan selesai.
3.1.5 Flowchart Sistem
Flowchart Sistem adalah alur proses sistem yang akan dirancang pada pencarian kata
dalam aplikasi kamus hukum dengan menggunakan kedua algoritma tersebut.
Mulai
Kata yang dicari
Algoritma Galil-Seiferas ?
Algoritma Not So Naive
Algoritma Galil-Seiferas
Kata ditemukan ?
· Defenisi Kata · Waktu
Proses
Selesai
Ya
tidak
Ya
tidak
Perbandingan waktu proses dilakukan dengan membandingkan proses dari algoritma Galil-Seiferas dan algoritma Not SoNaïve. Pada Gambar 3.10 dilakukan proses input berupa kata setelah itu di proses oleh algoritma Galil-Seiferas dan algoritma Not SoNaïve untuk menghasilkan perbandingan antara kedua proses algoritma tersebut. Hasil dari proses algoritma Galil-Seiferas dan algoritma Not SoNaïve berupa defenisi (arti) kata, berapa lama waktu proses dari pencarian kata
menggunakan dua algoritma tersebut dan tingkat keakuratan kata yang keluar dari hasil pencarian kata menggunakan dua algoritma tersebut.
3.1.6 Analisis Data
Data kata yang digunakan pada sistem ini berdasarkan data kata yang ada dan telah disimpan pada database, dimana database tersebut berisi kata berdasarkan kamus istilah hukum. Pada Tabel 3.3 akan diberikan beberapa data kata pada database yang akan digunakan sebagai data kamus.
Tabel 3.3 Sampel Data Kamus
No Kata Deskripsi
1 Abortus Berdasarkan Kamus 1:,- (lat), abortus: terpencarnya embrio yang tidak mungkin lagi hidup; keguguran; keluaran; keadaan terhentinya pertumbuhan yang normal.
Berdasarkan Kamus 2:,- Gugurnya anak yang ada didalam kandungan karena kelahiran sebelum waktunya tanpa adanya unsur kesengajaan didalam prosesnya.
Berdasarkan Kamus 3:,-
2 Absoluut Berdasarkan Kamus 1:,- (Bld), mutlak: mengenai segenapnya; seutuhnya; tiada terbatas, penuh; tidak boleh tidak, harus ada.
Berdasarkan Kamus 2:,- kekuasaan mutlak; tidak terbatas.
Berdasarkan Kamus 3:,-
terhadap keputusan pengadilan atau pengadilan yang lebih tinggi atas permintaan jaksa atau terdakwa (biasanya pemeriksaan ulang tersebut dilakukan oleh Pengadilan Tinggi terhadap Putusan Pengadilan Negeri; apel.
Berdasarkan Kamus 2:,- Suatu hak terdakwa maupun penuntut umum untuk melakukan upaya hukum (memohon) apabila merasa tidak puas untuk memeriksa kembali putusan yang telah dijatuhkan oleh Pengadilan Tingkat I; (Militer) Hak terdakwa atau oditur untuk memohon kepada pengadilan tingkat banding (pengadilan militer tertinggi atau pengadilan militer utama) untuk memeriksa kembali putusan pengadilan tingkat pertama.
Berdasarkan Kamus 3:,- Suatu alat hukum (rechtsmiddel) yang merupakan hak terdakwa dan hak jaksa untuk memohon, supaya putusan pengadilan negeri diperiksa kembali oleh pengadilan tinggi.
4 Bedreiging Berdasarkan Kamus 1:,- (Bld) Ancaman; pengecaman
Berdasarkan Kamus 2:,- Pengancaman; perbuatan yang dilakukan dengan melakukan ancaman, baik disertai dengan kekerasan maupun tidak (H.Pidana)
Berdasarkan Kamus 3:,- Ancaman, pengancaman yang menurut KUHP merupakan suatu tindak pidana (336 KUHP).
Dapat dilihat pada Tabel 3.3 bahwa data yang telah disimpan dalam database sebanyak yang dibutuhkan dimana data tersebut adalah merupakan informasi tentang istilah hukum, dimana data tersebut akan dijadikan sebagai kata pencarian yang akan di implementasikan pencariannya dalam search engine dengan algoritma Galil-Seiferas dan algoritma Not So Naϊve.
3.2Perancangan
dan struktur tabel. Di dalam pembuatan aplikasi ini, database sangat diperlukan. Karena untuk mencari deskripsi dari pattren yang di-input, sistem membutuhkan komponen data yang disimpan dalam bentuk database menggunakan tools MySQL.
3.2.1.1Struktur Tabel
Didalam pembuatan program dibutuhkan suatu tempat media penyimpanan data yang berupa tabel untuk dapat melakukan kegiatan-kegiatan dalam pengaturan pencarian data. Oleh karena itu, sistem pengolahan data ini membutuhkan spesifikasi tabel. Tabel-tabel yang penulis gunakan yaitu tabel user dan kamus untuk menjalankan proses pencarian string. Struktur tabel-tabel tersebut, yaitu :
1. Tabel User
Tabel user berfungsi untuk menyimpan informasi tentang pengguna aplikasi pencarian string istilah hukum. Struktur tabel user dapat dilihat seperti pada Tabel 3.4.
Tabel 3.4 Tabel User
Nama Field Jenis Ukuran Keterangan
UserID varchar 20 Nama User (Primary Key)
Passwd varchar 10 Password User
2. Tabel Kamus
Tabel Kamus berfungsi untuk menyimpan informasi tentang deskripsi kata yang berhubungan dengan istilah hukum. Struktur tabel Kamus dapat dilihat seperti pada Tabel 3.5.
Tabel 3.5 Tabel Kamus
Nama Field Jenis Ukuran Keterangan
IDKamus Integer 4 Nomor urut kamus (Primary Key)
Kata Varchar 50 Kata istilah hukum
Deskripsi Varchar 255 Keterangan kata
3.2.1.2Relasi Antar Tabel
Relasi antar tabel merupakan pengelompokkan data menjadi tabel-tabel yang menunjang entitas dan relasi yang berfungsi untuk mengakses data item dari setiap database. Relasi antar tabel untuk sistem yang akan dibuat dapat dilihat pada Gambar
3.11 berikut ini.
Gambar 3.11 Relasi Antar Tabel
3.2.2 Perancangan Antarmuka
Merancang antarmuka (interface) sebuah sistem harus menarik, sederhana, dan lengkap ditambah proses kerja sistem yang harus cepat sehingga user merasa nyaman menggunakannya. Pada tahap ini akan dilakukan perancangan sistem perbandingan algoritma Galil-Seiferas dan algoritma Not So Naϊve pada aplikasi kamus hukum, dimana user meng-input pattern yang dicari berserta dengan teks dan sistem akan memprosesnya dengan mencocokkan pattern yang ada pada teks dengan database, menghitung jumlah pattern yang ditemukan, menghitung waktu proses serta menampilkan deskripsi dari pattern tersebut.
3.2.2.1Perancangan Menu Utama
Rancangan menu utama merupakan tampilan yang pertama kali muncul saat program dijalankan. Pada rancangan ini terdapat menu Otoritas, List Kamus, Help, About dan Quit. Otoritas berfungsi untuk melakukan pemasukan identitas pengguna sistem, List
Gambar 3.12 Rancangan Menu Utama
Keterangan:
Tabel 3.6.Keterangan Bagian-bagian Rancangan Menu Utama
No Jenis Objek Keterangan
1 MenuStrip Untuk melakukan login
2 MenuStrip Untuk menjalankan program List Kamus 3 MenuStrip Untuk menjalankan program Help 4 MenuStrip Untuk menjalankan program About 5 MenuStrip Untuk menjalankan program Quit
6 Tampilan Gambar Gambar pembukaan untuk tampilan latar belakang aplikasi
Gambar Pembukaan
Help About Quit Otoritas
1 2 3 4 5
3.2.2.2Perancangan Menu List Kamus
Rancangan menu list kamus merupakan tampilan yang diperuntukkan bagi user. Pada rancangan ini terdapat string kamus. Rancangan menu list item terlihat seperti pada Gambar 3.13.
Gambar 3.13 Rancangan Menu List Kamus
Keterangan :
Tabel 3.7.Keterangan Bagian-bagian Rancangan Menu List Kamus
No Jenis Objek Keterangan
1 Label Menampilkan judul kamus istilah hukum
2 Label Menampilkan abjad
3 TextBox Menampilkan data kamus
4 Label Menampilkan abjad
5 TextBox Menampilkan data kamus KAMUS ISTILAH HUKUM
A 2
1
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
3
X 4
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
5
Back
3.2.2.3Perancangan Menu Otoritas
Rancangan menu otoritas merupakan tampilan yang diperuntukan bagi user yang terdaftar sebagai admin. Pada rancangan ini terdapat File, Pencarian String dan Back. Rancangan menu otoritas terlihat seperti pada Gambar 3.14.
Gambar 3.14 Rancangan Menu Otoritas
Keterangan :
Tabel 3.8.Keterangan Bagian-bagian Rancangan Menu Otoritas
No Jenis Objek Keterangan
1 MenuStrip File untuk menampilkan program Data Kamus dan Data User
2 MenuStrip Data Kamus untuk menjalankan program Data Kamus 3 MenuStrip Data User untuk menjalankan program Data User 4 MenuStrip Pencarian string untuk menampilan program
perbandingan dari Algoritma Galil-Seiferas dan Algoritma Not So Naϊve
5 MenuStrip Back untuk kembali ke menu utama
File Pencarian string Back
Data Kamus
Data User 1
2
3
4
3.2.2.4Perancangan Login
Rancangan login berfungsi untuk pemasukan hak akses aplikasi pencocokan string dengan algoritma . Rancangan login dapat dilihat pada Gambar 3.15.
Gambar 3.15 Rancangan Data Login
Keterangan :
Tabel 3.9.Keterangan Bagian-bagian Rancangan Data Login
No Jenis Objek Keterangan
1 Label Untuk menampilkan string UserID 2 Label Untuk menampilkan string Password 3 TextBox Untuk tempat memasukkan nama user 4 TextBox Untuk tempat memasukkan password 5 Button Untuk menjalankan program
6 Button Untuk membatalkan proses Password
xxxxxxxxx
Ok UserID
Cancel xxxxxxxxx
3
4
5 6
1
3.2.2.5Perancangan Data Kamus
Rancangan data kamus berfungsi untuk pemasukan informasi tentang kata istilah hukum. Rancangan data kamus dapat dilihat pada Gambar 3.16.
Gambar 3.16 Rancangan Data Kamus
Keterangan :
Tabel 3.10.Keterangan Bagian-bagian Rancangan Data Kamus
No Jenis Objek Keterangan
1 Label Untuk menampilkan teks ID 2 Label Untuk menampilkan teks Kata 3 Label Untuk menampilkan Deskripsi
4 TextBox Untuk menampilkan secara otomatis nomor urut Kata 5 TextBox Untuk pemasukan Kata
6 TextBox Untuk pemasukan keterangan tentang defenisi Kata 7 Button Untuk menambah data baru
8 Button Untuk menyimpan data baru 9 Button Untuk mengedit data
10 Button Untuk menghapus data
11 Button Untuk membersihkan tampilan 12 Button Untuk menutup tampilan
3.2.2.6Perancangan Data User
Rancangan data user berfungsi untuk pemasukan informasi nama-nama pengguna sistem pencarian teks. Rancangan data user dapat dilihat pada Gambar 3.17 dibawah ini.
Gambar 3.17 Rancangan Data User
Keterangan :
Tabel 3.11. Keterangan Bagian-bagian Data User
No Jenis Objek Keterangan
1 Label Untuk menampilkan string UserID 2 Label Untuk menampilkan string Password 3 TextBox Untuk tempat pemasukan nama user 4 TextBox Untuk tempat pemasukan password 5 Button Untuk menambah data baru
6 Button Untuk menyimpan data baru 7 Button Untuk meng-edit data 8 Button Untuk menghapus data
9 Button Untuk membersihkan tampilan 10 Button Untuk menutup tampilan
3.2.2.7Perancangan Menu Pencarian
Rancangan pencarian berfungsi untuk melakukan pencocokan string kata istilah hukum. Rancangan pencarian dapat dilihat pada Gambar 3.18 dibawah ini.
Gambar 3.18 Rancangan Pencarian
Keterangan :
Tabel 3.12.Keterangan Bagian-bagian Rancangan Pencarian
No Jenis Objek Keterangan
1 Label Untuk menampilkan string Pattern 2 TextBox Untuk memasukkan Kata
3 Label Untuk menampilkan kata pada algoritma Not So Naϊve 4 Label Untuk menampilkan kata yang dicocokkan dengan
Pattern pada pencarian menggunakan algoritma Not So Naϊve sesuai dengan database
5 TextBox Untuk menampilkan defenisi dari kata yang dicari pada Pattern dengan menggunakan algoritma Not So Naϊve xxxxxxxxxxx
Jumlah ditemukan 0:0:0:0 15
6 Label Untuk menampilkan kata pada algoritma Galil-Seiferas 7 Label Untuk menampilkan kata yang dicocokkan dengan
Pattern pada pencarian menggunakan algoritma
Galil-Seiferas sesuai dengan database
8 TextBox Untuk menampilkan defenisi dari kata yang dicari pada Pattern dengan menggunakan algoritma Galil-Seiferas
9 Label Untuk nenampilkan Lama Proses pencarian menggunakan Algoritma Not So Naϊve
10 Label Untuk menampilkan waktu yang dibutuhkan algoritma dalam proses pencarian menggunakan algoritma Not So Naϊve
11 Label Untuk nenampilkan Jumlah Kata yang ditemukan sesuai database dengan pencarian menggunakan algoritma Not So Naϊve
12 Label Untuk menampilkan pencarian jumlah Pattern yang sesuai pada database menggunakan algoritma Not So Naϊve
13 Label Untuk nenampilkan Lama Proses pencarian menggunakan algoritma Galil-Seiferas
14 Label Untuk menampilkan waktu yang dibutuhkan algoritma dalam proses pencarian menggunakan algoritma Galil-Seiferas
15 Label Untuk nenampilkan Jumlah Kata yang ditemukan sesuai database dengan pencarian menggunakan algoritma
Galil-Seiferas
16 Label Untuk menampilkan pencarian jumlah Pattern yang sesuai pada database menggunakan algoritma Galil-Seiferas
17 Button Untuk melakukan proses pencarian kata 18 Button Untuk membatalkan proses
3.2.2.8 Perancangan About
Perancangan about berfungsi untuk menampilkan tentang keterangan yang terdapat dalam aplikasi yang dibangun. Rancangan about dapat dilihat seperti pada Gambar 3.19.
Gambar 3.19 Rancangan About
Keterangan:
Tabel 3.13.Keterangan Bagian-bagian Perancangan About
No. Jenis Objek Keterangan
1 PictureBox Untuk menampilkan gambar
2 TextBox Untuk menampilkan tentang data sumber kamus
3 Label Untuk menampilkan kata
1
Created by: 3
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxx
BAB 4
IMPLEMENTASI DAN PENGUJIAN
4.1Implementasi
Tahap implementasi merupakan salah satu tahap yang akan dilakukan dalam pembuatan perangkat lunak suatu sistem. Tahap ini dilakukan setelah melalui tahap analisis dan perancangan yang telah diuraikan pada bab sebelumnya.
4.1.1 Implementasi Pencarian Kata dengan Algoritma Galil-Seiferas
Pada tahap implementasi, untuk mendapatkan hasil yang tepat diperlukan analisis yang benar. Diberikan pola dan string untuk tahap analisis pengujian yang nantinya dapat sesuai dengan yang diharapkan, dengan pola merupakan kata yang di-input oleh pengguna, sedangkan string merupakan teks yang ada pada database. Untuk mengetahui tahap pre-processing diperlihatkan pada Tabel 4.1.
Pola : i s a
String : i r v i o k t a n i s a
Tabel 4.1 Inisialisasi Algoritma Galil-Seiferas
0 = i 1 = s 2 = a
Pada percobaan pencocokan pola terhadap string diberikan ilustrasi sebagai berikut:
P = 0
Q = 0
S = 0
P1 = 3
Q1 = 0
i r v i o k t a n i s a I s . . . .
i r v i o k t a n i s a . i . . . .
i r v i o k t a n i s a . . i . . . .
i r v i o k t a n i s a . . . I s . . . .
i r v i o k t a n i s a . . . . i . . . .
i r v i o k t a n i s a . . . i . . . .
i r v i o k t a n i s a . . . i . . . . .
i r v i o k t a n i s a . . . i . . .
i r v i o k t a n i s a . . . I S A
4.1.2 Implementasi Pencarian Kata dengan Algoritma Not So Naïve
Algoritma Not So Naϊve memiliki cara kerja berbeda dengan algoritma Galil-Seiferas. Dengan cara pada umumnya adalah menginisialisasi setiap indeks pada pola dan string yang diberikan oleh pengguna, sama halnya dengan algoritma Galil-Seiferas, pola merupakan kata yang di input oleh pengguna, sedangkan string merupakan teks yang terdapat dalam database.
Pada percobaan pencocokan pola terhadap string diberikan ilustrasi sebagai berikut:
Pola : i s a
String : i r v i o k t a n i s a
Pada algoritma Not So Naϊve fase pencarian dimulai dari indeks kedua dari pola. Contoh pola adalah “i s a” maka fase pencarian dimulai dari huruf “s”.
k = 1 Ell = 2
i r v i o k t a n i s a . s . . . . Karena tidak cocok diberikan nilai k = 1
i r v i o k t a n i s a . . . s . . . . Karena tidak cocok diberikan nilai k = 1
i r v i o k t a n i s a . . . . s . . . . Karena tidak cocok diberikan nilai k = 1
i r v i o k t a n i s a . . . s . . . . Karena tidak cocok diberikan nilai k = 1
i r v i o k t a n i s a . . . s . . . . . Karena tidak cocok diberikan nilai k = 1
i r v i o k t a n i s a . . . s . . . . Karena tidak cocok diberikan nilai k = 1
i r v i o k t a n i s a . . . s . . . Karena tidak cocok diberikan nilai k = 1
4.1.3 Spesifikasi Perangkat Keras
Spesifikasi perangkat keras yang digunakan untuk implementasi sistem ini adalah sebagai berikut:
1. Prosesor Intel Dual 2.00 GHz 2. Memory (RAM) 2 GB
3. Hardisk 500 GB
4. Resolusi monitor 1024 x 600 pixel. 5. Mouse dan keyboard
4.1.4 Spesifikasi Perangkat Lunak
Spesifikasi perangkat lunak yang digunakan untuk implementasi sistem ini adalah sebagai berikut :
1. Sistem Operasi Windows 7 Ultimate 2. Visual Studio 2010
4.1.5 Implementasi Menu Utama
Gambar 4.1 Implementasi Menu Utama
4.1.5.1Implementasi Data Login
Implementasi data login berfungsi untuk melakukan otorisasi ke dalam sistem sebagai administrator atau sebagai user. Halaman login dapat dilihat seperti pada Gambar 4.2.
4.1.5.2Implementasi Menu Otoritas
Implementasi menu otoritas merupakan berfungsi untuk menampilkan halaman menu pencarian string dan menu file pengguna. Halaman otoritas dapat dilihat seperti pada Gambar 4.3.
Gambar 4.3 Implementasi Menu Otoritas
4.1.5.3Implementasi Menu Pencarian
Gambar 4.4 Implementasi Menu Pencarian
4.1.5.4Implementasi Data Kamus
Implementasi data kamus berfungsi untuk melakukan pemasukan data istilah hukum. Halaman data kamus dapat dilihat seperti pada Gambar 4.5.
4.1.5.5Implementasi Data User
Implementasi data user merupakan halaman yang berfungsi untuk melakukan pemasukan informasi pengguna sistem pencarian string. Halaman data user dapat dilihat seperti pada Gambar 4.6.
Gambar 4.6 Implementasi Data User
4.1.5.6Implementasi Menu List Kamus
Gambar 4.7 Implementasi Menu List Kamus
4.1.5.7Implementasi About
Gambar 4.8 Implementasi About
4.2Pengujian
Setelah implementasi sistem telah selesai dilakukan, maka proses selanjutnya adalah pengujian sistem. Hal ini dilakukan untuk mengetahui apakah sistem yang dibuat berjalan sesuai dengan rancangan sebelumnya.
4.2.1 Kata Algoritma Galil-Seiferas dan Algoritma Not So Naϊve
Setelah implementasi sistem telah selesai dilakukan, maka untuk mengetahui apakah sistem yang dibuat berjalan sesuai dengan rancangan sebelumnya dilakukan hasil pengujian yang diberikan beberapa contoh kata yang di uji. Kata yang diberikan diperlihatkan pada Tabel 4.2.
Tabel 4.2 Contoh Kata dalam Pengujian
Cari
Kata
Gambar Pencarian Kata
dengan Algoritma
Galil-Seiferas
Gambar Pencarian Kata
dengan Algoritma Not So Naϊve
Ketera
aan Match
per Mis
match
v Match
hakim Match
Berdasarkan hasil pengujian pada Tabel 4.2 didapatkan hasil pencarian dan waktu proses pada algoritma Galil-Seiferas dan algoritma Not So Naϊve yang dapat dilihat pada Tabel 4.3
Tabel 4.3 Analisis Hasil Pencarian dan Waktu Proses Algoritma Galil-Seiferas
dan Algoritma Not So Naϊve
No. Kata
Jumlah
Kata
ditemukan
Waktu
Algoritma
Galil-Seiferas
Waktu
Algoritma Not So Naϊve
Keterangan
1 aan 2 1,852 ms 2,372 ms Match
4 v 4 1,738 ms 2,94 ms Match
5 hakim 1 2,183 ms 2,456 ms Match
Total 10,435 ms 12,28 ms
Rata-Rata 2,087 ms 2,456 ms
Setelah mendapatkan Hasil Pengujian dari Tabel 4.3 dan Tabel 4.4 maka dibuat grafik perbandingan hasil pengujian dari kedua algoritma tersebut. Grafik dapat dilihat pada Gambar 4.9.
0 1 2 3 4
aan per ibad v hakim
Perbandingan Waktu Algoritma Galil-Seiferas dan Algoritma Not So Naive
Algoritma G-S
Algoritma NSN
Gambar 4.9 Grafik Hasil Waktu Proses Algoritma Galil-Seiferas dan
Algoritma Not So Naϊve
lebih cepat untuk pencocokan kata dibandingkan dengan algoritma Not So Naϊve. Rata-rata dari total hasil perbandingan dari kedua algoritma tersebut dapat dijelaskan pada Gambar 4.10
0 5 10 15
Total Rata-rata
Perbandingan Total dan Rata-rata Waktu Algoritma Galil-Seiferas dan Algoritma Not So Naive
Algoritma G-S
Algoritma NSN
Gambar 4.10 Grafik total dan Rata-rata Waktu Proses Algoritma Galil-Seiferas
dan Algoritma Not So Naϊve
4.3Kompleksitas Algoritma Galil-Seiferas
Kompleksitas waktu yang digunakan untuk algoritma Galil-Seiferas adalah notasi Big-ϴ(m) yaitu notasi asimtotik linear dapat dilihat pada tabel 4.4.
Tabel 4.4 Kompleksitas Algoritma Galil-Seiferas Waktu Big-ϴ(n)
C Code C # C#
Private Sub search(ByRef hasil As Integer)
While p <= n – m C1 n C1(n)
While p + s + q < n AndAlso x(s + q) = y(p + s + q) C1 5n C1(5n)
q += 1 C2 5n C2(5n)
End While C3 5n C3(5n)
If q = m - s AndAlso x.Equals(y.Substring(p, s + 1))
Then C4 5n C4(5n)
hasil = p C5 5n C5(5n)
End If C6 5n C6(5n)
If q = p1 + q1 Then C4 5n C4(5n)
p += p1 C2 5n C2(5n)
q -= p1 C2 5n C2(5n)
Else C7 5n C7(5n)
p += (q / k + 1) C2 5n C2(5n)
q = 0 C2 5n C2(5n)
End If C8 5n C8(5n)
End While C9 5n C9(5n)
End Sub C10 5n C10(5n)
Kompleksitas waktu dari algoritma Galil-Seiferas adalah :
T(m,n) = C1(n)+ C1(5n) + 5C2(5n) + C3(5n) + 2C4(5n) + C5(5n) + C6(5n) +
C7(5n) + C8(5n) + C9(5n) + C10(5n)
= C1 n1+ ( C1 + 5C2 + C3 + 2C4 + C5 + C6 + C7 + C8 + C9 + C10 ) 5n1
= n1 + 5n1
= ϴ(n)
Tabel 4.4 menjelaskan tentang kompleksitas dari Algoritma Galil-Seiferas. C adalah konstanta. # 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 m.
4.4Kompleksitas Algoritma Not So Naϊve
Kompleksitas waktu yang digunakan untuk algoritma Not So Naϊve adalah notasi Big-ϴ(m x n) yaitu notasi asimtotik linear dapat dilihat pada tabel 4.5.
Tabel 4.5. Kompleksitas Algoritma Not So Naϊve Waktu Big-ϴ(m x n)
Code C # C#
If x.Substring(0, 1).Equals(x.Substring(1, 1)) Then C1 1 C1
k = 2 C2 1 C2
ell = 1 C2 1 C2
Else C3 1 C3
k = 1 C2 1 C2
ell = 2 C2 1 C2
End If C4 1 C4
While j <= n - m C5 n C5(n)
If Not (x.Substring(1, 1).Equals(y.Substring(j
+ 1, 1))) Then C6 n C6(n)
j = j + k C2 n C2(n)
Else C7 n C7(n)
If x.Substring(2, m -
2).Equals(y.Substring(j + 2, m - 2)) And x.Substring(0, 1).Equals(y.Substring(j, 1)) Then
ϴ(m) n m x n
Return j C5 m x n C5(m x n)
End If C8 m x n C8(m x n)
j = j + ell C2 m x n C2(m x n)
End If C9 m x n C9(m x n)
End While C10 m x n C10(m x n)
Kompleksitas waktu dari algoritma Not So Naϊve adalah :
T(m,n) = C1 + 4C2 + C3 + C4 + C11 + C2(n) + C5(n) + C6(n) + C7(n) +
Ɵ(m x n) + C2(m x n) + C5(m x n) + C8(m x n) + C9(m x n) +
C10(m x n)
= (C1 + 4 C2 + C3 + C4 + C11 ) m0 + ( C2 + C5 + C6 + C7 ) n1
+ (C2 + C5 + C8 + C9 + C10 ) m1n1 + ϴ(m x n)
= m0 + n1 + m1n1 + ϴ(m x n) = ϴ(m x n)
Pada Tabel 4.5 dijelaskan tentang kompleksitas dari algoritma Not So Naϊve. C adalah sebuah konstanta. Kemudian # adalah frekuensi yang berfungsi sebagai ukuran masukan dan C.# adalah untuk mencari kompleksitas waktu (T(m,n)). T adalah waktu, m adalah batas panjang karakter yang di-input (pattern) dan n adalah batas panjang
BAB 5
KESIMPULAN DAN SARAN
5.1. Kesimpulan
Berdasarkan pengamatan dari analisis dan perancangan sistem, penulis dapat mengambil kesimpulan yaitu :
1. Aplikasi yang dirancang telah didapatkan solusi dari permasalahan dengan mengimplementasikan algoritma Galil-Seiferas dan algoritma Not So Naϊve untuk melakukkan pencocokkan kata pada aplikasi kamus hukum.
2. Algoritma Galil-Seiferas pada tahap searching dilakukan pencarian pada teks T untuk menemukan setiap v dan ketika ditemukan akan dilanjutkan dengan
pencarian terhadap u tepat disebelahnya pada T.
3. Kompleksitas waktu pada algoritma Galil-Seiferas menggunakan waktu ukurann ϴ(n) dan algoritma Not So Naϊve menggunakan kompleksitas waktu ukuran ϴ(m x n).
5.2. Saran
Untuk penelitian selanjutnya penulis mengharapkan beberapa pengembangan, yaitu :
1. Penambahan algoritma string matching lain diharapkan dapat diterapkan untuk pencarian kata dalam aplikasi agar nantinya dapat diketahui algoritma string matching mana yang paling cepat dalam waktu pencarian.
BAB 2
LANDASAN TEORI
2.1. Algoritma
Istilah algoritma (algorithm) berasal dari kata “algoris” dan “ritmis”, yang pertama
kali diungkapkan oleh Abu Ja‟far Mohammed Ibn Musa al Khowarizmi (825 M)
dalam buku Al-Jabr Wa-al Muqabla. Dalam bidang pemrograman algoritma didefenisikan sebagai suatu metode khusus yang tepat dan terdiri dari serangkaian langkah yang terstruktur dan dituliskan secara matematis yang akan dikerjakan untuk menyelesaikan suatu masalah dengan bantuan komputer. (Jogiyanto, 2005).
Istilah algoritma digunakan dalam ilmu komputer untuk menggambarkan metode pemecahan masalah yang terbatas, deterministik, dan efektif yang cocok untuk implementasi sebagai program komputer. (Sedgewick. 2011).
Terdapat beberapa defenisi yang diberikan untuk kata algoritma antara lain (Priyatna. 2015) :
a. Algoritma adalah sekelompok aturan untuk menyelesaikan perhitungan yang dilakukan oleh tangan atau mesin.
b. Algoritma adalah langkah demi langkah sebuah prosedur berhinggga yang dibutuhkan untuk menghasilkan sebuah penyelesaian.
c. Algoritma adalah urutan langkah-langkah perhitungan yang mentrasformasikan dari nilai masukan menjadi keluaran.
d. Algoritma adalah urutan operasi yang dilakukan terhadap data yang terorganisasi dalam struktur data.
e. Algoritma adalah sebuah program abstrak yang dapat dieksekusi secara fisik oleh mesin.
2.2. Algoritma Pencocokan String
Algoritma pencocokan string (string matching) merupakan komponen dasar dalam pengimplementasian berbagai perangkat lunak praktis yang sudah ada. String matching digunakan untuk menemukan satu atau lebih string yang disebut dengan pattern (string yang akan dicocokkan ke dalam text) dalam string yang disebut dengan
text (string yang di-input). (Charras. 1997).
Algoritma yang dianggap memiliki hasil yang paling baik dalam praktiknya merupakan algoritma yang bergerak mencocokan string dari arah kanan ke kiri. Untuk mengetahui manakah algoritma yang mampu mencari string paling cepat, maka muncullah ide untuk meneliti kemampuan dari algoritma-algoritma ini. (Sagita. 2013). String adalah rangkaian karakter selama Σ alphabet yang terbatas. Misalnya,
ATCTAGAGA adalah string lebih . Masalah pencocokan string adalah untuk menemukan semua kejadian dari string P yang disebut pola, di string T pada alphabet yang sama yang disebut teks. Mengingat string x, y, dan z kita mengatakan
bahwa x adalah awalan dari xy, akhiran dari yx, dan faktor yxz. (Navarro. 2002). Exact string matching, yaitu pencocokan sebuah string secara sangat tepat dengan susunan karakter dalam string yang dicocokkan baik dalam jumlah maupun urutan karakter dalam stringnya. Pada proses pencocokan string, digunakan sebuah window yang akan bergeser di text. Window itu memiliki panjang yang sama dengan
panjang pattern. Pada awal proses pencocokan string, window diletakkan pada ujung kiri text, lalu karakter-karakter pada window dibandingkan dengan karakter-karakter pada pattern, kemudian window akan digeser ke kanan di text dengan jarak tertentu, dan pergeseran tersebut baru akan berhenti bila window tersebut sampai pada ujung kanan text atau sampai pattern ditemukan cocok. (Charras. 1997).
Gambar 2.1 Mekanisme Sliding Windows
Algoritma pencocokan string dapat diklasifikasikan menjadi tiga bagian menurut pencariannya, (Charras. 1997) :
a. Kategori pertama, arah yang paling alami dalam pencocokan string yaitu dari kiri ke kanan. Algoritma kategori ini melakukan pencocokan string dimulai dari karakter paling kiri pattern seperti yang ditunjukkan pada Gambar 2.2. Beberapa algoritma yang termasuk dalam kategori ini adalah algoritma brute force, algoritma Karb-Rabin, dan algoritma Knuth-Morris-Pratt.
Gambar 2.2 Pencocokan dari Karakter Paling kiri ke Paling Kanan Pattern
b. Kategori kedua, algoritma yang melakukan pencocokan dari kanan ke kiri karakter pada pattern seperti yang dapat dilihat pada Gambar 2.3. Algoritma yang termasuk dalam kategori ini umumnya dikatakan sebagai algoritma yang menghasilkan hasil terbaik pada praktekmya, yaitu algoritma Boyer-Moore.
c. Kategori ketiga yaitu pencocokan dari dua arah yang telah ditentukan oleh tiap algoritma tertentu. Salah satunya seperti yang diterapkan oleh Galil-Seiferas dan Crochemore-Perrin dalam algoritma Two Way, mereka membagi pattern y menjadi dua bagian yaitu y = y1y2. Seperti yang dapat kita lihat pada Gambar 2.4, pertama kali,
pencarian terjadi pada y2 yang dilakukan dari karakter paling kiri ke kanan, apabila
selama pencarian pertama tidak terjadi ketidakcocokan atau pattern y2 cocok dengan
text selanjutnya pada pencarian kedua algoritma akan memeriksa pada y1 yang
dilakukan dari kanan ke kiri seperti yang ditunjukkan pada Gambar 2.5.
Gambar 2.4 Pencocokan Patterny2 Dimulai dari Karakter Paling Kiri
Gambar 2.5 Pencocokan Patterny1 Dimulai dari Karakter Paling Kanan
2.3. Algoritma Galil-Seiferas
Algoritma Galil-Seiferas merupakan algoritma yang menggunakan konstanta k oleh Galil dan Seiferas dinyatakan bernilai 4. Fungsi reach jangkauan untuk 0 ≤ i <m sebagai berikut:
(i) = i + max {i ' ≤ m - i: x [0 .. i '] = x [i +1 .. i' + i +1]}.
searching dilakukan pencarian pada teks T untuk menemukan setiap v dan ketika ditemukan akan dilanjutkan dengan pencarian terhadap u tepat disebelahnya pada T. (Charras. 1997).
Implementasi dalam fase preprocessing
(fungsi newP1, newP2 dan mengurai) adalah untuk menemukan uv faktorisasi sempurna x dimana u = x[0....s-1] dan v = x[s....m-1]. Fungsi newP1 menemukan periode awalan terpendek x[s...m-1]. Fungsi newP2 menemukan periode awalan terpendek kedua dari x[s...m-1] dan fungsi parse terhadap s. Sebelum memanggil fungsi pencarian kita memiliki:
a. x[s...m-1] memiliki paling banyak satu periode awalan;
b. Jika x[s...m-1] tidak memiliki masa awalan, maka panjangnya adalah p1;
c. x[s...s+p1+q1-1] memiliki periode terpendek panjang p1;
d. x[s...s+p1+q1] tidak memiliki periode panjang p1;
Gambar 2.6 Faktorisasi Sempurna x
Pola x adalah dari bentuk x[0...s-1] x[s...m-1] dimana x[s...m-1] adalah dari bentuk z z’ z” dengan z dasar, |z|=p1.z’ awalan z, z’ tidak awalan z dan | z z '| =
p1+q1. Pada Gambar 2.4 terlihat bahwa ketika mencari x[s...m-1] di y, jika
x[s...s+p1+q1-1] telah dicocokkan pergeseran panjang p1 dapat dilakukan dan
perbandingan yang dilanjutkan dengan x[s+q1]. Sebaliknya jika terjadi
ketidakcocokan dengan x[s+q] dengan q ≠ p1 + q1 maka pergeseran panjang q/k1
dapat dilakukan dan perbandingan yang dilanjutkan dengan x[0]. Hal ini memberikan jumlah linier keseluruhan perbandingan karakter teks.
void newP1() {
void GS(char *argX, int argM, char *argY, int argN) { x = argX;
Gambar 2.7 Fase Pencarian dengan Algoritma Galil-Seiferas.
2.4. Algoritma Not So Naϊve
Algoritma Not So Naϊve bekerja dimana selama fase pencarian dalam perbandingan karakter yang dibuat diatur dalam susunan sebagai berikut: 1, 2,...., m-2, m-1, 0. Untuk setiap upaya dimana jendela diposisikan pada faktor teks:
y [j .. j + m -1]: jika x [0] = x [1] dan x [1] y [j+1]
dari jika x [0] x [1] dan x [1] = y [j+1]
pola digeser oleh 2 posisi pada akhir upaya dan dengan 1 sebaliknya. Dengan demikian tahap preprocessing dapat dilakukan dalam ruang dan waktu yang konstan. Tahap pencarian algoritma Not So Naïve memiliki kasus kuadrat terburuk tapi itu sedikit (dengan koefisien) sub-linear dalam kasus rata-rata. (Charras. 1997).
Program Bahasa C
void NSN(char *x, int m, char *y, int n) { int j, k, ell;
/* Preprocessing */ if (x[0] == x[1]) { k = 2;
ell = 1; }
else {
k = 1; ell = 2; }
/* Searching */ j = 0;
while (j <= n - m)
if (x[1] != y[j + 1]) j += k;
else {
Contoh :
Fase Pre-processing
k=1 and =2
Fase Searching
2.5. Kompleksitas Algoritma
Algoritma merupakan salah satu cabang ilmu komputer yang membahas prosedur penyelesaian suatu permasalahan. Dalam beberapa konteks, algoritma merupakan spesifikasi urutan langkah untuk melakukan pekerjaan tertentu. Algoritma adalah prosedur komputasi yang terdefenisi dengan baik yang menggunakan beberapa nilai sebagai masukan dan menghasilkan beberapa nilai sebagai masukan dan menghasilkan beberapa nilai yang disebut keluaran. (Munir. 2007).
Adanya algoritma yang baik maka komputer bisa menyelesaikan perhitungan dengan cepat dan benar. Sebaliknya jika algoritma kurang baik maka penyelesaian lambat dan bahkan tidak didapat solusi yang diharapkan. Baik buruknya sebuah algoritma dapat dibuktikan dari kompleksitas waktu yang digunakan.
Kompleksitas dari suatu algoritma merupakan seberapa banyak komputasi yang dibutuhkan algoritma tersebut untuk menyelesaikan masalah. Secara informal, algoritma yang dapat menyelesaikan suatu permasalahan dalam waktu yang singkat memiliki kompleksitas yang rendah, sementara algoritma yang membutuhkan waktu lama untuk menyelesaikan masalahnya mempunyai kompleksitas yang tinggi. (Azizah. 2013).
Dua hal penting untuk mengukur efektivitas suatu algoritma yaitu kompleksitas ruang (keadaan) dan kompleksitas waktu. Kompleksitas ruang berkaitan dengan sistem memori yang dibutuhkan dalam eksekusi program. Kompleksitas waktu dari algoritma berisi ekspresi bilangan dan jumlah langkah yang dibutuhkan sebagai fungsi dari ukuran permasalahan. Analisa asimtotik menghasilkan notasi Ο (Big O) dan dua notasi untuk komputer sain yaitu ϴ (Big Theta) dan (Big Omega). (Purwanto. 2008).
8.4.1. Big-O (O)
Secara informal, O(g(n)) adalah himpunan semua fungsi yang lebih kecil atau dengan urutan yang sama dengan g(n) (hingga beberapa konstanta, sampai n ke tak terhingga). Sebuah fungsi t(n) dikatakan bagian dari Ο((g(n)) yang dilambangkan dengan t(n) Є
Ο(g(n)), jika t(n) batas atasnya adalah beberapa konstanta g(n) untuk semua n besar, jika terdapat konstanta c positif dan beberapa bilangan bulat tidak negatif n0 seperti t(n) ≤ cg(n) untuk semua n≥n0 . ( Levitin. 2011).
8.4.2. Big Omega ( )
(g(n)) merupakan himpunan semua fungsi dengan tingkat pertumbuhan lebih besar atau sama dengan g(n) (hingga beberapa konstanta, sampai n ke tak terhingga). Sebuah fungsi t(n) dikatakan bagian dari (g(n)), dilambangkan dengan t(n) Є
(g(n)), jika t(n) batas bawahnya adalah beberapa konstanta positif dari g(n) untuk semua n besar. Terdapat konstanta c positif dan beberapa bilangan bulat tidak negatif n0 seperti t(n) ≥ cg(n), (untuk setiap n ≥ n0). (Levitin. 2011).
8.4.3. Big Theta (ϴ)
ϴ(g(n)) adalah himpunan semua fungsi yang memiliki tingkat pertumbuhan yang sama dengan g(n) (hingga beberapa konstanta, sampai n ke tak terhingga). Sebuah fungsi t(n) dikatakan bagian dari ϴ(g(n)), dilambangkan dengan t(n) Є ϴ(g(n)), jika t(n) batas atas dan bawahnya adalah beberapa konstanta positif g(n) untuk semua n
yang besar, yaitu jika ada beberapa konstanta positif c1 dan c2 serta beberapa bilangan
bulat non-negatif n0 seperti c2g(n) ≤ t(n) ≤ c1g(n) untuk semua n ≥ n0. (Levitin. 2011).
2.6. Kamus
perkataan dan juga contoh penggunaan bagi kata tersebut. Kamus disusun sesuai dengan abjad dari A-Z dengan tujuan memudahkan pengguna kamus dalam mencari istilah yang diinginkannya dengan cepat dan mudah.
Secara fisik, kamus terbagi menjadi dua jenis yaitu kamus yang berbentuk buku dan kamus elektronik (digital). Kamus berbentuk buku terdiri dari puluhan bahkan ratusan lembar halaman kata. Berbeda dengan kamus buku yang cenderung besar dan tebal, kamus elektronik atau kamus digital merupakan sebuah fasilitas yang membantu pengguna mencari kata dengan cara mengetikkan kata yang diinginkan pada kolom pencarian. Penggunaan kamus elektronik atau kamus digital ini lebih efisien dalam hal waktu dibandingkan dengan kamus buku. (Tania. 2015).
Kamus digital lebih mengutamakan pada fasilitas pengolah kata elektronis, yaitu sebuah fasilitas yang memungkinkan aplikasi pengolah kata memeriksa ejaan dari dokumen yang diketik. Hal ini dapat meminimumkan kemungkina salah eja atau salah ketik. Pengguna kamus elektronis atau kamus digital dalam aplikasi pemrosesan teks merupakan hal yang tidak dapat dihindarkan. Kamus merupakan basis pemeriksaan, basis pengetahuan, bahkan sebagai basis penyelidikan (Pasaribu. 2013).
2.7. Hukum
Hukum merupakan sistem yang terpenting dalam pelaksaan atas rangkaian kekuasaan kelembagaan. Menurut Prof. E. Utrecht, defenisi hukum adalah himpunan petunjuk hidup yang mengatur tata tertib dalam suatu masyarakat dan seharusnya ditaati oleh anggota masyarakat yang besangkutan, oleh karena pelanggaran terhadap petunjuk hidup itu dapat menimbulkan tindakan dari pemerintah masyarakat itu.
(Djindang. 1989).
menonjolkan kepentingan pribadinya atau kepentingan kelompoknya. Inti tujuan hukum adalah agar tercipta kebenaran dan keadilan.