penerapan algoritma backtracking

15
PENERAPAN ALGORITMA BACKTRACKING (RUNUT-BALIK) DALAM PERMAINAN TEKA-TEKI SILANG (TTS) Oleh: Dila Umnia Soraya UNIVERSITAS NEGERI MALANG FAKULTAS TEKNIK JURUSAN ELEKTRO PRODI S1 PENDIDIKAN TAKNIK INFORMATIKA Maret 2009

Upload: nyiiteng89

Post on 18-Jun-2015

1.442 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Penerapan Algoritma Backtracking

PENERAPAN ALGORITMA BACKTRACKING (RUNUT-BALIK)

DALAM PERMAINAN TEKA-TEKI SILANG (TTS)

Oleh:Dila Umnia Soraya

UNIVERSITAS NEGERI MALANG

FAKULTAS TEKNIK

JURUSAN ELEKTRO

PRODI S1 PENDIDIKAN TAKNIK INFORMATIKA

Maret 2009

Page 2: Penerapan Algoritma Backtracking

2A. Permainan Teka Teki Silang (TTS)

Permainan teka-teki silang merupakan salah satu permainan asah otak

yang diminati banyak orang. Teka Teki Silang atau disingkat TTS adalah suatu

permainan di mana kita harus mengisi ruang-ruang kosong (berbentuk kotak

putih) dengan huruf-huruf yang membentuk sebuah kata berdasarkan petunjuk

yang diberikan. Petunjuknya biasa dibagi ke dalam kategori 'Mendatar' dan 'Me-

nurun' tergantung posisi kata-kata yang harus diisi (Wikipedia).

Dalam permainan teka-teki silang terdapat papan permainan utama. Papan

permainan sendiri terdiri atas kotak-kotak berwarna hitam dan putih.Sebagai mana

telah dijelaskan bahwa kotak-kotak putih yang membentuk deretan blok, baik

mendatar maupun menurun merupakan tempat pemain mengisi jawaban. Setiap

deretan kotak akan mempunyai nomor dan soal yang diberikan. Permainan akan

dinyatakan selesai jika, pemain mampu mengisi semua deretan kotak-kotak putih

mendatar dan menurun tersebut. 1 2 14

13 12

3 4

5

6

8

10

7 11

9

Gambar 1. Papan Permainan TTS

Permainan ini memang cukup mudah untuk dimainkan, namun sayangnya

untuk dapat membuat soal yang valid merupakan hal yang sulit. Untuk itu dalam

makalah ini akan dijelaskan penyelesaian masalah tersebut dengan bantuan

program komputer. Pembuat soal cukup memasukkan database berupa kata-kata

jawaban berikut soalnya dan membuat deretan-deretan kotak putih tempat

jawaban di papan permainan. Salah satu cara untuk menyelesaikan permasalahan

tersebut adalah dengan menggunakan algoritma backtracking. Algoitma runut-

balik (backtracking) akan mampu memberikan hasil apakah deretan-deretan kotak

S1 PENDIDIKAN TEKNIK INFORMATIKA – ELEKTRO UM

Page 3: Penerapan Algoritma Backtracking

3jawaban yang telah dibuat sudah cocok dengan deretan jawaban kata yang

disediakan.

B. Algoritma Backtracking

Algoritma bactracking pertama kali diperkenalkan oleh D.H. Lehmer pada

tahun 1950. Algoritma ini cukup praktis untuk digunakan dalam beberapa

penyelesaian masalah dan juga untuk memberikan kecerdasaan buatan dalam

game. Beberapa game populer semisal Sudoku, Labirin, Catur, tic tac toe juga

bisa diimplementasikan dengan menggunakan algoritma backtracking.

Algoritma runut-balik (backtracking) merupakan algoritma yang diguna-

kan untuk mencari solusi persoalan secara lebih praktis dari pada menggunakan

algoritma brute force. Algoritma ini akan mencari solusi berdasarkan ruang solusi

yang ada secara sistematis namun tidak semua ruang solusi akan diperiksa, hanya

pencarian yang mengarah kepada solusi yang akan diproses (Rinaldi Munir,

Diktat Srategi Algoitmik, Teknik Informatika ITB, 2005).

Kelemahan dari algoritma backtracking, yaitu hanya bisa diaplikasikan

terbatas pada tipe permasalahan yang memiliki solusi yang dapat dicari secara

sistematis dan bertahap. Terdapat masalah-masalah yang tidak bisa diselesaikan

dengan menggunakan backtracking, misalnya menemukan suatu nilai yang

diminta pada tabel yang tidak terurut. Namun ketika algoritma ini dapat

diaplikasikan, backtracking dapat bekerja jauh lebih cepat dari brute force karena

jumlah kandidat solusi yang dapat dibuang dengan backtracking cukup besar.

Algoritma backtracking merupakan algoritma pencarian yang berbasis

pada DFS (Depth-First Search) atau pencarian mendalam dengan tujuan mencari

solusi permasalahan secara lebih praktis. Mekanisme penyelesaian dengan meng-

gunakan backtracking berprinsip pada metode rekursif. Untuk menyelesaikan

keseluruhan masalah, dibutuhkan sebuah solusi untuk permasalahan pertama,

kemudian permasalahan-permasalahan lainnya akan dicoba untuk diselesaikan

secara rekursif berdasarkan solusi pertama tersebut. Jika kemungkinan solusi yang

sedang dicoba gagal, atau jika tujuan program adalah untuk menemukan seluruh

solusi yang mungkin, maka dilakukan backtrack untuk menguji kemungkinan

S1 PENDIDIKAN TEKNIK INFORMATIKA – ELEKTRO UM

Page 4: Penerapan Algoritma Backtracking

4solusi selanjutnya. Proses backtrack akan selesai ketika tidak ada lagi solusi

yang mungkin untuk menyelesaikan permasalahan paling awal.

Dalam diktat Strategi Algoritmik Teknik Informatika ITB oleh Rinaldi

Munir, dijelaskan bahwa algoritma backtracking memiliki properti umum yaitu:

• Solusi persoalan

Solusi dinyatakan sebagai vektor dengan n-tuple:

X = (x1, x2, …, xn), xi ∈ Si

Mungkin saja S1 = S2 = … = Sn.

Contoh: Si = {0, 1}, xi = 0 atau 1

• Fungsi pembangkit nilai xk

Dinyatakan sebagai T(k).

T(k) membangkitkan nilai untuk xk, yang merupakan komponen vektor solusi.

• Fungsi pembatas (pada beberapa persoalan fungsi ini dinamakan fungsi krite-

ria)

Dinyatakan sebagai B(x1, x2, …, xk), B bernilai true jika (x1, x2, …, xk) mengarah

ke solusi. Jika true, maka pembangkitan nilai untuk xk+1 dilanjutkan, tetapi

jika false, maka (x1, x2,…, xk) dibuang dan tidak dipertimbangkan lagi dalam

pencarian solusi.

Solusi persoalan adalah kemungkinan solusi yang didapatkan dari per-

masalahan yang diberikan, sedangkan fungsi pembatas merupakan fungsi yang

akan menentukan langkah selanjutnya berupa penerusan pencarian solusi ataupun

melakukan backtrack. Algoritma backtracking merupakan metode paling efisien untuk

parsing dan banyak masalah optimasi kombinatorial lainnya. Backtracking juga

digunakan oleh bahasa pemrograman logika seperti Prolog, Icon, dan Planner.

C. Prinsip Pencarian Solusi pada Algoritma Backtracking

Untuk menerapkan algoritma runut-balik pada pencarian solusi, hanya

akan ditinjau pencarian solusi pada pohon ruang status yang dibangun secara

dinamis:

1. Solusi dicari dengan membentuk lintasan dari akar ke daun dengan aturan

pembentukan pohon yang dipakai mengikuti metode DFS. Simpul-simpul

S1 PENDIDIKAN TEKNIK INFORMATIKA – ELEKTRO UM

Page 5: Penerapan Algoritma Backtracking

5yang sudah dilahirkan dinamakan simpul hidup. Simpul hidup yang sedang

diperluas dinamakan simpul-E (Expand-node).

2. Jika lintasan yang sedang dibentuk tidak mengarah ke solusi, maka simpul-

E menjadi simpul mati (dead node) dengan fungsi pembatas (bounding

function).

3. Jika pembentukan lintasan berakhir dengan simpul mati, maka proses pen-

carian diteruskan dengan membangkitkan simpul anak yang lain. Bila tidak ada

lagi simpul anak yang dapat dibangkitkan, maka pencarian solusi dilanjutkan

dengan melakukan runut-balik ke simpul hidup terdekat.

4. pencarian dihentikan bila kita telah menemukan solusi (solusi ditemukan)

atau tidak ada lagi simpul hidup untuk runut-balik (solusi tidak ditemukan).

Salah satu fungsi yang dimiliki oleh algoritma backtracking dan

menjadi ciri khasnya adalah fungsi pemangkasan (pruning). Jika tahap-tahap

pencarian solusi suatu masalah direpresentasikan dalam bentuk pohon solusi,

proses pemangkasan akan dilakukan terhadap simpul-simpul yang tidak

mengarah kepada solusi. Jika suatu simpul telah dipangkas, simpul-simpul

yang menjadi anak dan turunan dari simpul tersebut otomatis tidak akan

diproses, karena memangkas sebuah simpul sama halnya membuang seluruh

lintasan yang berada di bawah simpul tersebut.

Gambar 2. Ilustrasi Proses Pemangkasan (Pruning)

Berdasarkan gambar tersebut, simpul yang dipangkas adalah simpul d dan f.

Akibat pemangkasan tersebut, simpul k yang merupakan anak simpul d, serta

simpul l dan m yang merupakan anak simpul f tidak akan diproses.

S1 PENDIDIKAN TEKNIK INFORMATIKA – ELEKTRO UM

Page 6: Penerapan Algoritma Backtracking

6D. Penerapan Algoritma Backtracking dalam Permainan TTS

Dalam penyelesaian kasus pembuatan soal TTS ini dapat diterapkan

algoritma brute force. Algoritma brute force adalah sebuah pendekatan yang

lempang (straight forward) untuk memecahkan suatu masalah, biasanya didasar-

kan pada pernyataan masalah (problem statement) dan definisi konsep yang

dilibatkan (Rinaldi Munir, Diktat Srategi Algoitmik, Teknik Informatika ITB,

2005). Pada pencarian solusi dengan brute force, program akan membuat seluruh

kemungkinan solusi, baru kemudian menguji satu persatu apakah solusi yang

telah dibuat dapat memenuhi spesifikasi solusi akhir yang dicari.

Namun sayangnya hal ini tidak efisien karena semua kemungkinan akan

dicoba. Sebagai contoh: Jika terdapat n buah kata dalam database kata dan

terdapat m jumlah deretan kotak yang harus diisi maka jumlah proses untuk setiap

deretan kata, harus dicoba sebanyak n! dari keseluruhan katadidalam data base,

sehingga jumlah proses yang diperlukan adalah m x n ! dan kompleksitas

algoritmanya menjadi 0 (mn!). Untuk itulah diperlukan algoritma lain yang lebih

efisien, dalam hal ini salah satunya adalah algoritma Backtracking.

Algoritma backtracking dalam permainan ini akan digunakan untuk

mengisi kotak-kotak permainan yang sebelumnya telah dibuat. Kotak-kotak ini

bisa direpresentasikan dengan struktur data matriks sehingga setiap kotak akan

memiliki indeks. Indeks ini akan digunakan untuk melakukan pencarian kata yang

cocok. Pada pengisian kata ke dalam kotak-kotak, pertama-tama program akan

menentukan deretan kotak awal yang ingin diisi. Program akan menghitung

jumlah kotak pada deretan kotak tersebut kemudian akan mencari kata di dalam

database (yang terdiri atas kumpulan kata/jawaban) yang memiliki jumlah

karakter sama dengan jumlah kotak tersebut.

Dalam pencarian data kata-kata mungkin akan terdapat beberapa kata yang

cocok untuk dimasukkan kedalam satu deretan kotak, untuk itu program akan

memilih kata yang berada lebih awal dalam database kata. Langkah selanjutnya,

program akan mengidentifikasi indeks pada deretan kotak yang terhubung dengan

deretan kotak lainnya. Program akan mencatat dimana letak hubungan antar

deretan kotak tersebut kemudian mencatat indeks dan mengambil karakter yang

terdapat di dalamnya untuk dibandingkan kembali dengan deretan kata yang ada

S1 PENDIDIKAN TEKNIK INFORMATIKA – ELEKTRO UM

Page 7: Penerapan Algoritma Backtracking

7di dalam database kata. Jika kata yang dimasukkan berikutnya cocok maka

pencarian akan dilanjutkan, namun jika tidak terdapat kata yang cocok maka

program akan mematikan kemungkinan jawaban berdasarkan pencarian tersebut

dan program akan melakukan backtrack.

Backtrack dilakukan dengan cara program akan menghapus kata yang

terakhir dimasukkan ke dalam deretan kotak, kemudian program akan mengganti

kata tersebut dengan kata lain yang juga bisa diisikan ke dalam deretan kotak

tersebut dan kemudian program akan melakukan pencarian ulang. Langkah-

langkah diatas akan terus dilakukan secara rekursif, sampai program menemukan

solusi dari permasalahan (seluruh kotak terisi) atau program tidak menemukan

solusi (tidak ada kemungkinan jawaban yang valid).

E. Implementasi Backtracking pada Permainan TTS

Seperti yang telah dijelaskan sebelumnya, untuk menjalankan program ini

yaitu harus mempersiapkan database kata sebagai jawaban dari pertanyaan TTS.

Berikut contoh database kata yang disediakan untuk permainan TTS:

No. Kata Jumlah Karakter1 MADING 62 SILABUS 73 ATRAKSI 74 SAMBIL 65 JAM 36 LEPAS 47 KOMBINASI 98 ADSI 49 RETAK 510 BALI 411 ITU 312 GEREJA 613 RUSAK 514 RUPA 415 GEOGRAFI 8Tabel 1. Database Kata

S1 PENDIDIKAN TEKNIK INFORMATIKA – ELEKTRO UM

Page 8: Penerapan Algoritma Backtracking

8 1 2 14

13 12

3 4

5

6

8

10

7 11

9

Gambar 3. Kondisi Awal Kotak Permainan

Adapun langkah-langkah pencarian solusi dengan algoritma backtracking

pada permainan TTS, yaitu:

o Program akan menghitung jumlah kotak pada deretan pertama.1 2 3

Gambar 4. Deretan Kotak Pertama

o Program akan mencari di database, kata yang berjumlah 6 karakter, yaitu

terdapat kata “MADING”, “SAMBIL”, dan “GEREJA”No. Kata Jumlah Karakter1 MADING 62 SILABUS 73 ATRAKSI 74 SAMBIL 65 JAM 36 LEPAS 47 KOMBINASI 98 ADSI 49 RETAK 510 BALI 411 ITU 312 GEREJA 613 RUSAL 514 RUPA 415 GEOGRAFI 8S1 PENDIDIKAN TEKNIK INFORMATIKA – ELEKTRO UM

Kata yang berjumlah 6 karakter

Page 9: Penerapan Algoritma Backtracking

9o Program akan memilih kata sesuai dengan urutan yang ada dalam database dan

memasukkannya ke dalam deretan kotak. Kata pertama yang dimasukkan

adalah kata “MADING”.1M A D I 2N G

3

Gambar 5. Kotak Permainan Setelah Diisi Kata “MADING”

o Program akan melakukan pencarian berikutnya terhadap deretan kotak kedua.

o Program tidak dapat menemukan kata yang memungkinkan (berjumlah 3 ka-

rakter dan dimulai dengan huruf awalan ‘N’), sehingga program akan mela-

kukan backtrack dan menghapus kata yang sebelumnya diisikan.

1 2 3

Gambar 6. Kotak Permainan Setelah Backtracking

o Langkah selanjutnya program akan memilih kata yang lain untuk deretan

pertama yang memenuhi syarat, dalam hal ini adalah kata “SAMBIL”.1S A M B 2I L 3

Gambar 7. Kotak Permainan Setelah Diisi Kata “SAMBIL”

o Program melakukan pencarian berikutnya di dalam database. Program

menemukan kata “ITU” dan kembali dimasukkan kedalam kotak permainan.1S A M B 2I L T 3 U

Gambar 8. Kotak Permainan Setelah Diisi Kata “ITU”

o Pencarian berikutnya dilakukan pada kotak deretan ketiga, namun program

tidak menemukan kata yang cocok (berjumlah 6 karakter, huruf ketiga adalah

S1 PENDIDIKAN TEKNIK INFORMATIKA – ELEKTRO UM

Page 10: Penerapan Algoritma Backtracking

10“U”) sehingga program akan melakukan backtrack lagi dan menghapus kata

yang sebelumnya diisikan.1S A M B 2I L 3

Gambar 9. Kotak Permainan Setelah Backtrack

o Karena tidak ada kata lain yang dapat diisikan kembali maka program akan

melakukan backtrack lagi.1 2 3

Gambar 10. Kotak Permainan Setelah Backtrack

o Kemudian mengganti isi deretan kotak pertama dengan kata “GEREJA” (kata

yang cocok untuk deretan kotak pertama).

1G E R E 2J A 3

Gambar 11. Kotak Permainan Setelah Diisi Kata “GEREJA”

o Program akan mencari kembali kata yang cocok. Dalam hal ini program akan

mendapatkan kata “JAM”.1G E R E 2J A A 3 M

Gambar 12. Kotak Permainan Setelah Diisi Kata “JAM”

o Langkah selanjutnya program akan melakukan pencarian pada deretan kotak

ketiga yang berjumlah 6 kotak. Program akan mencari di dalam database kata

yang berjumlah 6 karakter, dimana karakter ketiga adalah “M”, dan kembali

memasukkannya kedalam deretan kotak yang tersedia. Dari sini program

menemukan kata “SAMBIL”, kemudian memasukkan kata tersebut ke dalam

kotak.

S1 PENDIDIKAN TEKNIK INFORMATIKA – ELEKTRO UM

Page 11: Penerapan Algoritma Backtracking

111G E R E 2J A A 3 S A M B I L

Gambar 13. Kotak Permainan Setelah Diisi Kata “SAMBIL”

o Langkah-langkah di atas diulang sampai program selesai menemukan solusi

atau sampai solusi tidak mungkin ditemukan. Jika solusi tidak ditemukan

maka, program akan meminta user untuk memasukkan kata-kata baru ke dalam

database kata kemudian program akan melakukan pencarian solusi ulang.

F. Program TTS

Program untuk permainan ini dapat dilihat di bawah ini://Pseudocode //Kamus Datakata array of String; Integer kolom, baris; Papan array of integer of integer; //algoritma Procedure tampilkanpapan(); //tidak diidefinisikan Prosedure membuatkotak(); //tidak didefinisikan Prosedure membuatdatabase(); //membuat array dari masukan kata Prosedure caridata(integer); //mencari kata berukuran masukan di data base, dengan iteratif Prosedure kirimdata(); //mengirim data ke papan Prosedure dapatkanukuran(integer indeks) //mendapatkan ukuran dari deretan kotak Procedure inputmasukan() Begin String kata; Integer I = 0; While(kata.equal(“selesaiiiiii”) Begin Input(kata); Datakata[i] = kata; I++;

S1 PENDIDIKAN TEKNIK INFORMATIKA – ELEKTRO UM

Page 12: Penerapan Algoritma Backtracking

12End; Prosedure backtrack(integer indeks) Kamus Boolean solusi; Begin While (indeks>0) && (!gerak) Begin Dapatkanukuran(papan,indeks); Caridata(ukuran) If (caridata==null) Begin Backtrack(indeks--);

G. Diagram Pohon

Agar lebih jelas bagaimana jalan dari permainan ini, akan ditunjukkan

pada diagram pohon. Dalam diagram pohon tersebut akan nampak initial state,

goal state, dan succeror node-nya. Node yang diberi tanda ( ) merupakan node

yang dipangkas. Berikut diagram algoritma Backtracking pada permainan TTS: 1 2 14

13 12

3 4

5

6

8

10

7 11

9

Gambar 14. Initial State

G E R E J A S A M A D I N G S A M B I L L E E A O R U P A B G I T U A U R R S S S A E A B F A T R A K S I A D S I A L K O M B I N A S I

Gambar 15. Goal State

S1 PENDIDIKAN TEKNIK INFORMATIKA – ELEKTRO UM

Page 13: Penerapan Algoritma Backtracking

13

S1 PENDIDIKAN TEKNIK INFORMATIKA – ELEKTRO UM

INITIAL STATE

Page 14: Penerapan Algoritma Backtracking

14

S1 PENDIDIKAN TEKNIK INFORMATIKA – ELEKTRO UM

GOAL STATE

Page 15: Penerapan Algoritma Backtracking

15H. Kesimpulan

Algoritma backtracking merupakan algoritma pencarian yang berbasis

pada DFS (Depth-First Search) atau pencarian mendalam dengan tujuan mencari

solusi permasalahan secara lebih praktis. Mekanisme penyelesaian dengan meng-

gunakan backtracking berprinsip pada metode rekursif.

Dalam permainan teka-teki silang ini, algoritma Backtracking sudah bisa

memberikan jawaban yang pasti sehingga algoritma Backtracking ini bisa dimple-

mentasikan. Selain itu algoritma Backtrack juga merupakan algoritma yang

sederhana namun cukup praktis dibandingkan dengan algoritma brute force. Hal

ini disebabkan karena pada prinsipnya, kita tidak perlu memeriksa semua ke-

mungkinan solusi yang ada. Pencarian hanya mengarah pada solusi yang diper-

timbangkan saja.

Meski demikian, algoritma backtracking masih memiliki kelemahan, yaitu

hanya bisa diaplikasikan terbatas pada tipe permasalahan yang memiliki solusi

yang dapat dicari secara sistematis dan bertahap. Terdapat masalah-masalah yang

tidak bisa diselesaikan dengan menggunakan backtracking, misalnya menemukan

suatu nilai yang diminta pada tabel yang tidak terurut. Namun ketika algoritma

ini dapat diaplikasikan, backtracking dapat bekerja jauh lebih cepat dari brute

force karena jumlah kandidat solusi yang dapat dibuang dengan backtracking

cukup besar.

I. Daftar Rujukan

Kusumadewi, Sri. 2003. Artificial Intelligence (Teknik dan Aplikasinya).

Yogyakarta: Graha Ilmu.

Suyanto. 2007. Artificial Intelligence (Searching, Reasoning, Pianning, dan

Learning). Bandung: Informatika.

W. Lily. 2008. Masalah dan Metode Pemecahan Masalah. Depok: Gunadarma.

Ciptarjo, Imam. 2008. Struktur Data. Bandung: LPKIA.

S1 PENDIDIKAN TEKNIK INFORMATIKA – ELEKTRO UM