Saran Kompleksitas Algoritma ANALISIS DAN PERANCANGAN

5. Skip Search, Algoritma ini membuat tabel dari teks yang akan dibandingkan dan menyesuaikannya dengan kata yang dicari. Proses ini cukup memakan waktu, ditambah dengan jika kata yang dicari pendek, maka pergeseran yang bisa dilakukan Algoritma Skip Search juga pendek. Kelebihan Algoritma Skip Search adalah unggul dalam pencarian kata yang panjang atau pencarian kalimat. Ini dikarenakan makin panjang kata yang dicari, maka pergeseran yang dilakukan Algoritma Skip Search juga panjang. 6. Hasil Kompleksitas Algoritma Not So Naive adalah Tn = Omn. Sedangkan Hasil Kompleksitas Algoritma Skip Search juga Tn = Omn.

5.2 Saran

Adapun saran-saran yang diperlukan untuk penelitian maupun pengembangan berikutnya adalah: 1. Sistem ini sebaiknya ditambah menu pengolahan data seperti penambahan data,edit data dan hapus data agar data dalam kamus semakin banyak untuk pencarian kata pada kamus. 2. Untuk pengembangan selanjutnya, diharapkan aplikasi ini menyediakan menu pilihan algoritma pencarian string yang baru ditemukan agar terlihat perbedaan pada pencarian string antara Algoritma yang lama dengan Algoritma yang sudah mengalami proses perkembangan. Universitas Sumatera Utara BAB 2 LANDASAN TEORI

2.1. Algoritma

Algoritma adalah urutan langkah-langkah penyelesaian masalah yang disusun secara matematis dan logis. Tanpa kita sadari, kebanyakan dari kegiatan yang kita lakukan setiap harinya selalu berlandaskan algoritma. Dalam beberapa konteks, algoritma adalah spesifikasi urutan langkah untuk melakukan pekerjaan tertentu. Pertimbangan dalam pemilihan algoritma adalah, pertama, algoritma haruslah benar. Artinya algoritma akan memberikan keluaran yang dikehendaki dari sejumlah masukan yang diberikan. Tidak peduli sebagus apapun algoritma, kalau memberikan keluaran yang salah, pastilah algoritma tersebut bukanlah algoritma yang baik. Zarlis Handrizal, 2008.

2.1.1 Algoritma String Matching pencocokan string

Pengertian string menurut Dictionary of Algorithms and Data Structures, National Institute of Standards and Technology NIST adalah susunan dari karakter-karakterangka,alfabet atau karakter yang lain dan biasanya direpresentasikan sebagai struktur dan array. Pencocokan string string matching menurut Dictionary of Algorithms and Data Structures, National Institute of Standards and Technology NIST, diartikan sebagai sebuah permasalahan untuk menemukan pola susunan karakter string di dalam string lain atau bagian dari isi teks. String Matching merupakan subjek yang sangat penting di dalam domain yang sangat luas dalam pengolahan teks. Charras Lecroq. 2004 Universitas Sumatera Utara Pencocokan string string matching secara garis besar dapat dibedakan menjadi dua yaitu : 1 Exact string matching, merupakan pencocokan 2 string secara tepat dengan susunan karakter dalam string yang dicocokkan memiliki jumlah maupun urutan karakter dalam string yang sama. Contoh : kata step akan menunjukkan kecocokan hanya dengan kata step. 2 Inexact string matching atau Fuzzy string matching, merupakan pencocokan string secara samar, maksudnya pencocokan string dimana string yang dicocokkan memiliki kemiripan dimana keduanya memiliki susunan karakter yang berbeda mungkin jumlah atau urutannya tetapi string-string tersebut memiliki kemiripan baik kemiripan tekstualpenulisan approximate string matching atau kemiripan ucapan phonetic string matching. Inexact string matching masih dapat dibagi lagi menjadi dua yaitu : a. Pencocokan string berdasarkan kemiripan penulisan approximate string matching merupakan pencocokan string dengan dasar kemiripan dari segi penulisannya jumlah karakter, susunan karakter dalam dokumen. Tingkat kemiripan ditentukan dengan jauh tidaknya beda penulisan dua buah string yang dibandingkan tersebut dan nilai tingkat kemiripan ini ditentukan oleh pemrogram programmer. Contoh : c mpuler dengan compiler, memiliki jumlah karakter yang sama tetapi ada dua karakter yang berbeda. Jika perbedaan dua karakter ini dapat ditoleransi sebagai sebuah kesalahan penulisan maka dua string tersebut dikatakan cocok. b. Pencocokan string berdasarkan kemiripan ucapan phonetic string matching merupakan pencocokan string dengan dasar kemiripan dari segi pengucapannya meskipun ada perbedaan penulisan dua string yang dibandingkan tersebut. Contoh step dengan steb dari tulisan berbeda tetapi dalam pengucapannya mirip sehingga dua string tersebut dianggap cocok. Contoh yang lain adalah step, dengan steppe, sttep, stepp, stepe. Syaroni Munir. 2005 Universitas Sumatera Utara

2.1.1.1 Algoritma Not So Naive

Algoritma Not So Naive pertama kali dipublikasikan oleh Christophe Hancart tahun 1992. Algoritma Not So Naive merupakan variasi turunan dari algoritma Naive atau yang sering disebut algoritma Brute Force. Cara kerja algoritma ini adalah dengan memiliki fase pencarian mengecek teks dan pola dari kiri ke kanan. Lalu, algoritma Not So Naive akan mengidentifikasi terlebih dahulu dua kasus yang dimana di setiap akhir fase pencocokan pergeseran dapat dilakukan sebanyak 2 posisi ke kanan, tidak seperti algoritma Naive yang dimana pergeseran tetaplah sebanyak 1 posisi ke kanan. Kita asumsikan bahwa P[0] ≠ P[1]. Jika P[0] = T[s] dan P[1] = T[s+1], maka di akhir fase pencocokan pergeseran s bisa dilakukan sebanyak 2 posisi, karena P[0] ≠ P[1] = T[s+1]. Dan jika P[0] = P[1]. Jika P[0] = T[s] tapi P[1] ≠ T[s+1], maka sekali lagi pergesaran s dapat dilakukan sebanyak 2 posisi Cantone Faro, 2004 dimana P adalah Pattern, T adalah Teks dan s adalah nilai posisi.

2.1.1.1.1 Pencarian Algoritma Not So Naive

Saat fase pencarian dari Algoritma Not So Naive perbandingan karakter dilakukan dengan posisi pola mengikuti urutan 1, 2, ..., m-2, m-1, 0 dimana m adalah panjang pattern. Di setiap percobaan dimana “jendela” diposisikan di teks faktor y[i..j + m-1]. Jika x[0] = x[1] dan x[1] ≠ y[j+1] atau jika x[0] ≠ x[1] dan x[1] = y[j+1] polanya akan digeser sebanyak 2 posisi di setiap akhir percobaan dan sebanyak 1 posisi jika kondisi di atas tidak terpenuhi Alapati Mannava, 2011 dimana y adalah teks dan x adalah pattern. Berikut diberikan contoh untuk menunjukkan proses pencarian Algoritma Not So Naive dengan pola WIJA yang akan dicari pada teks RICKYWIJAYA. Dimana karakter urutan 0 dan karakter urutan 1 pada pattern tidak mengalami kesamaan x[0] = x[1] maka nilai variabel k akan diinisialisasi dengan nilai 1 dan nilai variabel ell akan diinisialisasi dengan nilai 2 dimana kedua variabel tersebut akan digunakan untuk nilai pergeseran pada proses pencocokan. Universitas Sumatera Utara Tabel 2.1 Proses Pencocokan Algoritma Not So Naive di Percobaan Pertama Pada Tabel 2.1, perbandingan karakter pertama x[1] == y[j+1] mengalami kecocokan namun di perbandingan kedua mengalami ketidakcocokan, karena saat perbandingan pertama telah terjadi kecocokan, namun di urutan selanjutnya tidak terjadi kecocokan maka posisi pola akan digeser sebanyak 2 posisi sesuai dengan nilai variabel ell. Tabel 2.2 Proses Pencocokan Algoritma Not So Naive di Percobaan Kedua Pada Tabel 2.2, perbandingan karakter pertama x[1] = y[j+1] sudah mengalami ketidakcocokan. Maka akan dilakukan percobaan selanjutnya dengan posisi pola digeser sebanyak 1 posisi sesuai dengan nilai variabel k. Tabel 2.3 Proses Pencocokan Algoritma Not So Naive di Percobaan Ketiga Pada Tabel 2.3, perbandingan karakter pertama x[1] = y[j+1] masih mengalami ketidakcocokan. Maka akan dilakukan percobaan selanjutnya dengan posisi pola digeser sebanyak 1 posisi sesuai dengan nilai variabel k. Tabel 2.4 Proses Pencocokan Algoritma Not So Naive di Percobaan Keempat I 1 2 3 4 5 6 7 8 9 10 Teks R I C K Y W I J A Y A Pola W I J A II 1 2 3 4 5 6 7 8 9 10 Teks R I C K Y W I J A Y A Pola W I J A III 1 2 3 4 5 6 7 8 9 10 Teks R I C K Y W I J A Y A Pola W I J A IV 1 2 3 4 5 6 7 8 9 10 Teks R I C K Y W I J A Y A Pola W I J A Universitas Sumatera Utara Pada Tabel 2.4, perbandingan karakter pertama x[1] = y[j+1] masih mengalami ketidakcocokan. Maka akan dilakukan percobaan selanjutnya dengan posisi pola digeser sebanyak 1 posisi sesuai dengan nilai variabel k. Tabel 2.5 Proses Pencocokan Algoritma Not So Naive di Percobaan Kelima Pada Tabel 2.5, perbandingan karakter mengalami kecocokan x[1] == y[j+1] dimulai dari perbandingan karakter W, I, J, dan A semua mengalami kecocokan, oleh sebab itu teks akan dikeluarkan. Namun, algoritma Not So Naive tidak berhenti sampai disini. Algoritma Not So Naive akan melakukan percobaan terus sampai sisa teks lebih kecil daripada pola. Untuk percoabaan selanjutnya, posisi pola akan digeser sebanyak 2 posisi sesuai dengan nilai variabel ell. Tabel 2.6 Proses Pencocokan algoritma Not So Naive di Percobaan Keenam Pada Tabel 2.6, perbandingan karakter pertama mengalami ketidakcocokan x[1] = y[j+1]. Maka akan dilakukan percobaan selanjutnya dengan posisi pola digeser sebanyak 1 posisi sesuai dengan nilai variabel k. Namun dikarenakan sisa teks telah lebih kecil daripada pola maka fase pencarian berhenti disini.

2.1.1.2 Algoritma Skip Search

Algoritma Skip Search merupakan salah satu algoritma pencocokan string, yang dipublikasikan secara luas oleh Charas, C et al., 1998. Cara kerja algoritma Skip Search seperti algoritma Knuth Morris Pratt dengan mendeteksi jendela dari karakter yang ada dari kiri ke kanan dan menyimpannya ke dalam sebuah wadah untuk menentukan titik awal dari jendela karakter tersebut Charas et al., Naser et al., 2012, 1998. V 1 2 3 4 5 6 7 8 9 10 Teks R I C K Y W I J A Y A Pola W I J A VI 1 2 3 4 5 6 7 8 9 10 Teks R I C K Y W I J A Y A Pola W I J A Universitas Sumatera Utara Jadi, terdapat suatu pola yang ingin kita cari dan kita inisialkan x dan memiliki panjang yang kita inisialkan dengan m. Teks yang ingin kita cari kita inisialkan y dan memiliki panjang yang kita inisialkan dengan n. Untuk setiap simbol alfabet, sebuah wadah akan menyimpan semua posisi simbol dari x. Saat sebuah simbol berulang sebanyak k di dalam teks, maka akan ada sebanyak k posisi yang sesuai dalam wadah simbol. Saat pola lebih pendek daripada alfabet yang ada dalam teks, maka akan ada banyak tempat kosong dalam wadah. Dalam perulangan utama dari fase pencarian terdapat proses memeriksa setiap teks simbol ke m, Yj yang nantinya iterasi utama nm. Untuk Yj, menggunakan setiap posisi yang ada di wadah z[Yj] untuk mendapatkan titik awal yang memungkinkan p dari x di dalam y. Lalu dilakukan proses perbandingan x dengan y dari posisi p, simbol dengan simbol, sampai terjadi ketidakcocokan atau seluruhnya cocok Charras et al., 1998. Algoritma Skip Search memiliki efisiensi dalam mencari huruf kecil dalam pola yang panjang Naser et al., 2012.

2.1.1.2.1 Fase Preprocessing Algoritma Skip Search

Tahap preprocessing Algoritma Skip Search terdiri dari tahap komputasi wadah untuk menampung seluruh karakter alfabet untuk c ∈ ∑ z[c] = { i; 0 ≤ i ≤ m-1 and x[i] = c}. Ruang dan waktu kompleksitas dari fase preprocessing adalah O m+ Charras Lecroq, 2004. Berikut diberikan contoh pada Tabel 2.7 untuk menunjukkan proses pencarian Algoritma Skip Search dengan pola WIJA yang akan dicari pada teks RICKYWIJAYA. Tabel 2.7 Tabel Teks dan Pola yang akan Dijadikan Contoh Kasus Maka hasil dari fase preprocessing Algoritma Skip Search dapat dilihat di Tabel 2.8 1 2 3 4 5 6 7 8 9 10 Teks R I C K Y W I J A Y A Pola W I J A Universitas Sumatera Utara Tabel 2.8 Tabel Hasil preprocessing dari Algoritma Skip Search

2.1.1.2.2 Fase Pencarian Algoritma Skip Search

Dalam Fase Pencarian, algoritma Skip Search menggunakan aturan The Two Window Rule untuk menentukan batas sampai mana pola boleh digeser. Panjang batas The Two Window Rule menggunakan rumus 2m-1 dimana m adalah panjang dari pola Bhandari Kumar, 2013. Lalu panjang dari hasil aturan The Two Window Rule akan bernilai ganjil dan karakter yang terdapat di tengah panjang teks tersebutlah yang akan dilakukan proses pencocokan. Gambar 2.1 Penentuan Panjang window dan Karakter Tengah yang akan Digunakan dalam Proses Pencocokan 1 Dari Gambar 2.1 didapatkan batas panjang untuk pola digeser adalah dari urutan 0 huruf R sampai urutan 6 huruf I dan karakter yang akan digunakan dalam proses pencocokan adalah karakter K. Namun, berdasarkan tabel 8 karakter K c z[c] A 3 C ∅ I 1 J 2 K ∅ R ∅ W Y ∅ Universitas Sumatera Utara bernilai nol tidak ada dalam pola maka percobaan akan dilanjutkan dengan posisi jendela digeser sebanyak 4 posisi sesuai dengan panjang pola m. Gambar 2.2 Penentuan Panjang window dan Karakter Tengah yang akan Digunakan dalam Proses Pencocokan 2 Dari Gambar 2.2 didapatkan batas panjang untuk pola digeser adalah dari urutan 4 huruf W sampai urutan 10 huruf A dan karakter yang akan digunakan dalam proses pencocokan adalah karakter J. Berdasarkan tabel 8 karakter J terdapat di posisi 2 dalam pola, oleh karena itu pola akan langsung diposisikan menurut posisi J, dan dilakukan proses pencocokan dari urutan 5, 6, 7 dan 8. Dalam pencocokan 2 ini, pola yang berisi karakter W, I, J, dan A mengalami kecocokan maka teks akan ditampilkan. Dan fase pencarian berhenti sampai disini. Ini dikarenakan saat pola digeser sebanyak 4 posisi, panjang teks untuk dibandingkan hanya bersisa 3 dimana panjang pola lebih banyak daripada panjang teks yang akan dicocokan.

2.2. Kompleksitas Algoritma

Kebenaran suatu algoritma harus diuji dengan jumlah masukan tertentu untuk melihat kinerja algoritma berupa waktu yang diperlukan untuk menjalankan algoritmanya dan ruang memori yang diperlukan untuk struktur datanya. Algoritma yang bagus adalah algoritma yang mangkus efisien. Kemangkusan algoritma diukur dari jumlah waktu dan ruang memori yang dibutuhkan untuk menjalankan algoritma tersebut. Ada dua macam kompleksitas algoritma, yaitu kompleksitas waktu dan kompleksitas ruang. Kompleksitas waktu dari algoritma adalah mengukur jumlah perhitungan komputasi yang dikerjakan oleh komputer ketika menyelesaikan Universitas Sumatera Utara suatu masalah dengan menggunakan algoritma. Ukuran yang dimaksud mengacu ke jumlah langkah-langkah perhitungan dan waktu tempuh pemrosesan. Kompleksitas waktu merupakan hal penting untuk mengukur efisiensi suatu algoritma. Kompleksitas waktu dari suatu algoritma yang terukur sebagai suatu fungsi ukuran masalah. Kompleksitas waktu dari algoritma berisi ekspresi bilangan dan jumlah langkah yang dibutuhkan sebagai fungsi dari ukuran permasalahan. Kompleksitas ruang berkaitan dengan sistem memori yang dibutuhkan dalam eksekusi program. Untuk mengukur kebutuhan waktu sebuah algoritma yaitu dengan mengeksekusi langsung algoritma tersebut pada sebuah komputer, lalu dihitung berapa lama durasi waktu yang dibutuhkan untuk menyelesaikan sebuah persoalan dengan n yang berbeda-beda. Kemudian dibandingkan hasil komputasi algoritma tersebut dengan notasi kompleksitas waktunya untuk mengetahui efisiensi algoritmanya Nugraha, D.W. 2012. Kompleksitas algoritma diukur berdasarkan kinerjanya dengan menghitung waktu eksekusi suatu algoritma. Menurut Cormen et al. 2009 waktu eksekusi algoritma dapat diklasifikasikan menjadi tiga kelompok besar, yaitu best-case kasus terbaik, average-case kasus rata-rata dan worst-case kasus terjelek. Pada pemrograman yang dimaksud dengan kasus terbaik, kasus terjelek dan kasus rata-rata suatu algoritma adalah besar kecilnya atau banyak sedikitnya sumber-sumber yang digunakan oleh suatu algoritma. Makin sedikit makin baik, makin banyak makin jelek Subandijo. 2011.

2.3. Kamus