• Tidak ada hasil yang ditemukan

PENYELESAIAN MASALAH 8 PUZZLE DENGAN ALGORITMA HILL CLIMBING STEPEST ASCENT LOGLIST HEURISTIK BERBASIS JAVA

N/A
N/A
Protected

Academic year: 2021

Membagikan "PENYELESAIAN MASALAH 8 PUZZLE DENGAN ALGORITMA HILL CLIMBING STEPEST ASCENT LOGLIST HEURISTIK BERBASIS JAVA"

Copied!
6
0
0

Teks penuh

(1)

PENYELESAIAN MASALAH 8 PUZZLE DENGAN ALGORITMA HILL CLIMBING

STEPEST ASCENT LOGLIST HEURISTIK BERBASIS JAVA

Azizah Zakiah

Teknik Informatika, Politeknik Pos Indonesia Jl. Sariasih 54 Bandung 40151

Telp. (022) 2009570 ext 130 E-mail: azizah_zakiah@yahoo.com

ABSTRAKS

8 puzzle merupakan salah satu implementasi dari Artificial Intelegence Dalam proses penyelesaiannya banyak terdapat algoritma-algoritma pencarian yang dapat diterapkan. Solusi 8 puzzle akan lebih cepat diperoleh jika digunakan prinsip array dengan variasi algoritma Steepest-Ascent Hill Climbing (Hill Climbing dengan memilih kemiringan yang paling tajam / curam) dengan parameter heuristik posisi yang benar dan heuristik jarak serta dikombinasikan dengan LogList sebagai penyimpanan state state yang pernah dilalui untuk menanggulangi permasalah pada algoritma hill climbing itu sendiri dan terhindar dari looping state yang pernah dilalui. Metode-metode yang termasuk ke dalam teknik pencarian yang berdasarkan pada fungsi heuristik salah satu diantaranya adalah Hill Climbing, Best First Search, A* (A Bintang). Loglist merupakan tempat penyimpanan setiap kunjungan dari state-state puzzle yang telah dilakukan untuk menghindari looping atau pengulangan terhadap state yang pernah dilalui. Untuk menanggulangi permasalahan pada Steepest-Ascent Hill Climbing.

Kata Kunci: 8Puzzle, heuristik, hill climbing, Steepest-Ascent Hill Climbing , loglist

1. PENDAHULUAN 1.1 Latar Belakang

8 puzzle adalah permainan sliding puzzle ciptaan Sam Loyd yang terdiri dari sebuah bingkai yang berisi kotak kotak angka dalam keadaan teracak dimana sebuah kotak hilang. Karena permainan ini bernama 8 puzzle, maka ukuran bingkai adalah 3 x 3. tujuan dari puzzle ini adalah dengan memakai gerakan geser yang menggunakan ubin kosong untuk mencapai goal state.

8 puzzle merupakan salah satu implementasi dari

Artificial Intelegence. Dalam proses

penyelesaiannya banyak terdapat algoritma-algoritma pencarian yang dapat diterapkan. Dalam hal ini penulis memilih algoritma Steepest-Ascent

Hill Climbing (Hill Climbing dengan memilih

kemiringan yang paling tajam / curam) yang divariasikan dengan fungsi heuristik jarak dan posisi serta loglist sebagai tempat penyimpanan sebagai pembanding terhadap state state yang pernah dilalui untuk menghindari looping atau proses pergeseran ke state yang telah ada sebelumnya.

1.2 Rumusan Masalah

Adapun rumusan masalah pada kasus 8 puzzle ini adalah sebagai berikut:

a. Bagaimana menyelesaikan permasalahan 8 puzzle

b. Algoritma apa yang harus digunakan untuk menyelesaikan permasalahan 8 puzzle

c. Bagaimana aturan pergeseran tile yang diperbolehkan.

d. Parameter apa yang digunakan sebagai patokan dilakukannya pergeseran

e. Apa yang harus dilakukan apabila terjadi state atau posisi sama yang pernah dilalui oleh puzzle f. Fungsi heuristik apa yang harus digunakan untuk

pembanding untuk dilakukan persegeseran state nya.

1.3 Tujuan

Adapun tujuan adalah sebagai berikut: a. Menyelesaikan permasalahan 8 puzzle

b. Menentukan Algoritma yang harus digunakan untuk menyelesaikan permasalahan 8 puzzle c. Menentukan aturan pergeseran tile yang

diperbolehkan.

d. Memperoleh Parameter apa yang digunakan sebagai patokan dilakukannya pergeseran

e. Menhandle apabila terjadi state atau posisi sama yang pernah dilalui oleh puzzle

f. Menentukan Fungsi heuristik apa yang harus digunakan untuk pembanding untuk dilakukan persegeseran state nya.

2. TINJAUAN PUSTAKA

2.1 Fungsi Heuristic (Heuristic Search)

Heuristic berasal dari bahasa Yunani yaitu heuriskein yang berarti “mencari” atau

“menemukan”. Di dalam mempelajari metode metode pencarian ini, kata heuristik diartikan sebagai suatu fungsi yang memberikan suatu nilai berupa biaya perkiraan (estimasi) dari suatu solusi. (Suyanto, 2007).

Metode-metode yang termasuk ke dalam teknik pencarian yang berdasarkan pada fungsi heuristik salah satu diantaranya adalah:

(2)

Best First Search A* (A Bintang)

Terdapat dua jenis fungsi heuristik yang bisa digunakan yaitu:

a. H1 = jumlah kotak yang posisinya benar. b. H2 = jarak antara initialstate dan goalstate. Cara

menghitungnya yaitu dengan menjumlahkan harga mutlak selisih antara kolom dan baris pada initial state dengan goal state.

Total nilai dari h1 dan h2 adalah maksimal 9 yaitu H1 maksimum apabila posisi tile sudah sesuai dengan goalState adalah 9 dan H2 adalah 0 (nol).

Heuristik posisi adalah nilai dari pencocokan antara inisialState dengan goalState apabila:

a. Jumlah ubin yang menempati posisi yang benar: jumlah yang lebih tinggi adalah yang diharapkan (lebih baik).

b. Jumlah ubin yang menempati posisi yang salah: jumlah yang lebih kecil yang diharapkan (lebih baik).

Contoh

a. Jumlah Posisi Ubin yang menempati posisi yang benar adalah [1 2 4 5 6 7 8 ] yaitu h1 = 7. b. Jumlah Posisi Ubin yang menempati posisi yang

salah adalah [0 3 ] yaitu h1 = 2.

Fungsi Heuristik jarak yang diambil adalah yang bernilai 0 (nol)

Contoh

a. Heuristik Jarak angka 6 adalah 0 yaitu: Initial state 6: kolom = 0 ; baris = 0 Goal State 6: kolom = 0 ; baris = 0 Maka Jarak |6| adalah

|kolom goalState-kolom Initialstate| + |baris goalState-baris Initialstate |

= |0-0|+|0-0|  0

b. Heuristik Jarak angka 3 adalah 0 yaitu: Initial state 3: kolom = 0 ; baris = 0 Goal State 3: kolom = 0 ; baris = 1

Maka Jarak |3| = |kolom goalState-kolom Initialstate| + |baris goalState-baris Initialstate | = |0-0|+|1-0|  1

2.2 Hill Climbing

Proses Pengujian dilakukan dengan menggunakan fungsi heuristik. Pembangkitan keadaan berikutnya sangat tergantung pada feedback dari prosedur pengetesan. Tes yang berupa fungsi heuristik ini akan menunjukkan seberapa baiknya nilai terkaan yang diambil terhadap keadaan-keadaan lainnya yang mungkin.(Kusumadewi, 2003) Terdapat dua jenis Hill Climbing yang sedikit berbeda, yakni Simple Hill Climbing (Hill Climbing sederhana) dan Steepest-Ascent Hill Climbing (Hill Climbing dengan memilih kemiringan yang paling tajam / curam). Pada kasus pemecahan masalah 8 puzzle ini penulis memilih Steepest-Ascent Hill

Climbing.

Steepest-Ascent Hill Climbing sebenarnya

hampir sama dengan simple hill climbing. Hanya sajagerakan pencarian tidak dimulai dari posisi paling kiri. Gerakan selanjutnya dicari berdasarkan nilai heuristik terbaik. Dalam hal ini urutan penggunaan operator tidak menentukan penemuan solusi.

Algoritma:

a. Mulai dari keadaan awal, lakukan pengujian: jika merupakan tujuan, maka berhenti ; dan jika tidak, lanjutkan dengan keadaan sekarang sebagai keadaan awal.

b. Kerjakan hingga tujuan tercapai atau hingga iterasi tidak memberikan perubahan pada keadaan sekarang.

1. Tentukan SUCC sebagai niali heuristik terbaik dari successor- successor

2. Kerjakan untuk tiap operator yang digunakan oleh keadaan sekarang:

3. Gunakan operator tersebut dan bentuk keadaan baru.

4. Evaluasi keadaan baru tersebut. Jika merupakan tujuan, keluar, Jika bukan, bandingkan nilai heuristiknya dengan SUCC. Jika lebih baik, jadikan nilai heuristic keadaan baru tersebut sebagai SUCC. Namun jika tidak lebih baik, nilai SUCC tidak berubah.

5. Jika SUCC lebih baik daripada nilai heuristik keadaan sekarang, ubah node SUCC menjadi keadaan sekarang.

Pada Steepest-Ascent Hill Climbing ini ada 3 masalah yang mungkin yaitu:

a. Local optimum keadaan semua tetangga lebih buruk atau sama dengan keadaan dirinya.

b. Plateu keadaan semua tetangga sama dengan keadaan dirinya.

c. Ridge  local optimum yang lebih disebabkan

karena ketidakmampuan untuk menggunakan 2 operator sekaligus.

2.3 Loglist

Loglist merupakan tempat penyimpanan setiap

(3)

dilakukan untuk menghindari looping atau pengulangan terhadap state yang pernah dilalui. Untuk menanggulangi permasalahan pada

Steepest-Ascent Hill Climbing.

3. PEMBAHASAN 3.1 Pemilihan GoalState

Sebelum melalukan pencarian state yang harus dipilih. langkah yang harus dilakukan adalah memilih goalState.

Dalam 8puzzle terdapat 2 buah goalState yaitu: a. GoalState A adalah goalState yang dipilih

apabila jumlah dari perbandingan semua tile dengan tile setelahnya(sebelah kanannya) berjumlah ganjil maka goalStatenya melingkar adalah [1,2,3,8,0,4,7,6,5]

b. GoalState B adalah goalState yang dipilih

apabila jumlah dari perbandingan semua tile dengan tile setelahnya(sebelah kanannya) berjumlah genap maka goalStatenya berurut adalah [0,1,2,3,4,5,6,7,8] (sumber: www.8puzzle.com)

Contohnya:

Diketahui InisialState dibawah ini: 3 1 2

6 4 5 0 7 8

Maka goalstate nya adalah

1. Hitung jumlah bilangan yang berada di sebelah kanan angka 3 yang lebih kecil tapi bukan 0 (nol). 3 1 2 6 4 5 0 7 8 8 ∑(inisialState[i]< initialState[0]) = 2 I=1

2. Hitung jumlah bilangan yang berada di sebelah kanan angka 1 yang lebih kecil tapi bukan 0 (nol). 3 1 2 6 4 5 0 7 8 8 ∑(inisialState[i]< initialState[1]) = 0 I=2 

3. Hitung jumlah bilangan yang berada di sebelah kanan angka 2 yang lebih kecil tapi bukan 0 (nol). 3 1 2 6 4 5 0 7 8 8 ∑(inisialState[i]< initialState[2]) = 0 I=3  

4. Hitung jumlah bilangan yang berada di sebelah kanan angka 6 yang lebih kecil tapi bukan 0 (nol). 3 1 2 6 4 5 0 7 8 8 ∑(inisialState[i]< initialState[3]) = 2 I=4

5. Hitung jumlah bilangan yang berada di sebelah kanan angka 4 yang lebih kecil tapi bukan 0 (nol). 3 1 2 6 4 5 0 7 8 8 ∑(inisialState[i]< initialState[4]) = 0 I=5

6. Hitung jumlah bilangan yang berada di sebelah kanan angka 5 yang lebih kecil tapi bukan 0 (nol). 3 1 2 6 4 5 0 7 8 8 ∑(inisialState[i]< initialState[5]) = 0 I=6

7. Hitung jumlah bilangan yang berada di sebelah kanan angka 7 yang lebih kecil tapi bukan 0 (nol). 3 1 2 6 4 5 0 7 8 8 ∑(inisialState[i]< initialState[7]) = 0 I=8

Jadi diperoleh jumlah: 2 + 0 + 0 + 2 + 0 + 0 + 0  6, maka goalState yang dipilih adalah goalstate B yaitu [ 0 1 2 3 4 5 6 7 8 ]

3.2 Pemilihan Pergeseran State yang diperbolehkan.

State dapat bergerak ke state yang selanjutnya berdasarkan posisi ubin kosong. Operator yang diperbolehkan adalah:

1. Ubin Kosong ke Kanan 2. Ubin Kosong ke Kiri 3. Ubin Kosong ke Atas 4. Ubin Kosong ke Bawah

Kemungkinan Posisi ubin kosong pada state adalah:

1. Posisi Ubin Kosong pada index ke 0 atau pojok kiri atas, maka pergesaran yang diperbolehkan adalah bergeser ke kanan atau ke bawah.

2. Posisi Ubin Kosong pada index ke 1 atau tengah atas, maka pergesaran yang diperbolehkan adalah bergeser ke kanan, kiri atau ke bawah.

3. Posisi Ubin Kosong pada index ke 2 atau pojok kanan atas, maka pergesaran yang diperbolehkan adalah bergeser ke kiri atau ke bawah.

(4)

kiri, maka pergesaran yang diperbolehkan adalah bergeser ke kanan, atas atau bawah.

5. Posisi Ubin Kosong pada index ke 4 atau tepat di tengah, maka pergesaran yang diperbolehkan adalah bergeser ke kanan, kiri, atas atau ke bawah.

6. Posisi Ubin Kosong pada index ke 5 atau pojok kiri atas, maka pergesaran yang diperbolehkan adalah bergeser ke kiri, atas atau ke bawah. 7. Posisi Ubin Kosong pada index ke 6 atau pojok

kiri atas, maka pergesaran yang diperbolehkan adalah bergeser ke kanan atau ke atas.

8. Posisi Ubin Kosong pada index ke 7 atau pojok kiri atas, maka pergesaran yang diperbolehkan adalah bergeser ke kanan, kiri atau ke atas. 9. Posisi Ubin Kosong pada index ke 8 atau pojok

kiri atas, maka pergesaran yang diperbolehkan adalah bergeser ke kiri atau ke atas.

Dari kemungkinan pergeseran-pergeseran yang diperbolehkan dari ubin kosong diatas maka dapat disimpulkan bahwa: 1. Geser Kanan = 1 2. Geser Kiri = -1 3. Geser Atas =-3 4. Geser Bawah = +3 3.3 Algoritma

Algoritma Masukkan inisial state

Procedure Masukkan Inisial State DEKLARASI initialState:array[1..9]of integer i: integer DESKRIPSI For i  0 to 8 do Read(initialState[i]) Endfor.

Algoritma Pemilihan Goalstate

Procedure Pemilihan Goal State DEKLARASI

initialState: array[1..9] of integer goalStateA: array[1..9] of integer goalStateB: array[1..9] of integer goalState: array[1..9] of integer i , j,jumlah: integer

DESKRIPSI

goalStateA = {1,2,3,8,0,4,7,6,5} goalStateB = {0,1,2,3,4,5,6,7,8} jumlah =0

{ mengecek apakah jumlah dari perbandingan semua tile dengan tile setelahnya

(sebelah kanannya) berjumlah ganjil maka goalStatenya melingkar jika tidak

goalStateB}

For i  0 to 8 do For j  i + 1 to 7 do

If (initialState[j]< initialState[i] && initialState[j] != 0) then Jumlah++ endIf endFor. Endfor. If (jumlah % 2 == 1) Then For i  0 to 8 do goalState[i]=goalStateA[i] endFor Else For i  0 to 8 do goalState[i]=goalStateB[i] endFor EndIf

Algoritma pemilihan ubin kosong

Procedure Pemilihan Langkah ubin kosong (input State: array[1..9] of integer)

DEKLARASI i: integer TotalKanan: integer TotalKiri: integer TotalAtas: integer TotalBawah: integer DESKRIPSI For i  0 to 8 do If (State[i]==0) Posisi  i endIf Endfor. Switch(posisi) Case 0: Totalkanan = heuristikPosisi(kanan)+ heuristikJarak(kanan) Totalbawah = heuristikPosisi(bawah)+ heuristikJarak(bawah)

If(Totalkanan > Totalbawah) Then Geser(Kanan) Else Geser(Bawah) endIf Break ; Case 1: Totalkanan = heuristikPosisi(kanan)+ heuristikJarak(kanan) Totalbawah = heuristikPosisi(bawah)+ heuristikJarak(bawah) TotalKiri = heuristikPosisi(kiri)+ heuristikJarak(kiri)

If(Totalkanan > Totalbawah && TotalKanan > TotalKiri) Then

Geser(Kanan)

Else If(Totalbawah > Totalkanan && TotalBawah > TotalKiri) Then Geser(Bawah) Else Geser(Kiri) endIf Break ; Case 2: Totalbawah = heuristikPosisi(bawah)+ heuristikJarak(bawah) TotalKiri = heuristikPosisi(kiri)+ heuristikJarak(kiri)

If(TotalKiri> Totalbawah) Then Geser(Kiri) Else Geser(Bawah) endIf Break ; Case 3: TotalAtas = heuristikPosisi(atas)+ heuristikJarak(atas) Totalbawah = heuristikPosisi(bawah)+

(5)

heuristikJarak(bawah)

TotalKanan = heuristikPosisi(kanan)+ heuristikJarak(kanan)

If(Totalkanan > Totalbawah && TotalKanan > TotalAtas) Then

Geser(Kanan)

Else If(Totalbawah > Totalkanan && TotalBawah > TotalAtas) Then Geser(Bawah) Else Geser(Atas) endIf Break ; Case 4: TotalAtas = heuristikPosisi(atas)+ heuristikJarak(atas) Totalbawah = heuristikPosisi(bawah)+ heuristikJarak(bawah) TotalKanan = heuristikPosisi(kanan)+ heuristikJarak(kanan) TotalKiri = heuristikPosisi(kiri)+ heuristikJarak(kiri)

If(Totalkanan > Totalbawah &&

TotalKanan > TotalAtas && TotalKanan > TotalKiri) Then

Geser(Kanan)

Else If(TotalKiri > Totalkanan && TotalKiri > TotalAtas &&TotalKiri > TotalBawah) Then

Geser(Kiri)

Else If(Totalbawah > Totalkanan && TotalBawah > TotalAtas &&TotalBawah > TotalKiri) Then Geser(Bawah) Else Geser(Atas) endIf Break ; Case 5: TotalAtas = heuristikPosisi(atas)+ heuristikJarak(atas) Totalbawah = heuristikPosisi(bawah)+ heuristikJarak(bawah) TotalKiri = heuristikPosisi(kiri)+ heuristikJarak(kiri)

If(TotalKiri > TotalAtas &&TotalKiri > TotalBawah) Then

Geser(Kiri)

Else If(TotalBawah > TotalAtas &&TotalBawah > TotalKiri) Then Geser(Bawah) Else Geser(Atas) endIf Break ; Case 6: TotalAtas = heuristikPosisi(atas)+ heuristikJarak(atas) TotalKanan = heuristikPosisi(kanan)+ heuristikJarak(kanan)

If(TotalKanan > TotalAtas ) Then Geser(Kanan) Else Geser(Atas) endIf Break ; Case 7: TotalAtas = heuristikPosisi(atas)+ heuristikJarak(atas) TotalKanan = heuristikPosisi(kanan)+ heuristikJarak(kanan) TotalKiri = heuristikPosisi(kiri)+ heuristikJarak(kiri)

If(TotalKanan > TotalAtas && TotalKanan > TotalKiri) Then Geser(Kanan)

Else If(TotalKiri > Totalkanan && TotalKiri > TotalAtas ) Then Geser(Kiri) Else Geser(Atas) endIf Break ; Case 8: TotalAtas = heuristikPosisi(atas)+ heuristikJarak(atas) TotalKiri = heuristikPosisi(kiri)+ heuristikJarak(kiri)

If(TotalKiri > TotalAtas ) Then Geser(Kiri) Else Geser(Atas) endIf Break ; endSwitch. 3.4 Program

Program masukkan state

Program pemilihan goalstate

Program penghitungan nilai jarak heuristik

3.5 Antarmuka

Adapun antarmuka hasil dari program 8 puzzle ini adalah sebagai berikut:

(6)

Gambar 1. Tampilan pertama program 8 puzzle

Gambar 2. Tampilan inisial state program 8 puzzle

Gambar 3. Tampilan hasil program 8 puzzle Tampilan Pelacakkan Pergeseran:

Gambar 4. Tampilan pelacakan pergeseran program 8 puzzle

4. PENUTUP

Kesimpulan pada makalah ini yaitu:

1. Persoalan 8 puzzle dapat diselesaikan dengan menggunakan prinsip array serta algoritma

Steepest-Ascent Hill Climbing yang telah

divariasikan.

2. Solusi 8 puzzle akan lebih cepat diperoleh jika digunakan prinsip array dengan variasi algoritma Steepest-Ascent Hill Climbing (Hill Climbing dengan memilih kemiringan yang paling tajam / curam) dengan parameter heuristik posisi yang benar dan heuristik jarak serta dikombinasikan dengan LogList sebagai penyimpanan state state yang pernah dilalui untuk menanggulangi permasalah pada algoritma hill climbing itu sendiri.  

PUSTAKA

HillClimbing. (Online). (http://en.wikipedia.org/ wiki/Hill_climbing diakses pada tanggal 2 April 2010 pukul 20.00 WIB)

Kusumadewi, S. (2003). Artificial Intelelligence. Jogyakarta: Graha Ilmu.\

Local search (Constraint satisfication). (Online). (http://en.wikipedia.org/wiki/Local_search_%28 constraint_satisfaction%29#Hill_climbing diakses pada tanggal 2 April 2010 pukul 20.00) Suyanto. (2007). ST.,M.Sc. Dalam A. Intellegence,

Searching, Reasoning, Planning and Learning.

Bandung: Informatika Bandung.

What is 8 puzzle. (Online). (http://www.8puzzle.com diakses pada tanggal 2 April 2010 pukul 20.00 WIB )

Yuval Baror. Visualgo N-puzzle. (Online). (http://yuval.bar-or.org/index.php?item=10

diakses pada tanggal 2 April 2010 pukul 20.00 WIB)

Gambar

Gambar 3. Tampilan hasil program 8 puzzle  Tampilan Pelacakkan Pergeseran:

Referensi

Dokumen terkait

Maka Dari Itu kita Surga Pewangi Laundry juga Menjual paket Sample pewangi Laundry isi 100ml, 250 ml , 1 literan Dengan Aneka opsi aroma parfum.. buat memperoleh Paket Sample

Tujuan dari penelitian ini adalah menginisiasi fenomena feroresonansi secara fisik pada transformator tegangan rendah tiga fasa, melakukan pemilihan nilai dan jenis variabel

Jabatan Fungsional adalah Aparatur Sipil Negara yang diberi tugas, wewenang dan hak secara penuh oleh pejabat yang berwenang untuk menyelenggarakan kegiatan yang

Ennek ellenére azt tapasztaljuk – nemcsak a hivatalos levelekben, hanem a misszilisekben is –, hogy a kialakult magyar levélkezdő és -záró formulák helyett latin formulákat

Dalam menangani masalah Perselisihan Hasil Pemilihan Umum (PHPU) Kepala Daerah dan Wakil Kepala Daerah Kabupaten Kotawaringin Barat, Mahkamah Konstitusi (MK) membuat

Jadi, yang dimaksud dengan tindak pidana merusak kelestarian lingkungan wisata adalah perbuatan yang disengaja, maupun kelalaian yang dilakukan oleh wisatawan

dalam belajar, sehingga anak tidak dapat belajar dengan baik. Orang tua yang. terlalu keras kepada anak dapat menyebabkan jauhnya hubungan

Kajian ini berdasarkan kepada kenyataan yang dikemukakan oleh Asef Bayat dalam artikelnya What Is Post Islamism (2005) yang menjelaskan kedatangan fasa baharu iaitu pasca