MODIFIKASI METODE BACKTRACKING UNTUK MEMBANTU MENCARI PENYELESAIAN PERMAINAN PEG SOLITAIRE Susana Limanto dan Monica Widiasri Universitas Surabaya, Surabaya susana @ubaya.ad.id dan monica@ubaya.ac.id ABSTRACT Peg Solitaire is a board game. The board has several holes. Each hole contains a peg except at least one empty hole. The player must move an pegs into an empty one. The allowed move is jumping over one other peg. The player will win the game if there is one peg left on the board. If the player made a wrong move and the rest of the pegs on the board has been reduced, the player is not possible to make the leap since the peg s location is far from each other and the game will end with a defeat. This situation is usually occur at beginners. To help the player learns how to win the game, an application is needed. This application must provide information about how to solve the Peg Solitaire game step by step. Backtracking method is a method that can be used to find an optimal solution by searching all possible solutions. This method can be used to search the Peg Solitaire s solution. It is necessary to prune some possibilities to accelerate the search time. Pruning can be done when a possibility has a symmetry horizontal, vertical, diagonal up, or diagonal down board condition compared to the previous possibility. This can be done because the search of the two symetry boards will give results that are also mutually simetry. This paper will discuss the use of backtracking method in a symmetry condition to solve the Peg Solitare game more efficiently. Keywords: Peg Solitare, Backtracking. 1. Pendahuluan Seorang pemain Peg Solitare dihadapkan pada sebuah papan permainan yang berisi sekumpulan lubang yang semuanya terisi oleh pasak kecuali satu lubang tepat di bagian tengah. Pemain harus berusaha untuk memindahkan pasak-pasak yang ada baik secara horizontal, vertikal, ataupun diagonal melompati sebuah adjacent pasak menuju sebuah lubang dan membuang pasak yang sudah dilompati. Permainan ini terus berlangsung hingga pada papan permainan bersisa satu pasak atau tidak dimungkinkan untuk melakukan lompatan. Pemain akan dikatakan menang apabila pada papan permainan bersisa satu pasak dan pemain akan dikatakan kalah apabila terjadi keadaan sebaliknya. Namun, permainan tidak selalu berakhir dengan kemenangan. Apabila seorang pemain salah melangkah, maka pada saat jumlah pasak yang tersisa pada papan permainan sudah jauh berkurang, pemain akan bertemu dengan kondisi dimana pasak-pasak yang tersisa pada papan permainan letaknya berjauhan sehingga tidak memungkinkan untuk melakukan lompatan lagi, sehingga permainan tidak berakhir dengan kemenangan, seperti yang terlihat pada Gambar 1. Gambar 1. Kondisi Permainan yang Tidak Dapat Diselesaikan Solusi dari permainan Peg Solitare dapat dicari dengan menggunakan metode backtracking. Metode ini akan memeriksa semua kemungkinan langkah yang dapat diambil dengan memanfaatkan tree. Namun jika semua kemungkinan harus diperiksa, maka tree yang terbentuk akan sangat besar sehingga waktu pencarian menjadi lama. Penelitian ini dilakukan untuk memodifikasi metode backtracking dan metode tersebut tidak perlu menelusuri semua kemungkinan langkah yang ada dan waktu pencarian dapat dipercepat. 2. Peg Solitaire Peg Solitaire merupakan sebuah permainan dengan satu orang pemain. Permainan ini berupa sebuah puzzle yang terdiri dari sebuah papan permainan dengan sejumlah pasak atau marble [1]. Papan permainan tersebut berisi sekumpulan lubang 285
yang akan ditempati oleh pasak atau marble. Permainan diawali dengan papan yang penuh berisi dengan pasak kecuali hanya satu pasak yang tidak terisi di bagian tengah. Permainan diakhiri apabila pasak pada papan permainan tinggal satu. Contoh kondisi awal papan permainan dapat dilihat pada Gambar 2. Gambar 2. Kondisi Awal Papan Permainan Peg Solitaire Secara umum, permainan Peg Solitaire dilakukan dengan memindahkan sebuah pasak secara horizontal atau vertikal melompati sebuah pasak yang lain yang adjacent dengan pasak yang akan dipindahkan menuju sebuah lubang lalu membuang pasak yang sudah dilompati. Langkah ini terus dilakukan sampai pasak di seluruh papan hanya bersisa satu. Dalam perkembangannya, permainan Peg Solitaire dapat juga dilakukan dengan cara memindahkan sebuah pasak secara diagonal. Langkah-langkah yang diperbolehkan dalam permainan Peg Solitaire dapat dilihat pada Gambar 3. Gambar 3. Langkah-langkah Yang Diperbolehkan Dalam Permainan Peg Solitaire. 3. Pembahasan Hasil Penelitian Untuk menyelesaikan permainan Peg Solitaire diperlukan suatu metode yang dapat memperhitungkan semua kemungkinan langkah ke depan. Salah satu metode yang dapat digunakan adalah metode backtracking. Metode backtracking dapat membantu menyelesaikan masalah dengan memanfaatkan tree, karena hasil penelusuran langkahlangkah tersebut membentuk pola seperti tree [3]. Tree yang dibentuk oleh metode backtracking untuk mencari penyelesaian permainan Peg Solitare dengan kondisi papan seperti Gambar 2. dapat dilihat pada Gambar 4. Gambar 4. menunjukkan bahwa untuk kedalaman pertama, masing-masing node akan membentuk tujuh anak cabang. Pada kedalaman dua, setiap node akan memiliki anak cabang antara sembilan sampai dua belas anak cabang, demikian seterusnya. Jadi untuk menyelesaikan permainan Peg Solitaire dari awal sampai akhir diperlukan tree dengan kedalaman tiga puluh satu. Besarnya tree yang terbentuk, menyebabkan proses untuk mencari penyelesaian permainan Peg Solitare menjadi lama. Penelitian dimulai dengan melakukan analisis terhadap algoritma backtracking agar dapat menghasilkan penyelesaian permainan Peg Solitaire secara lebih effisien. Berdasarkan hasil pengamatan terhadap kondisi papan permainan pada setiap node yang ada pada tree dapat disimpulkan bahwa beberapa anak cabang pada tree dapat dipotong apabila anak cabang tersebut bersimetri dengan anak cabang lainnya. Ada beberapa macam simetri, yaitu: 1. Simetri horisontal Apabila pasak-pasak pada papan permainan dicerminkan terhadap sumbu pusat horisontal dan posisi pasak-pasak hasil pencerminan sama dengan posisi pasak-pasak pada papan permainan yang lain maka kedua papan permainan tersebut dikatakan bersimetri secara horisontal. Contoh pasak-pasak pada papan permainan yang bersimetri secara horisontal dapat dilihat pada Gambar 5. 2. Simetri vertikal Dua buah papan permainan Peg Solitaire dikatakan bersimetri vertikal apabila memenuhi dua kriteria. Kriteria pertama adalah jika jumlah pasak pada kedua papan pemainan adalah sama. Kriteria kedua adalah letak pasak-pasak pada papan permainan pertama sama dengan posisi pasak-pasak pada papan permainan pertama setelah dicerminkan 286
terhadap sumbu pusat vertikal. Contoh dua buah papan permainan Peg Solitare yang bersimetri secara vertikal dapat dilihat pada Gambar 6. Gambar 4. Tree Hasil Metode Backtracking untuk Menyelesaikan Permainan Peg Solitaire Gambar 5. Dua Kondisi Papan Permainan Peg Solitare yang Saling Bersimetri Horisontal Gambar 6. Dua Kondisi Papan Permainan Peg Solitare yang Saling Bersimetri Vertikal 3. Simetri diagonal atas Dua buah papan permainan dikatakan simetri secara diagonal atas apabila pasak-pasak pada papan permainan pertama dicerminkan terhadap sumbu pusat simetri diagonal atas menghasilkan posisi pasak-pasak pada papan permainan kedua. Contoh pasak-pasak pada papan permainan yang bersimetri secara diagonal atas dapat dilihat pada Gambar 7. 4. Simetri diagonal bawah 287
Dua buah papan permainan dikatakan simetri secara diagonal bawah apabila letak pasak-pasak pada papan permainan pertama sama dengan posisi pasak-pasak pada papan permainan kedua setelah dicerminkan terhadap sumbu pusat simetri diagonal bawah. Contoh pasak-pasak pada papan permainan yang bersimetri secara diagonal bawah dapat dilihat pada Gambar 8. Gambar 7. Dua Kondisi Papan Permainan Peg Solitare yang Saling Bersimetri Diagonal Atas Gambar 8. Dua Kondisi Papan Permainan Peg Solitare yang Saling Bersimetri Diagonal Bawah Dua buah node yang menggambarkan dua buah kondisi papan permainan yang saling bersimetri akan mempunyai nodenode anak yang juga saling bersimetri, seperti yang terlihat pada Gambar 9. Node 1 bersimetri secara horizontal dengan node 12. Gambar 9 menunjukkan bahwa node-node anak yang dimiliki oleh node 1 dan node-node anak yang dimiliki oleh node 12 semuanya saling bersimetri sampai node daun. Jadi, apabila dua buah node saling bersimetri, maka hasil akhir penelusuran kedua buah node tersebut juga akan saling bersimetri. Hal ini menyebabkan dua buah node yang saling bersimetri hanya perlu dikunjungi salah satu saja, karena apabila node yang satu sudah diketahui hasil penelusurannya, maka node yang bersimetri pasti akan mempunyai hasil penelusuran yang simetri dengan node tersebut. Setelah analisis selesai dilakukan, selanjutnya dilakukan perancangan perangkat lunak permainan Peg Solitare. Perangkat lunak ini akan dilengkapi dengan suatu fasilitas untuk menampilkan langkah-langkah penyelesaian permainan Peg Solitare berdasarkan suatu kondisi tertentu papan permainan. Selain itu, juga ditambahkan beberapa fasilitas lain untuk melengkapi perangkat lunak yang dibuat. Fasilitas-fasilitas yang disediakan adalah tiga macam bentuk papan permainan (Diamond, Round, dan Solitaire) seperti terlihat pada Gambar 10. User dimungkinkan untuk menentukan keberadaan pasak-pasak pada papan permainan sebagai awal permainan, membatalkan langkah yang baru saja dilakukan (undo), redo, mengakhiri sebuah permainan dan mengembalikan kondisi papan permainan seperti awal permainan sebelumnya (restart), mengakhiri sebuah permainan dan memulai sebuah permainan baru (new game), informasi berupa jumlah pasak yang tersisa pada papan permainan (total peg), informasi berupa semua kemungkinan satu langkah ke depan yang dapat diambil oleh seorang pemain (show moves), informasi berupa daftar dua nama pemain yang menyelesaikan pemainan dengan waktu tercepat dari setiap macam bentuk papan permainan (best time), memungkinkan user untuk mengukur waktu yang diperlukan untuk menyelesaikan permainan (time), memungkinkan user untuk mengatur warna pasak dan papan permainan (color), dan penjelasan berupa aturan permainan dari Peg Solitaire (help). 288
Gambar 9. Hasil Penelusuran Dua Buah Node yang Saling Bersimetri (a) Diamond (b) Round (c) Solitare Gambar 10. Bentuk Papan Permainan yang Disediakan Hasil desain kemudian diimplementasikan dengan menggunakan bahasa pemrograman Microsoft Visual Basic 2003. Contoh hasil implementasi dapat dilihat pada Gambar 11 dan Gambar 12 [2]. Gambar 11 menunjukkan bentuk papan permainan round dengan pasak warna merah merupakan pasak yang tidak mungkin untuk dipindahkan. Pasak warna kuning merupakan pasak yang dapat dipindahkan dan lubang hitam menunjukkan semua kemungkinan perpindahan dari pasak yang dilingkari. Gambar 12 menunjukkan solusi yang dihasilkan oleh perangkat lunak yang dibuat berdasarkan kondisi papan permainan pada langkah 1. Solusi akan diberikan apabila user menekan tombol solution. Gambar 11. Papan Permainan Jenis Round Untuk memastikan bahwa aplikasi yang dibuat sudah berjalan sesuai dengan yang diinginkan maka dilakukan uji coba. Uji coba dilakukan dengan mencocokkan hasil aplikasi dengan hasil perhitungan manual dan mencoba semua fasilitas yang disediakan. Data yang digunakan dalam uji coba untuk memastikan bahwa solusi yang diberikan oleh perangkat lunak yang dibuat sudah berjalan dengan benar adalah Gambar 12, langkah 1 [2]. Hasil penelusuran metode backtracking dapat dilihat pada Gambar 13. Gambar 12 dan Gambar 13 menunjukkan bahwa hasil yang diberikan oleh program aplikasi sudah sama dengan hasil perhitungan manual. Berikutnya dilakukan pengujian terhadap semua fasilitas yang 289
ada. Setelah beberapa kali melakukan perbaikan, dapat dipastikan bahwa semua fasilitas yang disediakan sudah berjalan sebagaimana mestinya. Gambar 12. Solusi yang Dihasilkan Oleh Perangkat Lunak Berdasarkan Kondisi Papan pada Langkah 1. Gambar 13. Potongan Tree Hasil Penelusuran Gambar 12, Langkah 1. 4. Kesimpulan Kesimpulan yang dapat diambil dari penelitian ini adalah modifikasi yang dilakukan pada metode backtracking dengan memperhatikan kondisi simetri, baik simetri horizontal, vertikal, diagonal atas maupun diagonal bawah dapat mengurangi kompleksitas tree hasil penelusuran pencarian solusi terhadap suatu kondisi tertentu papan permainan Peg Solitare. Pengurangan kompleksitas tree secara otomatis akan mengurangi waktu proses komputer. Selain itu, adanya fasilitas show moves dan solution dapat membantu para pemain terutama pemain pemula untuk belajar permainan Peg Solitare secara effisien. Daftar Pustaka [1] Bell, G. I. (2009). Peg Solitaire. Diambil dari http://home.comcast.net/~gibell/pegsolitaire/.internet. Diambil pada tanggal 18 April 2010. [2] Dianita, N. (2010). Pembuatan Aplikasi Pencarian Solusi Permainan Peg Solitaire dengan Algoritma Backtracking. Tugas akhir. Universitas Surabaya. [3] Kusamadewi, S. (2001). Artificial Intelligence (Teknik dan applikasinya). Graha Ilmu, Indonesia. [4] Levitin, A. (2003). Introduction to the design and analysis of algorithms. Addison Wesley. 497p: Boston. 290