Perbandingan Algoritma Galil-Seiferas dan Algoritma Not So Naϊve Dalam Aplikasi Kamus Hukum

(1)

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

ListKamusToolStripMenuItem.Click frmListKamus.Show() End Sub

End Class

frmLogin.vb

Imports MySql.Data.MySqlClient

Imports System.Data

Public Class frmLogin

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As

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


(2)

CMD = New MySqlCommand("select * from User where userID='" & txtUserID.Text & "' and passwd='" & txtPasswd.Text & "'", Kon)

RD = CMD.ExecuteReader RD.Read()

If RD.HasRows Then

bolLogin = True

Me.Hide()

frmMenuOto.Show()

Else

bolLogin = False

MsgBox("Login salah, periksa kembali user name dan password") txtUserID.Focus()

End If

RD.Close() CMD.Dispose() End Sub

Private Sub cmdClose_Click(ByVal sender As System.Object, ByVal e As

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

cmdOpen.Enabled = True

cmdOpen.Select() End If

End Sub End Class

frmMenuOto.vb

Public Class frmMenuOto

Private Sub KamusHukumToolStripMenuItem_Click(ByVal sender As

System.Object, ByVal e As System.EventArgs) Handles

KamusHukumToolStripMenuItem.Click frmDataKamus.Show()


(3)

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

PencarianStringToolStripMenuItem.Click frmKamusHukum.Show()

End Sub End Class

frmNotSoNaive.vb

Imports System

Imports System.Text.RegularExpressions

Imports MySql.Data.MySqlClient

Imports System.Data

Imports System.Globalization

Public Class frmNotSoNaive

Dim Time As New DateTime

Dim x, y As String

Dim k, m, n, p, p1, p2, q, q1, q2, s, outGalil As Integer

Public Shared Function NotSoNaive(ByVal x As String, ByVal y As String) As Integer

Dim m As Integer = x.Length() Dim n As Integer = y.Length() Dim k As Integer

Dim ell As Integer

Dim j As Integer = 0 MsgBox("dddddddddddddd")

If x.Substring(0, 1).Equals(x.Substring(1, 1)) Then

k = 2 ell = 1 Else

k = 1 ell = 2 End If

While j <= n - m

If Not (x.Substring(1, 1).Equals(y.Substring(j + 1, 1))) Then

j = j + k Else

If x.Substring(2, m - 2).Equals(y.Substring(j + 2, m - 2)) And x.Substring(0, 1).Equals(y.Substring(j, 1)) Then

Return j End If

j = j + ell End If

End While

Return n End Function

Public Shared Sub Main() Dim y As String

Dim x As String

y = frmNotSoNaive.txtString.Text x = frmNotSoNaive.txtPattern.Text


(4)

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

txtPattern.Select() pb.Value = 0

pb.Visible = False

Call KoneKsi()

If Algo = "Galil" Then

Me.Text = "Galil Siferas" Else

Me.Text = "Not So Naive" End If

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles btnProses.Click pb.Visible = True

pb.Value = 20

Time = DateTime.Now Timer2.Enabled = True

Timer2.Start() txtHasil.Text = "" strI = ""

lblWaktu.Text = "" Application.DoEvents()

If txtPattern.Text <> "" And txtString.Text <> "" Then

If Algo = "Galil" Then

Call Galil()

ElseIf Algo = "NotSo" Then

Dim value = SearchStringNotSo(txtString.Text, txtPattern.Text)

End If

If strI <> "tidak ketemu pada string" Then

CMD = New MySqlCommand("select * from Kamus where Kata='" & txtPattern.Text & "'", Kon)

RD = CMD.ExecuteReader() Application.DoEvents() If RD.Read Then

txtHasil.Text = RD.Item("Deskripsi") & " pada posisi " & strI

Else

txtHasil.Text = "tidak ketemu pada database" End If

pb.Value = 50 RD.Close() CMD.Dispose() Else

txtHasil.Text = "tidak ketemu pada string" End If

Else

MsgBox("Data belum lengkap") End If

pb.Value = 90 pb.Value = 100 Timer2.Stop()


(5)

End Sub

Public Shared Function SearchStringNotSo(ByVal str As String, ByVal

pat As String) As Integer()

'Not So Naive Algorithm Ok

Dim retVal As New List(Of Integer)() Dim M As Integer = pat.Length

Dim N As Integer = str.Length Dim Jum1 As Integer

For i As Integer = 0 To N - M Dim j As Integer

For j = 0 To M - 1

If str(i + j) <> pat(j) Then

Exit For

End If

Next

If j = M Then

retVal.Add(i)

strI = strI & " " & i Jum1 = Jum1 + 1

End If

Next

If strI = "" Then

strI = "tidak ketemu pada string, Not So Naive Algorithm " End If

frmNotSoNaive.lblJum.Text = Jum1 Return retVal.ToArray()

End Function

Public Shared Function SearchStringGalil(ByVal str As String, ByVal

pat As String) As Integer()

'=====================>>>>> Galil Seiferas Algorithm (OK) Dim retVal As New List(Of Integer)()

Dim M As Integer = pat.Length Dim N As Integer = str.Length For i As Integer = 0 To N - M Dim j As Integer

For j = 0 To M - 1

If str(i + j) <> pat(j) Then

Exit For

End If

Next

If j = M Then

retVal.Add(i)

strI = strI & " " & i End If

Next

If strI = "" Then

strI = "tidak ketemu pada string, Galil Siferas Algorithm" End If

Return retVal.ToArray() End Function

Sub Galil()

Dim Pattern As String = txtPattern.Text Dim Test As String = txtString.Text


(6)

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

lblWaktu.Text = "" txtPattern.Text = "" txtString.Text = "" lblJum.Text = "" txtHasil.Text = "" End Sub

Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Timer2.Tick

Dim difference As TimeSpan = DateTime.Now.Subtract(time) lblWaktu.Text = difference.Days.ToString & ":" &

difference.Hours.ToString & ":" & difference.Minutes.ToString & ":" & difference.Seconds.ToString & ":" & difference.Milliseconds.ToString End Sub

Public Function GS(ByVal argX As String, ByVal argY As String) As Integer

x = argX m = x.Length y = argY n = y.Length k = 4

p = q = s = q1 = p2 = q2 = 0 p1 = 1

newP1()

Return outGalil End Function

Private Sub newP1()

While x(s + q1) = x(s + p1 + q1) q1 += 1

End While

If p1 + q1 >= k * p1 Then

p2 = q1 q2 = 0 newP2() Else

If s + p1 + q1 = m Then

search(outGalil) Else

p1 += (q1 / k + 1) q1 = 0

newP1() End If

End If


(7)

End While

If p2 + q2 = k * p2 Then

parse()

ElseIf s + p2 + q2 = m Then

search(outGalil) Else

If q2 = p1 + q1 Then

p2 += p1 q2 -= p1 Else

p2 += (q2 / k + 1) q2 = 0

End If

newP2() End If

End Sub

Private Sub parse() While 1

While x(s + q1) = x(s + p1 + q1) q1 += 1

End While

While p1 + q1 >= k * p1 s += p1

q1 -= p1 End While

p1 += (q1 / k + 1) q1 = 0

If p1 >= p2 Then

Exit While

End If

End While

newP1() End Sub

Private Sub search(ByRef hasil As Integer) While p <= n - m

While p + s + q < n AndAlso x(s + q) = y(p + s + q) q += 1

End While

If q = m - s AndAlso x.Equals(y.Substring(p, s + 1)) Then

hasil = p End If

If q = p1 + q1 Then

p += p1 q -= p1 Else

p += (q / k + 1) q = 0

End If

End While

End Sub End Class


(8)

Imports MySql.Data.MySqlClient

Imports System.Data

Public Class frmDataKamus

Dim str(5) As String

Dim IDKamus As Integer

Private Sub frmDataKamus_Load(ByVal sender As System.Object, ByVal e

As System.EventArgs) Handles MyBase.Load Call KoneKsi()

Call Bersih() Call mati() Call ViewData() btnAdd.Enabled = True

btnCari.Enabled = True

btnSave.Enabled = False

btnEdit.Enabled = False

btnDelete.Enabled = False

btnAdd.Select() btnAdd.Focus() End Sub

Sub Bersih()

txtKata.Text = "" txtdeskripsi.Text = "" lblID.Text = ""

bolTambah = False

bolCari = False

End Sub

Sub Mati()

txtKata.Enabled = False

txtDeskripsi.Enabled = False

End Sub

Sub CariID()

CMD = New MySqlCommand("Select * from Kamus order by IDKamus desc", Kon)

RD = CMD.ExecuteReader() RD.Read()

If RD.HasRows = True Then

IDKamus = RD.Item("IDKamus") + 1 Else

IDKamus = 1 End If

RD.Close() CMD.Dispose()

lblID.Text = IDKamus End Sub

Sub ViewData()

lv.Items.Clear()

Dim lvDaf As ListViewItem

With lv

.Columns.Clear()

.Columns.Add("ID", 50, HorizontalAlignment.Left) .Columns.Add("Kata", 300, HorizontalAlignment.Left)

.Columns.Add("Deskripsi", 1500, HorizontalAlignment.Left) .View = View.Details

.GridLines = True

.BorderStyle = BorderStyle.Fixed3D .AutoArrange = True

End With


(9)

Do While RD.Read

str(0) = RD.Item("IDKamus") str(1) = RD.Item("Kata") str(2) = RD.Item("Deskripsi") lvDaf = New ListViewItem(str) lv.Items.Add(lvDaf) Loop End If RD.Close() CMD.Dispose() End Sub

Private Sub btnQuit_Click(ByVal sender As System.Object, ByVal e As

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

bolTambah = True

txtKata.Enabled = True

btnAdd.Enabled = False

txtKata.Focus() End Sub

Private Sub txtKata_KeyPress(ByVal sender As Object, ByVal e As

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 RD.Close()

CMD.Dispose() Call ViewData()

MsgBox("Data sudah disimpan")

End Sub

Private Sub lv_Click(ByVal sender As Object, ByVal e As

System.EventArgs) Handles lv.Click If bolCari = True Then


(10)

CMD = New MySqlCommand("select * from Kamus where IDKamus=" & IDKamus & "", Kon)

RD = CMD.ExecuteReader() If RD.Read Then

lblID.Text = IDKamus

txtKata.Text = RD.Item("Kata")

txtDeskripsi.Text = RD.Item("Deskripsi") txtDeskripsi.Enabled = True

txtKata.Enabled = True

btnEdit.Enabled = True

btnDelete.Enabled = True

Else

txtKata.Text = "" txtDeskripsi.Text = "" End If

RD.Close() CMD.Dispose() End If

End Sub

Private Sub btnEdit_Click(ByVal sender As System.Object, ByVal e As

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) CMD.ExecuteNonQuery()

CMD.Dispose()

MsgBox("Data udah diEdit") Call Bersih()

Call Mati() Call ViewData()

btnSave.Enabled = False

btnDelete.Enabled = False

btnEdit.Enabled = False

btnAdd.Enabled = True

btnAdd.Focus() End Sub

Private Sub btnDelete_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles btnDelete.Click

CMD = New MySqlCommand("Delete from Kamus where IDKamus=" & IDKamus & "", Kon)

RD = CMD.ExecuteReader RD.Close()

CMD.Dispose()

MsgBox("Data udah dihapus") Call Bersih()

Call Mati() Call ViewData()

btnSave.Enabled = False

btnDelete.Enabled = False

btnEdit.Enabled = False

btnAdd.Enabled = True

btnAdd.Focus() End Sub


(11)

Call ViewData()

btnSave.Enabled = False

btnDelete.Enabled = False

btnEdit.Enabled = False

btnAdd.Enabled = True

btnAdd.Focus() End Sub

End Class

frmUser.vb

Imports MySql.Data.MySqlClient

Imports System.Data

Public Class frmUser

Dim UserID As String

Dim Passwd As String

Private Sub frmUser_Load(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles MyBase.Load Call KoneKsi()

Call SettingGridview() Call Segar()

txtUserID.DataBindings.Clear() txtPasswd.DataBindings.Clear() cmdSave.Enabled = False

cmdDelete.Enabled = False

cmdEdit.Enabled = False

cmdAdd.Enabled = True

cmdAdd.Select() End Sub

Private Sub cmdClear_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs)

txtUserID.Text = "" txtPasswd.Text = "" cmdSave.Enabled = False

cmdDelete.Enabled = False

cmdEdit.Enabled = False

cmdAdd.Enabled = True

cmdAdd.Focus() End Sub

Private Sub cmdEdit_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles cmdEdit.Click

CMD = New MySqlCommand("Update User SET passwd='" & txtPasswd.Text & "' where UserID='" & txtUserID.Text & "'", Kon) RD = CMD.ExecuteReader

Call SettingGridview() Call Segar()

If RD.HasRows Then

MsgBox("Data udah diEdit") Else

txtPasswd.Select() End If


(12)

Private Sub cmdDelete_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles cmdDelete.Click cmdSave.Enabled = False

CMD = New MySqlCommand("Delete from User where UserID='" & txtUserID.Text & "'", Kon)

RD = CMD.ExecuteReader Call SettingGridview() Call Segar()

MsgBox("Data sudah dihapus") txtUserID.Text = ""

txtPasswd.Text = "" cmdSave.Enabled = False

cmdDelete.Enabled = False

cmdEdit.Enabled = False

cmdAdd.Enabled = True

cmdAdd.Focus() End Sub

Private Sub cmdQuit_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles cmdQuit.Click Me.Close()

End Sub

Sub SettingGridview() With dg

'jumlah kolom .ColumnCount = 2 .ReadOnly = True

.ColumnHeadersDefaultCellStyle.Font = New

System.Drawing.Font("Arial", 8, FontStyle.Bold) 'font untuk kolom header 'font untuk cell

.Font = New System.Drawing.Font("Arial", 8,

FontStyle.Regular)

'(setting apakah rowheader ditampilkan atau tidak, default=true)

.RowHeadersVisible = True

'semua baris akan terpilih jika salah satu cell pada baris tersebut dipilih()

.SelectionMode = DataGridViewSelectionMode.FullRowSelect '(setting apakah beberapa baris dapat dipilih atau hanya 1 baris, default=true)

.MultiSelect = True

'setting warna alternate

.AlternatingRowsDefaultCellStyle.BackColor =

Color.LightYellow

.Columns(0).Name = "UserID"

.Columns(0).DefaultCellStyle.Alignment =

DataGridViewContentAlignment.MiddleLeft 'rata kanan tengah untuk kolom 0 .Columns(0).Width = 80 'lebar kolom 0

.Columns(1).Name = "Passwd"

.Columns(1).DefaultCellStyle.Alignment =

DataGridViewContentAlignment.MiddleLeft 'rata kanan tengah untuk kolom 0 .Columns(1).Width = 80 'lebar kolom 0

End With

End Sub

Sub Segar()

CMD = New MySqlCommand("select * from User order by UserID asc", Kon)

RD = CMD.ExecuteReader dg.Rows.Clear()


(13)

baris(0) = RD(0) baris(1) = RD(1) dg.Rows.Add(baris) End While

RD.Close() End Sub

Private Sub cmdAdd_Click_1(ByVal sender As System.Object, ByVal e

As System.EventArgs) Handles cmdAdd.Click cmdAdd.Enabled = False

bolTambah = True

bolCari = False

txtUserID.Select() txtUserID.Focus() End Sub

Private Sub cmdSave_Click_1(ByVal sender As System.Object, ByVal e As

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 RD.Close()

CMD.Dispose()

Call SettingGridview() Call Segar()

MsgBox("Data sudah disimpan") txtUserID.Text = ""

txtPasswd.Text = "" cmdSave.Enabled = False

cmdDelete.Enabled = False

cmdEdit.Enabled = False

cmdAdd.Enabled = True

cmdAdd.Focus() 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

CMD = New MySqlCommand("select * from User where UserID='" & txtUserID.Text & "'", Kon)

RD = CMD.ExecuteReader If RD.HasRows Then

MsgBox("Data udah ada") Else txtPasswd.Select() End If RD.Close() CMD.Dispose() 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

If bolTambah = True Then

cmdSave.Enabled = True

cmdSave.Focus() End If


(14)

End If

End Sub

Private Sub cmdClear_Click_1(ByVal sender As System.Object, ByVal e

As System.EventArgs) Handles cmdClear.Click txtUserID.Text = ""

txtPasswd.Text = "" cmdAdd.Enabled = True

cmdDelete.Enabled = False

cmdSave.Enabled = False

cmdEdit.Enabled = False

End Sub

Private Sub dg_CellContentClick(ByVal sender As System.Object, ByVal

e As System.Windows.Forms.DataGridViewCellEventArgs) Handles

dg.CellContentClick

If dg.Columns(e.ColumnIndex).Name = "UserID" Then

UserID = dg.Rows(e.RowIndex).Cells("UserID").Value Passwd = dg.Rows(e.RowIndex).Cells("Passwd").Value txtUserID.Text = UserID

txtPasswd.Text = Passwd cmdEdit.Enabled = True

cmdDelete.Enabled = True

Else

txtPasswd.Text = "" txtUserID.Text = "" End If

End Sub

End Class

frmListKamus.vb

Imports MySql.Data.MySqlClient

Imports System.Data

Public Class frmListKamus

Dim huruf As String, Kata As String

Dim str(5) As String

Private Sub lbHuruf_Click(ByVal sender As Object, ByVal e As

System.EventArgs) Handles lbHuruf.Click txtDeskripsi.Text = ""

huruf = lbHuruf.SelectedItem Dim lvDaf As ListViewItem

With lvKata

.Columns.Clear()

.Columns.Add("Kata", 150, HorizontalAlignment.Left) .View = View.Details

.GridLines = True

.BorderStyle = BorderStyle.Fixed3D .AutoArrange = True

End With

If huruf <> "" Then


(15)

If RD.HasRows Then

Do While RD.Read

str(0) = RD.Item("Kata") lvDaf = New ListViewItem(str) lvKata.Items.Add(lvDaf)

Loop

Else

lvKata.Items.Clear() End If

RD.Close() CMD.Dispose() Else

MsgBox("Pilih huruf") End If

End Sub

Private Sub frmListKamus_Load(ByVal sender As System.Object, ByVal e

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

CMD = New MySqlCommand("select * from Kamus where Kata='" & Kata & "'", Kon)

RD = CMD.ExecuteReader() If RD.Read Then

txtDeskripsi.Text = RD.Item("Deskripsi") Else

txtDeskripsi.Text = "" End If

RD.Close() CMD.Dispose() End Sub

Private Sub lvKata_SelectedIndexChanged(ByVal sender As

System.Object, ByVal e As System.EventArgs) Handles

lvKata.SelectedIndexChanged End Sub


(16)

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


(17)

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.


(18)

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), bahan (material), metode dan media / alat yang terlibat (mesin). Setiap detail

Manusia Metode

Mesin Material

Masih melakukan pencarian kata pada kamus hukum secara manual

Belum ada metode

yang digunakan Bagaimana algoritma Galil-Seiferas dan algoritma Not So Naϊve melakukan pencarian kata pada kamus hukum Belum ada aplikasi

membandingkan cara kerja Algoritma Galil-Seiferas dan Not So Naϊve

Masih menggunakan kamus manual


(19)

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

Sistem yang akan dibangun harus sederhana dan mudah di pelajari oleh pengguna (user).


(20)

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.

Diagram menunjukkan interaksi antara pengguna dan entitas eksternal lainnya dengan sistem yang sedang dikembangkan. Lebih jelasnya use case diagram digunakan untuk menggambarkan interaksi antara user dengan sistem. Pada sistem ini user menginputkan data kamus serta melakukan pencarian kata pada kamus hukum.


(21)

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

Menambah data kata kamus «Includes»


(22)

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 sampai aktivitas berhenti. Sedangkan use case menggambarkan bagaimana aktor menggunakan sistem untuk melakukan aktivitas. Aktivitas sistem pencarian string kata dengan algoritma Galil-Seiferas dan algoritma Not So Naϊve ini didokumentasikan kedalam activity diagram seperti gambar 3.3 berikut.


(23)

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


(24)

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

Sequence diagram merupakan interaksi antara aktor-aktor yang terdapat dalam suatu sistem, dan terjadi komunikasi yang berupa pesan. Pada Gambar 3.4 berikut dijelaskan sequence diagram sistem pencarian kata.


(25)

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


(26)

Flowchart algoritma Galil-Seiferas adalah alur proses yang terjadi dalam pencarian kata seperti pada Gambar 3.5.

Start

m = length (x) n = length (y)

p <= n-m ?

x[s+q] == y[p+s+q]

?

++q

q==m-s && x[0..p] ==

y[p..s+1] ?

stop

q == p1 + q1

?

p += p1 q -= p1

p += q / k+1 q = 0 Input

x = string yang dicari y = tempat pencarian

tidak

Ya ++p

Ya

tidak tidak

Ya

Output p

Ya tidak


(27)

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


(28)

Start

m = length (x) n = length (y)

Input x = string yang dicari y = tempat pencarian

x[s+q2] == x[s+p2+q2]

&& P2+q2<k*p2

?

++q2

p2 + q2 >= k*p2

?

Ya

tidak

Ya s + p2 + q2

== m ?

p2 += q2 / k+1 q2 = 0

stop

tidak tidak

Ya

q2== p1+q1 ?

p2+=p1 q2-=p1

Ya

tidak ++p2

parse() search()

newP2


(29)

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


(30)

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

Flowchart algoritma Not So Naϊve adalah alur proses yang terjadi dalam pencarian kata seperti pada Gambar 3.9.


(31)

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


(32)

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


(33)

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:,-

3 Banding Berdasarkan Kamus 1:,- (ind) 1)persamaan; tara; imbangan; 2)pertimbangan atau pemeriksaan ulang


(34)

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


(35)

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


(36)

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 Kamus berfungsi untuk menampilkan daftar kamus yang dapat digunakan user. Help berfungsi untuk menampilkan informasi bantuan, About berfungsi untuk menampilkan keterangan seputar aplikasi yang dibangun dan Quit berfungsi untuk keluar dari sistem. Rancangan menu utama terlihat seperti pada Gambar 3.12.


(37)

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

6 List Kamus


(38)

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 6


(39)

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


(40)

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


(41)

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

13 ListView Untuk menampilkan Data Kamus Kata xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxx DATA KAMUS Xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Dekripsi xxx ID Kamus

Clear Quit

Add Save Edit Delete

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xx

4

5 6

7 8 9 10 11 12

13 1

2 3


(42)

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

11 ListView Untuk Data User yang sudah masuk UserID xxxxxxxxx

Clear

DATA USER

Xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

xxxxxxxxxxx

Quit

Add Password

Save Edit Delete

3 4 1

2

5 6 7 8 9 10


(43)

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

Pattern

Hasil Not So Naive x

xx

Jumlah ditemukan Waktu Proses

Proses Cancel Quit

0:0:0:0 2 4 10 12 0:0:0:0 1 3 11

17 18 19

xxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxx x xx 5 6 Hasil Galil-Seiferas xxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxx

7 8

9

Waktu Proses 0:0:0:0 13

14

Jumlah ditemukan 0:0:0:0 15


(44)

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


(45)

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


(46)

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 Tabel 4.1 tahap inisialisasi pada algoritma Galil-Seiferas mengubah indeks 0 menjadi “i”, indeks 1 menjadi “s”, indeks 2 menjadi “a”. Pada algoritma Galil-Seiferas fase pencarian dimulai dari indeks pertama yaitu 0 = i diikuti dengan indeks kedua yaitu 1 = s. Setelah indeks pertama dan indeks kedua ditemukan kecocokan maka algoritma Galil-Seiferas akan mencari indeks terakhir yaitu indeks


(47)

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


(48)

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


(49)

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 . . . I S A Karena cocok diberikan nilai Ell = 2


(50)

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

Implementasi menu utama merupakan halaman yang akan muncul pada saat sistem pertama dijalankan. Sistem dibangun mempunyai tampilan antarmuka (interface) yaitu antarmuka menu Otoritas, List Kamus, Help, About dan Quit. Halaman menu utama dapat dilihat seperti pada Gambar 4.1.


(51)

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.


(52)

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

Implementasi menu pencarian merupakan halaman yang berfungsi untuk melakukan pencarian string dengan algoritma Galil Seiferas dan Not So Naϊve. Halaman menu pencarian dapat dilihat seperti pada Gambar 4.4.


(53)

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.


(54)

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

Implementasi menu list kamus merupakan halaman yang berfungsi untuk melakukan pencarian kata atau istilah hukum. Halaman menu list kamus dapat dilihat seperti pada Gambar 4.7.


(55)

Gambar 4.7 Implementasi Menu List Kamus

4.1.5.7Implementasi About

Implementasi about berisi tentang keterangan tentang sistem yang dibangun. Halaman about dapat dilihat seperti pada Gambar 4.8.


(56)

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 ngan


(57)

aan Match

per Mis

match


(58)

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


(59)

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

Diperlihatkan grafik untuk hasil dari waktu proses pencarian kata pada Gambar 4.9 menggambarkan sumbu x merupakan sumbu yang memperlihatkan kata yang ingin dicari seperti „aan‟, „per‟, sedangkan sumbu y memperlihatkan jumlah waktu yang dihasilkan dalam proses pencarian (dalam satuan waktu ms). Dari grafik didapat bahwa algoritma Galil-Seiferas mendapatkan hasil running time yang relatif rendah dibandingkan dengan algoritma Not So Naϊve. Artinya bahwa algoritma Galil-Seiferas


(60)

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

Dari grafik pada Gambar 4.10 dapat dilihat sumbu x merupakan total dan rata-rata waktu proses dari algoritma Galil-Seiferas dan algoritma Not So Naϊve, sedangkan sumbu y merupakan waktu yang dihasilkan dalam proses pencarian (dalam satuan waktu ms). Dari grafik dijelaskan bahwa algoritma Galil-Seiferas memiliki nilai


(61)

rata-algoritma Galil-Seiferas lebih cepat untuk pencocokan kata dibandingkan dengan algoritma Not So Naϊve.


(62)

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)


(63)

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.

Pada algoritma Galil-Seiferas nilai m = 5 dikarenakan adanya perbandingan karakter dalam kasus yang besar dalam fase ini. Fase pre-proses memiliki T(n) = Ɵ(m) dan fase pencarian memiliki T(n) = Ɵ(n). Maka kompleksitas Algoritma Galil-Seiferas adalah Ɵ(n).


(64)

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)


(65)

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 karakter pada teks (string). Jumlahkan hasil dari perkalian C.# lalu kemudian ambil pangkat terbesar dari nilai masukan (#) dan akan di dapatkan pangkat terbesar yaitu m x n. Maka kompleksitas waktu algoritma Not So Naϊve adalah Ɵ(m x n). Hal ini sesuai dengan kompleksitas waktu yang dihitung oleh Charras (dalam bukunya yang berjudul Handbook of Exact String Matching tahun 1997) yaitu ϴ(m x n).


(66)

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

4. Hasil waktu proses dengan algoritma Galil-Seiferas lebih cepat dengan hasil rata-rata 2,087 ms dibanding algoritma Not So Naϊve 2,456 ms.


(67)

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.

2. Aplikasi yang sudah dirancang sebaiknya dapat memberikan tampilan interface yang lebih baik lagi dan menarik.


(68)

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.


(1)

DAFTAR ISI

halaman

Persetujuan i

Pernyataan ii

Penghargaan iii

Abstrak v

Abstract vi

Daftar Isi vii

Daftar Tabel x

Daftar Gambar xi

BAB 1 PENDAHULUAN

1.1 Latar Belakang 1

1.2 Rumusan Masalah 3

1.3 Batasan Masalah 3

1.4 Tujuan 3

1.5 Manfaat Penelitian 3

1.6 Metode Penelitian 4

1.7 Sistematika Penulisan 5

BAB 2 LANDASAN TEORI

2.1 Algoritma 6

2.2 Algoritma Pencocokan String 7

2.3 Algoritma Galil-Seiferas 9

2.4 Algoritma Not So Naϊve 14

2.5 Kompleksitas Algoritma 17

2.5.1. Big Ο (Ο) 18

2.5.2. Big Omega ( ) 18

2.5.3. Big Theta (ϴ) 18

2.6 Kamus 18

2.7 Hukum 19

BAB 3 ANALISIS DAN PERANCANGAN 3.1 Analisis 21

3.1.1 Analisis Kebutuhan 22

3.1.1.1 Analilis Fungsional 22 3.1.1.2 Analisis Non-Fungsional 22


(2)

3.1.2.2 Activity Diagram 25

3.1.2.3 Sequence Diagram 27

3.1.3 Flowchart Algoritma Galil-Seiferas 29 3.1.4 Flowchart Algoritma Not So Naϊve 33

3.1.5 Flowchart Sistem 35

3.1.6 Analisis Data 36

3.2 Perancangan 37

3.2.1 Perancangan Database 37

3.2.1.1 Struktur Tabel 38

3.2.1.2 Relasi Antar Tabel 39

3.2.2 Perancangan Antar Muka 39

3.2.2.1 Perancangan Menu Utama 39 3.2.2.2 Perancangan Menu List Kamus 41 3.2.2.3 Perancangan Menu Otoritas 42

3.2.2.4 Perancangan Login 43

3.2.2.5 Perancangan Data Kamus 44 3.2.2.6 Perancangan Data User 45 3.2.2.7 Perancangan Pencarian 46

3.2.2.8 Perancangan About 48

BAB 4 IMPLEMENTASI DAN PENGUJIAN

4.1 Implementasi 49

4.1.1 Implementasi Pencarian Kata dengan Algoritma

Galil-Seiferas 49

4.1.2 Implementasi Pencarian Kata dengan Algoritma

Not So Naϊve 51

4.1.3 Spesifikasi Perangkat Keras 53 4.1.4 Spesifikasi Perangkat Lunak 53 4.1.5 Implementasi Menu Utama 53 4.1.5.1 Implementasi Data Login 54 4.1.5.2 Implementasi Menu Otoritas 55 4.1.5.3 Implementasi Menu Pencarian 55 4.1.5.4 Implementasi Data Hukum 56 4.1.5.5 Implementasi Data User 57 4.1.5.6 Implementasi Menu List Kamus 57

4.1.5.7 Implementasi About 58

4.2 Pengujian 59

4.2.1 Kata Algoritma Galil-Seiferas dan Algoritma

Not So Naϊve 59

4.3 Kompleksitas Algoritma Galil-Seiferas 65 4.4 Kompleksitas Algoritma Not So Naϊve 67


(3)

BAB 5 KESIMPULAN DAN SARAN

5.1 Kesimpulan 65

5.2 Saran 66

DAFTAR PUSTAKA LAMPIRAN


(4)

DAFTAR TABEL

halaman

Tabel 3.1 Dokumentasi Naratif Use Case 25

Tabel 3.2 Keterangan Bagian-bagian Rancangan Form Pencarian 27

Tabel 3.3 Sampel Data Kamus 36

Tabel 3.4 Tabel User 38

Tabel 3.5 Tabel Kamus 38

Tabel 3.6 Keterangan Bagian-bagian Rancangan Menu Utama 40 Tabel 3.7 Keterangan Bagian-bagian Rancangan menu List Kamus 41 Tabel 3.8 Keterangan Bagian-bagian Rancangan Menu Otoritas 42 Tabel 3.9 Keterangan Bagian-bagian Rancangan Data Login 43 Tabel 3.10 Keterangan Bagian-bagian Rancangan Data Kamus 44 Tabel 3.11 Keterangan Bagian-bagian Rancangan Data User 45 Tabel 3.12 Keterangan Bagian-bagian Rancangan Pencarian 46 Tabel 3.13 Keterangan Bagian-bagian Perancangan About 48 Tabel 4.1 Inisialisasi Algoritma Galil-Seiferas 49

Tabel 4.2 Contoh Kata dalam Pengujian 60

Tabel 4.3 Analisis Hasil dan Waktu Proses Algoritma Galil-Seiferas

dan Algoritma Not So Naϊve 62

Tabel 4.4 Kompleksitas Algoritma Galil-Seiferas Waktu Big-ϴ(n) 65 Tabel 4.5 Kompleksitas Algoritma Not So Naϊve Waktu Big-ϴ(m x n) 67


(5)

DAFTAR GAMBAR

halaman

Gambar 2.1 Mekanisme Sliding Windows 8

Gambar 2.2 Pencocokan dari Karakter Paling kiri ke Paling Kanan Pattern 8 Gambar 2.3 Pencocokan dari Karakter Paling Kanan ke Paling Kiri Pattern 8 Gambar 2.4 Pencocokan Pattern y2 Dimulai dari Karakter Paling Kiri 9

Gambar 2.5 Pencocokan Pattern y1 Dimulai dari Karakter Paling Kanan 9

Gambar 2.6 Faktorisasi Sempurna x 10

Gambar 2.7 Fase Pencarian dengan Algoritma Galil-Seiferas 14 Gambar 2.8 Fase Pencarian dengan Algoritma Not So Naive 16

Gambar 3.1 Diagram Ishikawa 21

Gambar 3.2 Use Case Diagram 24

Gambar 3.3 Activity Diagram 26

Gambar 3.4 Sequence Diagram Sistem 28

Gambar 3.5 Flowchart void search Algoritma Galil-Seiferas 29 Gambar 3.6 Flowchart void parse Algoritma Galil-Seiferas 30 Gambar 3.7 Flowchart newP2 Algoritma Galil-Seiferas 31

Gambar 3.8 Flowchart void newP1 Algoritma Galil-Seiferas 32

Gambar 3.9 Flowchart Algoritma Not So Naive 34

Gambar 3.10 Flowchart Sistem 35

Gambar 3.11 Relasi Antar Tabel 39

Gambar 3.12 Rancangan Menu Utama 40

Gambar 3.13 Rancangan Menu List Kamus 41

Gambar 3.14 Rancangan Menu Otoritas 42

Gambar 3.15 Rancangan Data Login 43

Gambar 3.16 Rancangan Data Kamus 44

Gambar 3.17 Rancangan Data User 45

Gambar 3.18 Rancangan Pencarian 46

Gambar 3.19 Rancangan About 48

Gambar 4.1 Implementasi Menu Utama 54


(6)

Gambar 4.4 Implementasi Menu Pencarian 56

Gambar 4.5 Implementasi Data Kamus 56

Gambar 4.6 Implementasi Data User 57

Gambar 4.7 Implementasi Menu List Kamus 58

Gambar 4.8 Implementasi About 59

Gambar 4.9 Grafik Hasil Waktu Proses Algoritma Galil-Seiferas dan

Algoritma Not So Naϊve 63

Gambar 4.10 Grafik Total dan Rata-rata Waktu Proses Algoritma