Dokumen tersebut membahas penyelesaian masalah kotak delapan menggunakan berbagai algoritma pencarian graf seperti Depth First Search, Breadth First Search, Best First Search dengan heuristic MisMatch dan Manhattan Distance. Algoritma heuristic cenderung menghasilkan solusi lebih cepat dengan jumlah iterasi dan simpul yang dibangkitkan lebih sedikit dibandingkan algoritma sistematis.
1. Anthon R Tampubolon (23510311)
I Putu Agus Eka Pratama (23510310)
I Made Andhika (23510307)
Eko Budi Setiawan (23511032)
M. Tirta Mulia (23511037)
Eight Puzzle – Kotak 8
2. Puzzle-8 adalah permainan menyusun kotak-kotak berlabel dari keadaan
awal (initial state) yang acak menjadi tersusun dalam suatu format
tertentu (goal state). Permainan ini terdiri dari 3 baris dan 3 kolom (9
kotak), 8 kotak berlabel dan 1 kotak kosong. Pernyusunan kotak dilakukan
dengan mengeser kotak-kotak berlabel satu per satu ke arah kotak
kosong secara vertikal atau horizontal
Permainan Kotak 8
2 8 3 4 5 6 7 1 0 1 2 3 4 5 6 7 8 0
TileState
3. Fakta
deskripsi tentang objek yang menjadi perhatian
Kaidah
aturan yang bila diterapkan pada suatu keadaan
(state) menghasilkan keadaan yang baru
Inferensi
untaian dari kaidah untuk bergerak dari keadaan
awal (initial states) menuju keadaan sasaran
(goal states)
Komponen AI
4. Penerapan AI dalam Permasalahan
Kotak 8
FAKTA Initial State, Current State, dan Goal State
Penerapan dalan Program
get_new_data merupakan prosedur untuk pengambilan data dari database
5. Penerapan AI dalam Permasalahan
Kotak 8
Rules Kanan, Kiri, Atas, dan Bawah
Metode yang digunakan adalah metode switch
2 8 3 4 5 6 7 1 0 2 8 3 0 5 6 7 1 4
6. Penerapan AI dalam Permasalahan
Kotak 8
Inferensi
Depth First Search dan Breadth First Search
Sistematis Search
Heuristic Search
MisMatch dan Manhattan Distance
Sistematis Search dan Heuristic Search
7. Depth First Search
Prosedur
Simpul yang lebih dalam diperiksa terlebih dahulu
Penelusuran simpul-simpul pada suatu cabang sampai kedalaman yang ditentukan.
1. Berikan simpul awal pada daftar open
2. Loop: if open = kosong then exit (fail)
8. Depth First Search
Simpul yang lebih dalam diperiksa terlebih dahulu
Penelusuran simpul-simpul pada suatu cabang sampai kedalaman yang ditentukan.
3. n : = first (open)
9. Depth First Search
Simpul yang lebih dalam diperiksa terlebih dahulu
Penelusuran simpul-simpul pada suatu cabang sampai kedalaman yang ditentukan.
5. Remove (n, open)
Melabelkan “Closed” pada Current State
4. if goal (n) then exit (success)
10. 6. Ekspansikan n, berikan semua simpul anak pada kepala open
dan bubuhkan pointer dari simpul anak ke n
Depth First Search
Simpul yang lebih dalam diperiksa terlebih dahulu
Penelusuran simpul-simpul pada suatu cabang sampai kedalaman yang ditentukan.
If Depth <= Val(Text7.Text) Then Menyatakan Batasan Kedalaman yang
harus di telusuri
7. Kembali ke Loop
11. Depth First Search
Simpul yang lebih dalam diperiksa terlebih dahulu
Penelusuran simpul-simpul pada suatu cabang sampai kedalaman yang ditentukan.
Prosedur AddOpenList()
• Nilai = Nilai Prioritas yang digunakan untuk memeringkatkan Kanan, Kiri, Atas dan Bawah
• Secara Default, Nilai = 0
12. Testing Program DFS
B A Ka Ki
Ki Ka
Jumlah Langkah Solusi
Jumlah Iterasi
Jumlah State yang dibangkitkan
Batas Kedalaman 6
4 Step
41 Step
45 State
Route : Atas, Kiri, Bawah, Kanan
13. Breadth First Search
Evaluasi dilakukan terhadap simpul-simpul pada suatu level sebelum dilanjutkan
pada level berikutnya
Prosedur
1. Berikan simpul awal pada daftar open
2. Loop: if open = kosong then exit (fail)
14. Breadth First Search
Evaluasi dilakukan terhadap simpul-simpul pada suatu level sebelum dilanjutkan
pada level berikutnya
3. n : = first (open)
get_new_data merupakan prosedur untuk pengambilan data dari database
15. Breadth First Search
Evaluasi dilakukan terhadap simpul-simpul pada suatu level sebelum dilanjutkan
pada level berikutnya
4. if goal (n) then exit (success)
5. Remove (n, open)
Melabelkan “Closed” pada Current State
16. Breadth First Search
Evaluasi dilakukan terhadap simpul-simpul pada suatu level sebelum dilanjutkan
pada level berikutnya
6. Ekspansikan n. Berikan pada ekor open semua simpul anak
yang belum muncul pada open atau closed dan bubuhkan
pointer ke n.
If Depth <= Val(Text7.Text) Then Menyatakan Batasan Kedalaman yang
harus di telusuri
7. Kembali ke Loop
17. Prosedur AddOpenList()
• get_new_data3(state) adalah Prosedure untuk mengecek State sudah pernah
dibangkitkan melalui Parent State yang lain
Breadth First Search
Evaluasi dilakukan terhadap simpul-simpul pada suatu level sebelum dilanjutkan
pada level berikutnya
18. Testing Program BFS
B A Ka Ki
Ki Ka
Jumlah Langkah Solusi
Jumlah Iterasi
Jumlah State yang dibangkitkan
4 Step
32 Step
60 State
Route : Atas, Kiri, Bawah, Kanan
19. Best First Search
MisMatch
Pembangkitan simpul anak didasarkan pada hasil perbandingan nilai heuristik tiap simpul
yang dibuka. Simpul dengan nilai heuristik terkecil akan dibuka terlebih dahulu. Nilai
heuristik diperoleh dari penjumlahan tile yang tidak tepat (mismatch tiles)
Prosedur
1. Berikan simpul awal pada daftar open
2. Loop: if open = kosong then exit (fail)
20. 3. n : = first (open)
Best First Search
MisMatch
Pembangkitan simpul anak didasarkan pada hasil perbandingan nilai heuristik tiap simpul
yang dibuka. Simpul dengan nilai heuristik terkecil akan dibuka terlebih dahulu. Nilai
heuristik diperoleh dari penjumlahan tile yang tidak tepat (mismatch tiles)
21. 4. if goal (n) then exit (success)
5. Remove (n, open)
Melabelkan “Closed” pada Current State
Best First Search
MisMatch
Pembangkitan simpul anak didasarkan pada hasil perbandingan nilai heuristik tiap simpul
yang dibuka. Simpul dengan nilai heuristik terkecil akan dibuka terlebih dahulu. Nilai
heuristik diperoleh dari penjumlahan tile yang tidak tepat (mismatch tiles)
22. 6. Ekspansikan n, berikan semua simpul anak pada kepala open
dan bubuhkan pointer dari simpul anak ke n
7. Kembali ke Loop
Best First Search
MisMatch
Pembangkitan simpul anak didasarkan pada hasil perbandingan nilai heuristik tiap simpul
yang dibuka. Simpul dengan nilai heuristik terkecil akan dibuka terlebih dahulu. Nilai
heuristik diperoleh dari penjumlahan tile yang tidak tepat (mismatch tiles)
23. Prosedur AddOpenList()
• get_new_data3(state) adalah Prosedure untuk mengecek State sudah pernah
dibangkitkan melalui Parent State yang lain
Best First Search
MisMatch
Nilai Heuristik dijumlahkan setiap ada perbedaan
Posisi pada current state dan goal state
24. Testing Program MisMatch
B5 A4 Ka5Ki4
Jumlah Langkah Solusi
Jumlah Iterasi
Jumlah State yang dibangkitkan
4 Step
4 Step
10 State
Route : Atas, Kiri, Bawah, Kanan
Ka5Ki3
B2
Ka0 B3
25. Best First Search
Manhattan Distance
Manhattan Distance adalah jumlah gerakan minimum yang diperlukan oleh sebuah kotak
angka untuk berpindah ke goal statenya.
Prosedur
1. Berikan simpul awal pada daftar open
2. Loop: if open = kosong then exit (fail)
26. 3. n : = first (open)
Best First Search
Manhattan Distance
Manhattan Distance adalah jumlah gerakan minimum yang diperlukan oleh sebuah kotak
angka untuk berpindah ke goal statenya.
27. 4. if goal (n) then exit (success)
5. Remove (n, open)
Melabelkan “Closed” pada Current State
Best First Search
Manhattan Distance
Manhattan Distance adalah jumlah gerakan minimum yang diperlukan oleh sebuah kotak
angka untuk berpindah ke goal statenya.
28. 6. Ekspansikan n, berikan semua simpul anak pada kepala open
dan bubuhkan pointer dari simpul anak ke n
7. Kembali ke Loop
Best First Search
Manhattan Distance
Manhattan Distance adalah jumlah gerakan minimum yang diperlukan oleh sebuah kotak
angka untuk berpindah ke goal statenya.
30. Testing Program Manhattan Distance
B6 A4 Ka6Ki4
Jumlah Langkah Solusi
Jumlah Iterasi
Jumlah State yang dibangkitkan
4 Step
4 Step
10 State
Route : Atas, Kiri, Bawah, Kanan
Ka6Ki4
B2
Ka0 B4
31. Kesimpulan
Keterangan DFS BFS MisMatch Manhattan
Jumlah Langkah Solusi 4 4 4 4
Jumlah Iterasi 41 32 4 4
Jumlah State yang dibangkitkan 45 60 10 10
2 8 3 4 5 6 7 1 0 1 2 3 4 5 6 7 8 0