• Tidak ada hasil yang ditemukan

BAB 2 LANDASAN TEORI

N/A
N/A
Protected

Academic year: 2021

Membagikan "BAB 2 LANDASAN TEORI"

Copied!
9
0
0

Teks penuh

(1)

LANDASAN TEORI

2.1 Algoritma

Kata algoritma diambil dari nama ilmuwan muslim dari Uzbekistan Abu Ja’far Muhammad bin Musa Al-Khuwārizmi (780-846M), sebagaimana tercantum pada terjemahan karyanya dalam bahasa latin dari abad ke-12 "Algorithmi de numero Indorum". Pada awalnya kata algorisma adalah istilah yang merujuk kepada aturan-aturan aritmetis untuk menyelesaikan persoalan dengan menggunakan bilangan numerik arab (sebenarnya dari India, seperti tertulis pada judul di atas). Pada abad ke-18, istilah ini berkembang menjadi algoritma, yang mencakup semua prosedur atau urutan langkah yang jelas dan diperlukan untuk menyelesaikan suatu permasalahan. Pemecahan sebuah masalah pada hakekatnya adalah menemukan langkah-langkah tertentu yang jika dijalankan efeknya akan memecahkan masalah tersebut (Wahid, 2004, hal:1).

Algoritma adalah urutan langkah-langkah yang dinyatakan dengan jelas dan tidak rancu untuk memecahkan suatu masalah (jika ada pemecahannya) dalam rentang waktu tertentu. Artinya, setiap langkah harus dapat dikerjakan dan mempunyai efek tertentu (Wahid, 2004, hal:2). Arti yang modern untuk algoritma agak mirip kepada kata resep, proses, metode, teknik, prosedur, rutin, kecuali bahwa kata “algoritma” itu sendiri memiliki arti sesuatu yang sedikit berbeda (Knuth, 1973, hal:4).

Ada 5 komponen utama dalam algoritma yaitu finiteness, definiteness, input, outputdan effectiveness(Knuth, 1973, hal:4) :

1. Finiteness.

(2)

2. Definiteness.

Setiap langkah dari sebuah algoritma harus didefinisikan secara tepat, tindakan yang di muat harus dengan teliti dan sudah jelas ditentukan untuk setiap keadaan. 3. Input.

Sebuah algoritma memiliki nol atau lebih masukan, sebagai contoh, banyaknya masukan diberikan di awal sebelum algoritma mulai.

4. Output.

Sebuah algoritma memiliki satu atau lebih keluaran, sebagai contoh, banyaknya keluaran memiliki sebuah hubungan yang ditentukan terhadap masukan.

5. Effectiveness.

Pada umumnya sebuah algoritma juga diharapkan untuk efektif. 2.1.1 AlgoritmaBacktracking

Salah satu algoritma yang dapat dipakai untuk mempermudah pencarian anagram suatu kata adalah algoritma backtracking. Selain algoritma bactracking, pembuatan anagram juga membutuhkan algoritma string matching yang tepat, karena kata-kata dalam sebuah anagram harus memiliki makna, dalam hal ini algoritma string matching yang tepat dapat membantu untuk mencari kata yang dibuat dalam database kamus yang tersedia, sehingga anagram dapat dibuat dengan lebih cepat dan efektif.

Algoritma backtracking pertama kali diperkenalkan oleh D.H. Lehmer pada tahun 1950. Dalam perkembangannya beberapa ahli seperti RJ Walker, Golomb, dan Baumert menyajikan uraian umum tentang backtracking dan penerapannya dalam berbagai persoalan dan aplikasi. Algoritma backtracking (runut balik) merupakan salah satu metode pemecahan masalah yang termasuk dalam strategi yang berbasis pencarian pada ruang status. Algoritma backtracking bekerja secara rekursif dan melakukan pencarian solusi persoalan secara sistematis pada semua kemungkinan solusi yang ada (Aho, Hopcroft, dan Ullman, 1983, hal:327).

Oleh karena algoritma ini berbasis pada algoritma Depth-First Search (DFS), maka pencarian solusi dilakukan dengan menelusuri suatu struktur berbentuk pohon berakar secara preorder. Proses ini dicirikan dengan ekspansi simpul terdalam lebih

(3)

dahulu sampai tidak ditemukan lagi suksesor dari suatu simpul (Aho, Hopcroft, dan Ullman, 1974, hal:176).

Algoritma backtracking mempunyai prinsip dasar kemungkinan solusi. Perbedaan utamanya adalah pada ide dasarnya, semua solusi dibuat dalam bentuk pohon solusi (pohon ini tentunya berbentuk abstrak) dan algoritma akan menelusuri pohon tersebut secara DFS sampai ditemukan solusi yang layak. Nama backtrack didapatkan dari sifat algoritma ini yang memanfaat karakteristik himpunan solusinya yang sudah disusun menjadi suatu pohon solusi. Agar lebih jelas bisa dilihat pada pohon solusi seperti gambar 2.1 berikut:

Gambar 2.1 Pohon Solusi

Misalkan pohon diatas menggambarkan solusi dari suatu permasalahan. Untuk mecapai solusi (5), maka jalan yang ditempuh adalah (1,2,5), demikian juga dengan solusi-solusi yang lain. Algoritma backtrack akan memeriksa mulai dari solusi yang pertama yaitu solusi (5). Jika ternyata solusi (5) bukan solusi yang layak maka algoritma akan melanjutkan ke solusi (6). Jalan yang ditempuh ke solusi (5) adalah (1,2,5) dan jalan untuk ke solusi (6) adalah (1,2,6). Kedua solusi ini memiliki jalan awal yang sama yaitu (1,2). Jadi daripada memeriksa ulang dari (1) kemudian (2) maka hasil (1,2) disimpan dan langsung memeriksa solusi (6). Pada pohon yang lebih rumit, cara ini akan jauh lebih efisien daripadabrute-force. Pada beberapa kasus, hasil perhitungan sebelumnya harus disimpan, sedangkan pada kasus yang lainnya tidak perlu.

(4)

Penggunaan terbesar backtrack adalah untuk membuat AI (Artificial Intelligence) pada board games. Dengan algoritma ini program dapat menghasilkan pohon sampai dengan kedalaman tertentu dari currentstatus dan memilih solusi yang akan membuat langkah-langkah yang dapat dilakukan oleh user akan menghasilkan pohon solusi baru dengan jumlah pilihan langkah terbanyak. Cara ini dipakai sebagai AIyang digunakan untuk dynamic problem solving.

Beberapa kegunaan yang cukup terkenal dari algoritma backtrack dari suatu masalah “statik” adalah untuk memecahkan masalah N-Queen problem dan maze solver. N-Queen problem adalah bagaimana cara meletakkan bidak Queen catur sebanyak N buah pada papan catur atau pada papan ukuran NxN sedemikian rupa sehingga tidak ada satu bidakpun yang dapat memangsa bidak lainnya dengan 1 gerakan. Meskipun mungkin terdapat lebih dari satu solusi untuk masalah ini, tetapi pencarian semua solusi biasanya tidak terlalu diperlukan, tetapi untuk beberapa kasus tertentu diperlukan pencarian semua solusi sehingga didapatkan solusi yang optimal.

Maze solver adalah bagaimana cara mencari jalan keluar dari suatu maze (labirin) yang diberikan. Pada maze yang sederhana dimana field yang dibentuk dapat direpresentasikan dalam bentuk biner dan pada setiap petak maksimal terdapat 4 kemungkinan: atas, kanan, bawah, dan kiri. Untuk masalah ini biasanya solusi pertama yang ditemukan bukanlah solusi yang paling optimal sehingga untuk mendapatkan hasil yang optimal dibutuhkan pencarian terhadap seluruh kemungkinan solusi. Hal ini disebabkan oleh urutan pencarian yang telah ditetapkan dalam program apakah menyelidiki kemungkinan ke arah atas dahulu atau ke arah lainnya dahulu (Putra, Sardjito, Lawrence, 2006, hal:1).

2.1.2 Algoritma String Matching(Pencocokan String)

Algoritma string matching adalah sebuah algoritma yang digunakan dalam pencocokkan suatu pola kata tertentu terhadap suatu kalimat atau teks panjang. Algoritma string matching sendiri dapat dilakukan dengan beberapa cara tertentu, antara lain cara Brute Force dan cara Knuth-Morris-Pratt (KMP) (Brassard dan Bratley, 1988, hal:211).

(5)

Algoritma-algoritma pencocokan string dapat diklasifikasikan menjadi tiga bagian menurut arah pencariannya, yaitu :

1) Dari arah yang paling alami, dari kiri ke kanan, yang merupakan arah untuk membaca, algoritma yang termasuk kategori ini adalah:

a) Algoritma Brute Force

Cara Brute Force dilakukan dengan membandingkan seluruh elemen karakter pada pola dengan kalimat atau teks panjang, dimulai pada elemen karakter pertama pada kalimat tersebut. Jika tidak sesuai maka pembandingan dimulai dengan elemen kedua dari kalimat tersebut.

b) Algoritma dari Morris dan Pratt, yang kemudian dikembangkan oleh Knuth, Morris, dan Pratt

Cara KMP dilakukan dengan menghitung fungsi pinggiran dari pola terlebih dulu dan kemudian akan dilakukan perbandingan antara pola dan elemen pertama dari kalimat, jika tidak sesuai, maka perbandingan tidak dilakukan pada elemen kedua, namun tergantung dari nilai yang akan dikeluarkan oleh fungsi pinggiran tersebut (Baase, 1988, hal:213).

2) Dari kanan ke kiri, arah yang biasanya menghasilkan hasil terbaik secara praktikal, contohnya adalah:

a) Algoritma dari Boyer dan Moore, yang kemudian banyak dikembangkan, menjadi Algoritma turbo Boyer-Moore, Algoritma tuned Boyer-Moore, dan Algoritma Zhu-Takaoka

3) Dari arah yang ditentukan secara spesifik oleh algoritma tersebut, arah ini menghasilkan hasil terbaik secara teoritis, algoritma yang termasuk kategori ini adalah:

a) Algoritma Colussi

b) Algoritma Crochemore-Perrin 2.2 Anagram

Anagram yang dalam bahasa Yunani disebut anagrammatismos mempunyai arti ana-(up, again, back, new) dan gram (letter). Dalam bahasa Inggris, anagram sebagai kata

(6)

benda mempunyai makna yaitu sebuah kata atau frase baru yang dibentuk dengan menyusun kembali huruf-huruf dari kata atau frase tersebut. Sebagai contoh dari kata Elvis menjadi Lives. Sedangkan anagram sebagai kata kerja bermakna yaitu untuk menyusun kembali huruf-huruf sedemikian rupa (http://wordsmith.org/anagram/ def.html).

Anagram adalah salah satu jenis permainan tebak kata. Objektif permainan anagram adalah menebak kata dengan huruf-huruf yang telah diacak. Huruf yang tersedia harus dipakai sebanyak jumlahnya. Contoh yang sederhana, pemain diberikan empat huruf ”upla”, maka pemain harus menebak kata menggunakan huruf ’u’, ’p’, ’l’, ’a’; dengan tiap huruf tepat sebanyak jumlahnya. Sehingga kata-kata yang bisa dibentuk adalah ”lupa”, ”palu”, ”pula”, ”luap”, dan seterusnya. Kata yang ditebak harus valid, valid dalam arti kata tersebut termasuk dalam suatu database yang ditentukan. Semakin banyak tebakan kata yang benar nilainya semakin baik (Assaat, 2007, hal:1).

Dalam penelitian yang dilakukan Assaat, 2007 algoritma backtracking dapat digunakan dalam mencari anagram dari sebuah kata. Pada penelitian tersebut algoritma backtracking dipakai untuk membangun list kata yang merupakan kumpulan kata yang dapat disusun oleh huruf-huruf yang telah diacak dan terdapat di database. Program permainan anagram yang di rancang oleh Assaat, 2007 melibatkan tiga elemen utama. Pertama adalah pemain, kedua adalah komputer dalam arti program itu sendiri, dan ketiga adalah database kata, dimana database tersebut telah terurut secara alfabet.

Secara umum kerja dari program yang di rancang oleh Assaat, 2007 adalah program melakukan tiga hal utama, yaitu memilih kata dari database secara acak, membangun list kata valid dari huruf-huruf kata yang terpilih, dan terakhir mencocokan string masukan pemain dengan list yang telah dibuat serta dibutuhkan beberapa data-data tambahan dan fungsi khusus untuk membantu menyelesaikan permasalahan yang ada.

(7)

Data dan fungsi tambahan yang diperlukan adalah data indeks huruf. Dalam melakukan pencarian apakah string ada atau tidak dalam database, akan sulit bila setiap pencarian dilakukan dari awal. Sama seperti halnya menandai halaman awal tiap huruf buku tebal ensiklopedi dengan jelas agar mudah dicari. Sehingga tiap huruf mempunyai indeks jumlah kata yang diawalinya. Sebagai contoh, indeks kata yang diawali huruf ‘d’ yang pertama dalam database adalah 3.325, sehingga pencarian dimulai dari indeks angka tersebut.

Fungsi tambahan berikutnya adalah fungsi pembatas indeks, dengan masukan array of karakter, maka fungsi akan mengembalikan indeks terendah dan tertinggi kata yang masih bisa diawali oleh masukan karakter tersebut. Sebagai contoh, bila masukan fungsi tersebut adalah “da” maka fungsi akan mengembalikan indeks pertama dan terakhir kata yang diawali “da”. Bila tidak ada kata yang bisa dibentuk maka fungsi mengembalikan angka -99 untuk kedua keluaran. Untuk efektifitas pencarian,angka indeks, algoritma pencarian yang digunakan adalah binary search agar waktu pencarian setara untuk setiap huruf.

Skema umum langkah-langkah program adalah sebagai berikut : 1. Pencarian Kata dan Pengacakan

Program membangun bilangan acak dari angka 1 hingga [JumlahKataDatabase]. Program akan mengacak indeks huruf dari kata tersebut. Program mengacak kata dari database, sehingga solusi yang dapat dibentuk minimal satu buah. Contoh, bila kata yang terpilih adalah “siang”, maka kata yang bisa dibentuk adalah “siang” itu sendiri, dan “asing”.

2 . Pembangunan List dari Kata yang Valid

Program akan membangun list kata yang mungkin dan mencocokannya dengan database. Persoalan telah disederhanakan dengan membatasi jumlah huruf dalam kata yaitu minimal 4 huruf dan maksimal 8 huruf. (4 < JumlahHuruf < 8). Kemudian algoritma backtracking dipakai untuk membangun list kata yang valid, seandainya digunakan algoritma brute forceuntuk kasus terburuk dapat kita hitung berapa waktu yang dibutuhkan untuk membangun list kata yang valid. Misalkan jumlah huruf dari kata yang terpilih dari database sebanyak delapan, jumlah kata dalam database

(8)

100.000, huruf-huruf dari kata tersebut hanya dapat membangun kata itu sendiri. Maka kata yang dibangun sebanyak 8! dan tiap kata harus dicocokkan satu per satu. Bila proses pencocokan string memakan waktu 1 detik maka, untuk membangun list kata diperlukan waktu selama 8! x 100.000 = 4.032.000.000 detik. Sedangkan list hanya akan berisi satu kata, yaitu kata yang diambil dari database. Sungguh waktu yang lama untuk memulai permainan. Untuk itu di gunakan algoritma backtracking sebagai penyempurnaan algoritma brute force. Kita sudah mempunyai data dan fungsi tambahan, yaitu data indeks huruf dan fungsi batas minimum maksimum. Maka kita akan membangun pohon solusi untuk membangun kata-kata yang valid. Sebagai contoh kasus, bila kata yang terpilih dari database adalah “LUPA”. Maka kata yang dapat dibangun melalui pohon adalah seperti gambar 2.2 berikut.

Gambar 2.2 Pohon yang dibangun untuk kata terpilih “lupa” Langkah-langkah dalam pembangunan pohon adalah sebagai berikut :

1. Simpul dihidupkan sesuai alfabet. Dimulai dari huruf ‘A’. Maka pencarian langsung dimulai dari indeks huruf A, yaitu 1. Simpul yang dihidupkan pertama kali oleh simpul ‘A’ adalah simpul ’L’. Maka fungsi pembatas dipanggil dengan masukkan string “AL”. Karena masih ada kata yang diawali oleh “AL” maka pencarian diteruskan dengan menghidupkan simpul ‘P’.

2. Fungsi pembatas dipanggil kembali dengan masukan string “ALP”. Namun fungsi mengembalikan -99 karena tidak ditemukan kata yang diawali “ALP”. Simpul dibunuh, lalu backtrackke simpul ‘L’.

(9)

3. Hidupkan simpul ‘U’, lalu panggil fungsi pembatas dengan masukkan “ALU”. Karena masih ada kata yang diawali “ALU” maka pencarian diteruskan.

4. Hidupkan simpul dengan huruf yang tersisa, cek dengan fungsi pembatas bila mengembalikan -99 bunuh simpul lalu backtrack, bila bukan -99 lanjutkan pencarian.

5. Bila string yang diperiksa fungsi pembatas sejumlah kata awal (dalam contoh ini 4) maka cek kondisinya. Solusi dianggap ditemukan bila memenuhi salah satu dari dua kondisi, kondisi pertama cek nilai batas minimum dan maksimum dari kembalian fungsi pembatas, bila sama maka solusi ditemukan dan dimasukkan dalam list. Kondisi kedua, bila batas minimum dan maksimum berbeda maka cek ke database apakah string masukkan tepat sama dengan kata dengan indeks batas minimum hasil fungsi pembatas. Bila tepat sama maka solusi dinyatakan ketemu dan dimasukkan kedalam list kata, bila tidak maka simpul dibunuh dan melanjutkan backtrack. Kondisi ini diperlukan untuk menangani kasus bila masukkan string “PUAL” ke fungsi pembatas. Fungsi tidak mengembalikan nilai -99 karena ada kata yang diawali “PUAL”, contohnya “PUALAM” (batu). Setelah dicek nilai batas minimum dan maksimumnya berbeda, maka string masukkan di cek langsung ke database. Karena kata “PUAL” tidak diketemukan maka simpul dibunuh dan “PUAL” tidak dinyatakan sebagai solusi.

6. Pencarian dinyatakan berakhir bila seluruh pohon telah diiterasi. 3 . Pencocokan Masukan Pemain dengan List

Program akan mencocokkan string masukkan user dengan algoritma brute force, karena pencocokan harus tepat sama dengan kata yang terdapat dalam list, satu huruf saja salah maka dinyatakan berbeda lalu dicocokkan dengan kata berikutnya yang terdapat dalam list. Bila tepat sama maka skor pemain ditambahkan dan kata tersebut exclude dari list agar tidak diperiksa kembali.

Gambar

Gambar 2.1 Pohon Solusi
Gambar 2.2 Pohon yang dibangun untuk kata terpilih “lupa” Langkah-langkah  dalam  pembangunan  pohon  adalah sebagai berikut :

Referensi

Dokumen terkait

Penelitian ini dilakukan dengan melakukan survai di Pelabuhan Penyeberangan Lembar untuk mendapatkan data waktu menaikkan dan menurunkan kendaraan roda empat (bongkar muat)

Berdasarkan pada teori dan penelitian terhadap luka yang memakai Amnion (ALS-Radiasi) dan belum adanya kemajuan penelitian terhadap penyembuhan tukak diabetes

Hal tersebut sejalan dengan hasil penelitian yang menujukkan faktor paling dominan dengan kasus difteri di Puskesmas Bangkalan tahun 2016, yaitu seorang anak yang

Kabupaten Nunukan, Kabupaten Malinau, Kabupaten Kutai Barat, Kabupaten Kutai Timur dan Kota Bontang sebagaimana telah diubah dengan Undang-Undang Nomor 7 Tahun 2000

Penelitian ini menggunakan pendekatan penelitian pengembangan (Research and Development).Tempat penelitian di Jurusan Teknik Mesin, SMKN 3 Yogyakarta.Obyek penelitian ini

Penelitian ini bertujuan untuk mengetahui jumlah populasi bakteri yang berada di perkebunan kelapa sawit lahan gambut pada tingkat kedalaman tanah 0 cm (permukaan

Keenam; Pasal 33 tidak melarang usaha orang seorang (non pemerintah),yaitu usaha swasta dalam negeri dan asing untuk usaha- usahaperekonomian yang tidak penting bagi negara atau

Target penerimaan perpajakan pada APBN tahun 2013 ditetapkan sebesar Rp1.193,0 triliun, terdiri atas pendapatan pajak dalam negeri sebesar Rp1.134,3 triliun