Anda di halaman 1dari 18

FINAL REPORT

TUGAS I ARTIFICIAL INTELLIGENCE

DYNAMIC WATER JUG DENGAN MENGGUNAKAN


ALGORITMA A*

Kelompok 23 (WaterJug...Oh…WaterJug)
Kelas IF-29-05

OLEH :

NIM NAMA NILAI


113050243 Dhilla Rahadian M
113050252 Radityo Basith
113050258 James Rukka EB

INSTITUT TEKNOLOGI TELKOM


DEPARTEMEN TEKNIK INFORMATIKA
BANDUNG
2008
1. PENDAHULUAN

Algoritma dapat dikatakan sebagai urutan langkah-langkah logis yang sistematis dalam
mencari suatu solusi dari suatu permasalahan yang ada. Pada program komputer, algoritma
terdiri dari sekumpulan langkah-langkah untuk mencapai suatu tujuan, seperti logika if-then-
else maupun pengulangan suatu tindakan atau langkah dengan loop. Begitu pula jika kita
ingin mensimulasikan penyelesaian masalah water jug di komputer, maka diperlukan juga
algoritma yang tepat agar masalah dapat ditangani se-efisien mungkin.
Water jug merupakan salah satu permasalah klasik yang sudah ada sejak lama dan
kadang-kadang masih terjadi dalam kehidupan manusia sekarang. Masalah water jug dapat
dibayangkan dengan suatu tujuan mengisi sebuah wadah yang diketahui kapasitasnya dengan
air secara tepat penuh menggunakan dua atau lebih wadah lain yang juga telah diketahui
kapasitasnya tetapi tidak mempunyai ukuran takaran. Dalam implementasinya, mungkin tidak
ada solusi atau bahkan akan ada lebih dari satu solusi untuk menyesaikan masalah water jug
tersebut. Memang sering kali terdapat banyak cara untuk menyelesaikan suatu masalah, akan
tetapi dari sekian cara tersebut, memilih manakah yang paling optimal akan memerlukan
suatu cara tersendiri.
Gambaran kasus water jug sederhana dan alternatif penyelesaiannya adalah sebagai
berikut:

   
 
Kolam air  3 l  4 l   
1l
         
Wadah A   Wadah B  Wadah C 

Gambar 1: Gambaran kasus water jug

Misalkan kita ingin mengisi penuh wadah C yang berkapasitas 1 liter dengan air dari
kolam dengan menggunakan dua wadah lainnya yaitu wadah A dan wadah B yang
kapasitasnya masing-masing adalah 3 liter dan 4 liter. Maka akan ada beberapa alternatif cara
yang diantaranya sebagai berikut:
1) Alternatif 1
- Awalnya semua wadah kosong
- Isi air ke wadah A sampai penuh
- Tuangkan semua air dari wadah A ke wadah B
- Isi kembali wadah A sampai penuh
- Tuangkan sebagian isi wadah A ke wadah B sampai wadah B penuh
- Kosongkan wadah A
- Tuangkan sebagian isi wadah B ke wadah A sampai wadah A penuh
- Tuangkan sisa air di wadah B ke wadah C
- Akan didapat tepat 1 liter pada wadah C
2) Alternatif 2
- Awalnya semua wadah kosong
- Isikan air ke wadah B sampai penuh
- Tuangkan sebagian isi wadah B ke wadah A sampai wadah A penuh
- Tuangkan sisa air di wadah B ke wadah C
- Akan didapat tepat 1 liter pada wadah C

Dari kedua alternatif tersebut manakah yang lebih optimal dari segi usaha yang kita
lakukan? Dalam hal inilah algoritma A* diperlukan dalam mencari solusi dengan upaya
seoptimal mungkin.

1. LANDASAN TEORI

1.1 Sekilas tentang algoritma A*


Algoritma A* menyelesaikan masalah yang menggunakan graf untuk perluasan ruang
statusnya. Dengan menerapkan suatu heuristik, algoritma ini membuang langkah-langkah
yang tidak perlu dengan pertimbangan bahwa langkah-langkah yang dibuang sudah pasti
merupakan langkah yang tidak akan mencapai solusi yang diinginkan. Algoritma A*
membangkitkan simpul yang paling mendekati solusi. Simpul ini kemudian disimpan
suksesornya ke dalam list sesuai dengan urutan yang paling mendekati solusi terbaik.
Kemudian, simpul pertama pada list diambil, dibangkitkan suksesornya dan kemudian
suksesor ini disimpan ke dalam list sesuai dengan urutan yang terbaik untuk solusi.
Algoritma ini akan mengunjungi secara mendalam (mirip DFS) selama simpul tersebut
merupakan simpul yang terbaik. Jika simpul yang sedang dikunjungi ternyata tidak mengarah
kepada solusi yang diinginkan, maka akan melakukan runut balik ke arah simpul akar untuk
mencari simpul anak lainnya yang lebih menjanjikan dari pada simpul yang terakhir
dikunjungi. Bila tidak ada juga, maka akan terus mengulang mencari ke arah simpul akar
sampai ditemukan simpul yang lebih baik untuk dibangkitkan suksesornya. Strategi ini
berkebalikan dengan algoritma DFS yang mencari sampai kedalaman yang terdalam sampai
tidak ada lagi suksesor yang bisa dibangkitkan sebelum melakukan runut balik, dan BFS yang
tidak akan melakukan pencarian secara mendalam sebelum pencarian secara melebar selesai.
A* baru berhenti ketika mendapatkan solusi yang dianggap solusi terbaik.
Algoritma A* menggabungkan jarak estimasi/heuristik [h(n)] dan jarak
sesungguhnya/cost [g(n)] dalam membantu penyelesaian persoalan. Heuristik adalah nilai
yang memberi harga pada tiap simpul yang memandu A* mendapatkan solusi yang
diinginkan. Dengan heuristik, maka A* pasti akan mendapatkan solusi (jika memang ada
solusinya). Dengan kata lain, heuristik adalah fungsi optimasi yang menjadikan algoritma A*
lebih baik dari pada algoritma lainnya. Namun heuristik masih merupakan estimasi/perkiraan
biasa saja. Sama sekali tidak ada rumus khususnya. Artinya, setiap kasus memiliki fungsi
heuristik yang berbeda-beda.

1.2 Analisis Penyelesaian Water Jug


Sebelum masuk ke penyelesaian, perlu diingat bahwa kondisi awal persoalan water jug
ini adalah sebagai berikut:
- Terdapat 3 wadah, yaitu wadah 3 liter, 4 liter, dan 1 liter
- Diminta untuk mengisikan air ke wadah yang 1 liter secara tepat penuh dengan
menggunakan dua wadah lainnya.
- Diasumsikan sumber air dari kolam tidak terbatas
Umumnya sering kali terdapat lebih dari satu solusi di dalam penyelesaian suatu kasus
water jug, tetapi dalam konteks kali ini, yang diminta adalah solusi terbaik dari sekian solusi
yang ada. Jadi pada dasarnya adalah memilih satu dari seluruh kemungkinan solusi yang ada.
Hal ini berkaitan dengan ekspansi node-node suksesor dari node atau status yang sekarang
sedang terjadi, yang melibatkan sejumlah aturan yang khusus yang akan dijalankan jika
kondisi sekarang memenuhi. Aturan tersebut dapat diibaratkan sebagai suatu tindakan yang
mungkin untuk dilakukan seandainya suatu kondisi terjadi, sebagai contoh, semisalkan
sekarang semua wadah sedang kosong maka berlaku aturan berikut, “Saat wadah A kosong,
maka isi ulang sampai penuh” atau “Isi wadah B sampai penuh”. Begitu pula semisal kondisi
lainnya sekarang sedang terjadi, seperti sekarang wadah B penuh dan wadah A kosong, maka
akan ada
a sejumlaah aturan atau rule yang digu
unakan unntuk meng--expand sta
ate-state
selanjuttnya yang mungkin
m bissa dilakukann.
Berrikut adalahh sejumlah aturan yanng mungkin n terjadi daalam kasus water jug kali ini,
yang akkan digunakkan sebagai aturan untuuk meng-exp
pand suksessor suatu staate:

No State
S Nexxt state Deskrip psi
1 (x,yy) if x = 0 (3, y, z) isi wadah
w A sammpai penuh
2 (x,yy) if y = 4 (xx, 4, z) isi wadah
w B sam
mpai penuh
Tuanggkan seluruhh isi wadah A
3 (x, y) if x <= 1 and x != 0 (0, y, (x))
ke wadaah C
Tuanggkan seluruhh isi wadah B
4 (x, y) if y <= 1 and y != 0 (x, 0, (y))
ke wadaah C
Tuangkaan isi wadahh B ke wadaah A
5 (x,y) if x+
+y >= 3 and y >0 (3, y--(3-x), z)
sam
mpai wadahh A penuh
Tuangkaan isi wadahh A ke wadaah B
6 (x, y) if x+
+y >= 4 andd x>0 (x-(44-y), 4, z)
sam
mpai wadahh B penuh
Tuanggkan seluruhh isi wadah B
7 (x, y) if x+
+y <= 3 andd y>0 (x+
+y, 0, z)
ke wadaah A
Tuanggkan seluruhh isi wadah A
8 (x, y) if x+
+y <= 4 andd x>0 (0, x+y, z)
ke wadaah B
9 (x,yy) if x= 3 (00, y, z) kkosongkan w
wadah A
10 (x,yy) if y = 4 (xx, 0, z) k
kosongkan w
wadah B

Tabel 1 Atu
uran Produkssi Water Jug

Seebagai gambbaran dalam


m bentuk treee-search ad
dalah sebagaimana yanng akan ditu
unjukkan
oleh gam
mbar berikuut:

Prooses 1 :

0,0,0

Prooses 2 :

0,0,0

3
3,0,0 0,4,0
0
Prooses 3:
0,0,0
0

3,0,0 0,4,0

3,4,0 0,0,0 0,3,0

Prooses 4 :

0,0,0

3,0,0 0,4,0

3,4,0 0,0,0 0,,3,0 3,4,,0 0,0,0 3,1,0

Prooses 5 :
0,0,0

3,0,0 0,4,0

3,4,0 0,0,0 0,3,0 3,4,0


0 0,0,0 3,1,0

3,0,,0 0,4,0

Prooses 6 :
0,0,0

3,0,0 0,4
4,0

3
3,4,0 0,0,,0 0,3,0 3,4,0 0,0
0,0 3,1,0
0

3,0,0 0,4,0 3,3,0 3,0,0


0

Prooses 7 :
0,0,0

3,0,0 0,4
4,0

3
3,4,0 0,0,,0 0,3,0 3,4,0 0,0
0,0 3,1,0
0

3,0,0 0,4,0 3,3,0 3,0,0


0 3,0,0 0,4,0
Prooses 8 :
0,0
0,0

3,0,0 0,4,0

3,4,0 0,0
0,0 0,3,0 3,4,0 0,,0,0 3,1
1,0

3,0,0 0,4,0 3
3,3,0 3,0,0 3,0,0 0,4,0 0,1,0 0,4
4,0 3,0,1

Prooses 9 :
0,0
0,0

3,0,0 0,4,0

3,4,0 0,0
0,0 0,3,0 3,4,0 0,,0,0 3,1
1,0

3,0,0 0,4,0 3
3,3,0 3,0,0 3,0,0 0,4,0 0,1,0 0,4
4,0 3,0,1

Gamb
bar 2: Tree Seearch dalam proses
p algorittma A*

Jaddi, setiap kitta menjumppai suatu sim


mpul dalam
m tree-searcch akan dilaakukan pen
ngecekan
kondisi node manaa yang sesuuai dengan rule
r atau atu
uran produkksi water juug di atas, sehingga
s
dengan demikian akan
a diketahhui kondisii-kondisi ap
pa saja yangg mungkin aakan terjadii setelah
keadaann yang sekaarang.
Biaaya yang dikkeluarkan [g(n)] akan selalu di-up
pdate serta akan
a dijumllahkan deng
gan nilai
heuristiiknya [h(n))]. Hasil penjumlahan
p n kedua nilai
n tersebuut [f(n)] aakan menjaadi nilai
m pengurutaan pada frinnge. Fringee akan diuruutkan setiapp kali ada keadaan
pembannding dalam
baru yaang masuk. Kemudian dari fringee tersebut, diambil
d nodde yang berrbiaya [f(n))] paling
kecil yaang mungkkin akan meengantarkann ke node tu
ujuan. Apaabila tidak, maka nilai terkecil
berikutnnyalah yangg akan dicobba untuk dipproses.
Di halaman selanjutnya
s adalah gam
mbaran pro
oses algorittma A* unntuk menyelesaikan
masalahh water jugg yang diim
mplementassikan dalam
m bentuk taabel. Untukk kondisi aw
wal dan
goalnyaa masih menngikuti aturran sebelum
mnya.
Tabel 1: Proses algoritma A* untuk menyelesaikan masalah water jug

Jalur yang terbentuk: (0,0,0) → (0,4,0) → (3,1,0)→ (3,0,1)


Pada dasarnya, algoritma A* menggunakan tree-search sebagai penyimpan kondisi dan
nilai node-node yang mungkin memberikan nilai terbaik dalam ruang pencarian. Selain itu
digunakan pula struktur link-list dengan algoritma deleteFirst dan sortList sebagai fringe atau
buffer. Akan tetapi, dapat pula diimplementasikan dalam bentuk array yang berisi banyak
state dari water jug sebagaimana yang diterapkan dalam tugas besar kali ini.

2. SIAPA MENGERJAKAN APA


Berikut adalah pembagian tugas dalam pembangunan software simulasi water jug dari
perancangan sampai pengujian:
1. Dhilla Rahadian M (113050243)
o User Interface Designer
Î merancang dan mengerjakan semua tata letak komponen program, alur program,
sampai latar belakang aplikasi.
o Software Programmer
Î bekerjasama dengan James sebagai programmer utama dengan menyesuaikan
pada rancangan User Interface dan rancangan program
o Software Tester
Î mengetest sejauh mana daya tahan dan tingkat kebenaran program di tiap tahap
2. James Rukka EB (113050258)
o Programmer Designer
Î merancang algoritma dan mekanisme kerja aplikasi serta mengenalisa masalah
water jug dan solusinya
o Software Programmer
Î bekerjasama dengan Dhila RM sebagai programmer utama dengan menyesuaikan
pada rancangan User Interface dan rancangan program.
o Software Tester
Î mengetest sejauh mana daya tahan dan tingkat kebenaran program di tiap tahap
3. Radityo Basith (113050252)
o Project Manager
Î melakukan manajemen jadwal pengerjaan, menyediakan referensi, serta
memanajemen pendokumentasian program
o System Analyzer
Î analisa terhadap rancangan algoritma maupun user interface program
o Sofware Tester
Î mengetest kebenaran program pada tahap akhir dan usul perbaikan

4. RANCANGAN STRUKTUR DATA & ALGORITMA

Dalam pembuatan program Water Jug kali ini, kelompok kami menggunakan aplikasi
pemrograman Delphi 2007 dengan bahasa pemrograman yang digunakan sama dengan bahasa
pemrograman Pascal. Alasan pemilihan bahasa dan aplikasi pemrograman tersebut yaitu
bahwa bahasa pemrogramannya lebih mudah dimengerti dan bisa memenuhi semua
requirement dari spesifikasi tugas besar yang diberikan (interface harus berbasis GUI).

4.1 Struktur Data, Fungsi Cost dan Aturan Produksi


Untuk struktur datanya sendiri, kelompok kami menggunakan tabel sebagai media
penyimpanan semua informasi mengenai status node baik yang telah di-expand maupun yang
akan segera di-expand. Sedangkan cara menggambarkan kondisi/status node yaitu dengan
notasi {jug1, jug2, jug3}, dimana tiap variabel disimpan dalam suatu field tersendiri pada
tabel. Tabel yang digunakan ada 3 buah tabel yaitu :

a) Tabel1 : berfungsi untuk menyimpan data status node yang menyangkut parent,
g(n), h(n), dan f(n). Record yang digunakan untuk pembentukkan Tabel1
yaitu Rec1.

i jug1 jug2 jug3 parent g(n) h(n) f(n)


.. ... ... ... ... ... ... ...

b) Tabel2 : untuk menyimpan semua informasi node yang telah di-expand dengan
kondisi terurut secara ascending berdasarkan f(n). Record yang digunakan
untuk membentuk Tabel2 yaitu Rec2

i jug1 jug2 jug3 f(n)


.. ... ... ... ...

Ket : isi dari field i tergantung dari nilai field i di Tabel1 yang menunjuk
ke suatu status node.
c) Result : digunakan jika proses expanding node telah selesai dilakukan dan
ditemukan solusi. Tabel ini digunakan untuk mengambil semua index
parent dari node tujuan dengan tracing mundur sampai ke kondisi awal
(node awal).

in in-1 in-2 ... 1

Hal penting berikutnya yaitu bagaimana mencari nilai heuristik cost dan nilai real cost
untuk kasus Water Jug.? Untuk menghitung nilai heurisitik cost, kami menggunakan fungsi
sebagai berikut :

h(n) = Ceil( (xi + yi ) / Abs( Zmax-zn ))

dimana : xi , y i = adalah usaha yang telah dikeluarkan untuk mencapai state tersebut
Zmax-zn = kondisi kekurangan jug goal saat itu untuk ke tujuan (goal state)
h(n) = nilai heuristic cost, dimana return value = hasil pembagian yang
dibulatkan ke atas dengan fungsi ‘Ceil’ (bukan sisa pembagian).
Fungsi h(n) tersebut dapat diartikan sebagai perbandingan usaha yang dilakukan saat itu
terhadap kurangnya air saat itu juga untuk mencapai goal yang diinginkan. Jadi misalkan kita
mengisi suatu jug A sampai penuh maka usaha yang dilakukan adalah xi dan karena jug
kedua tidak dilakukan apa-apa, maka yi = 0, lalu usaha yang telah dilakukan tersebut
dibandingkan dengan tujuan yang ingin dicapai saat itu. Sedangkan untuk menghitung nilai
real cost, kami menggunakan besarnya usaha yang digunakan untuk memasukkan air ke
suatu jug, membuang air dari suatu jug, ataupun untuk memindahkan air dari jug satu ke jug
yang lain dengan ditambah real cost sebelumnya. Misal: kapasitas masing-masing jug yaitu
{4,3,1}, current state {0,0,0}, dan next-state {4,0,0}, maka nilai real cost = 4+0 = 4.
Hal berikutnya yang harus didefinisikan yaitu mengenai aturan-aturan produksi yang
merupakan rule dalam meng-expand suatu node. Dalam program, semua aturan produksi ini
diletakkan dalam satu procedure ExpandNode(j1, j2, gol : Integer), dimana secara
keseluruhan aturan produksi tersebut dapat dilihat pada tabel berikut :
No State Next state Deskripsi
1 (x,y) if x = 0 (3, y, z) isi wadah A
2 (x,y) if y = 0 (x, 4, z) isi wadah B

(x, y) if x <= 1 Tuangkan seluruh isi


3 (0, y, (x))
and x != 0 wadah A ke wadah C

(x, y) if y <= 1 Tuangkan seluruh isi


4 (x, 0, (y))
and y != 0 wadah B ke wadah C

Tuangkan isi wadah B


(x,y) if x+y >= 3
5 (3, y-(3-x), z) ke wadah A sampai
and y>0
wadah A penuh
Tuangkan isi wadah A
(x, y) if x+y >= 4
6 (x-(4-y), 4, z) ke wadah B sampai
and x>0
wadah B penuh
(x, y) if x+y <= 3 Tuangkan seluruh isi
7 (x+y, 0, z)
and y>0 wadah B ke wadah A

(x, y) if x+y <= 4 Tuangkan seluruh isi


8 (0, x+y)
and x>0 wadah A ke wadah B
9 (x,y) if x = 3 (0, y, z) kosongkan wadah A
10 (x,y) if y = 4 (x, 0, z) kosongkan wadah B

Tabel 1: Aturan Produksi Water Jug 

Mengingat tidak semua kombinasi jug/wadah yang diinputkan user memiliki solusi,
maka diperlukan suatu fungsi khusus yang berperan untuk mengecek apakah inputan user
tersebut memiliki solusi dan valid untuk dikerjakan atau tidak. Dalam algoritma kami, fungsi
tersebut disebut fungsi CekJug() dengan hasil Boolean yang mengembalikan nilai True jika
valid dan False jika tidak valid/tidak mungkin ada solusi. Prinsip yang kami gunakan, bahwa
suatu kombinasi untuk 3 buah jug akan, misal A, B, dan C dimana jug C adalah goal, akan
valid dan akan ada solusi jika memenuhi kalimat berikut:

A or B or (A+B) or abs(A-B) or (A mod B) or (B mod A) € factor-faktor C

dengan adanya fungsi ini, maka dapat dihindari loop pencarian tak hingga (karena tak ada
solusi) yang dapat menyebabkan program mengalami crash.
Di samping itu, masih ada procedur/function pendukung lain seperti InsertTabel1,
InsertTabel2, SortTabel2, berbagai atribut global dan lain-lain yang akan ditunjukkan
kegunaannya dalam penjelasan algoritma program berikut ini.
4.2 Algoritma Program
Algortima program yang kami buat, tidak jauh beda dengan yang telah diajarkan
diperkuliahan mengenai A* search. Alur jalannya program yaitu sebagai berikut:
a) Pada kondisi awal, akan di-assign status awal {0,0,0}, dimana setelah menghitung
nilai heuristic cost dan real cost, maka informasi tersebut akan langsung diinsertkan
ke dalam Tabel1 dan Tabel2.
Di Tabel2 akan dilakukan pengurutan ascending berdasarkan nilai f(n). Kemudian,
informasi yang berada di nomor urut 1 (index2=1) akan di delete yang dilakukan oleh
procedure DelFirstTabel2(), dimana nilai yang di-delete tersebut dimasukkan dalam
variabel global i, node, f. Pada saat goal_state dicapai, informasi mengenai goal_state
yang dicapai dapat dilihat pada variabel global ini.
Di program juga disediakan variabel global jug_1, jug_2, jug_goal yang akan di-
update nilainya setiap kali proses insert ke tabel akan dilakukan. Proses ini dilakukan
oleh procedure KondisiJug(a, b, c : Integer).
b) Setelah itu, proses akan berlanjut ke perulangan (looping) meng-expand node
berdasarkan variabel i, node, f, yang terdiri dari proses-proses seperti pada langkah 1.
Looping terus dijalankan selama index2 (index untuk Tabel2) <> 1 dan jug_gol <>
gol_maks.
c) Pada saat kondisi looping tidak terpenuhi (program running succesfully), maka akan
dilakukan procedure GetParent(), yang menjalankan proses insert ke tabel Result
untuk semua index di Tabel1 yang menjadi jalur dari goal_state ke state {0,0,0}
berdasarkan informasi parent goal_state yang ada di variabel global i.
d) Langkah terakhir yaitu membaca tabel Result dari index terakhir ke index 1 untuk
memperoleh informasi bagaimana air dipindahkan dari satu jug ke jug lain hingga
memenuhi jug_gol (mencapai goal_state). Prose ini dilakukan oleh procedure
TimerTimer(Sender: TObject) yang disertai simulasi perpindahan nilai kapasitas air.
5. ANALISIS IMPLEMENTASI

Kapasitas  Node di‐ Node 


No  Jug A  Jug B  Jug Goal  expand  diproses  Waktu  Hasil 
1  12  12  12  11  3  0.003  Complete 
2  1  1  1  11  3  0.005  Complete 
3  4  3  1  18  7  0.005  Complete 
4  22  25  3  18  7  0.005  Complete 
5  45  30  15  20  8  0.005  Complete 
6  5  3  2  18  7  0.005  Complete 
7  40  25  15  28  11  0.005  Complete 
8  16  4  8  32  10  0.005  Complete 
9  6  2  4  35  11  0.005  Complete 
10  36  20  16  28  11  0.006  Complete 
11  3  7  2  106  45  0.007  Complete 
12  14  6  4  113  48  0.007  Complete 
13  4  1  3  176  56  0.008  Complete 
14  35  5  15  166  53  0.008  Complete 
15  10  1  3  166  53  0.008  Complete 
16  7  2  6  199  64  0.009  Complete 
17  10  3  2  272  117  0.012  Complete 
18  10  3  4  504  177  0.025  Complete 
19  14  1  4  939  301  0.096  Complete 
20  14  1  4  939  301  0.096  Complete 
 

Table 2:Table percobaan terhadap 20 kasus water jug 

 
Grafik Perbandingan Suatu Problem Water 
Jug Terhadap Waktu
0,12

0,1

0,08

0,06

0,04

0,02

0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Grafik 1: Kebutuhan waktu solusi untuk kasus‐kasus di tabel sebelumnya 

Dapat dilihat bahwa pertumbuhan kebutuhan waktu dapat meningkat secara signifikan pada
kasus tertentu. Berdasarkan beberapa kali percobaan, dapat disimpulkan bahwa suatu kasus
dalam water jug akan membutuhkan solusi dan waktu yang lebih panjang jika terdapat
perbedaan yang besar antara jug goal dengan jug yang digunakan untuk mengisinya.
Percobaan diatas semuanya complete karena setiap masalah yang diajukan hanya yang
memiliki solusi. Seandai suatu kasus tidak memiliki solusi, maka program secara otomatis
akan memberi pemberitahuan. Menurut pengamatan pula, program akan selalu complete
dengan catatan node yang diperlukan tidak melebihi kapasitas buffer program.
6. KESIMPULAN

- Algoritma A* merupakan perbaikan dari algoritma UCS dengan meminimalisasi jumlah


node yang diekspansi dalam tree-search, serta mampu memberikan solusi optimal
terhadap suatu masalah pencarian.
- A* adalah suatu teknik optimasi dari algoritma traversal graf. yang disebabkan oleh
penerapan heuristik pada saat pembangkitan pohon statusnya.
- Meskipun mampu memberikan solusi optimal serta algoritma yang sederhana, pada
kenyataannya algoritma A* juga memboroskan memori dalam segi pengurutan biaya-
biaya yang ada setiap kali ada biaya yang masuk.
7. Daftar Pustaka
[1] Suyanto. 2007. Artificial Intelegence. Bandung. Penerbit Informatika.
[2] Munir, Rinaldi. 2006. “Strategi Algoritmik”. Departemen Teknik Informatika, Institut
Teknologi Bandung
[3] Wikipedia Foundation, Inc. “A * Search Algorithm”.
http://en.wikipedia.org/wiki/A*_search_algorithm. Diakses tanggal 2 Maret 2008
pukul 21.00
[4] Jones, Justin Hayes. “A * Algorithm Tutorial”.
http://www.geocities.com/SiliconValley/Lakes/4929/astar.html. Diakses tanggal 2
Maret 2008 pukul 21.15
[5] Lester, Patrick. “A* Pathfinding for Beginners”.
http://www.gamedev.net/reference/articles/article2003.asp. Diakses tanggal 2 Maret
2008 pukul 21.20
[6] Rich, Mark. “Formalizing Search Spaces”.
http://pages.cs.wisc.edu/~richm/cs540/notes/search-un.html. Diakses tanggal 2 Maret
2008 pukul 21.30
Lampiran

Screen shot aplikasi:

Anda mungkin juga menyukai