Penerapan Algoritma BFS, DFS, DLS dan IDS dalam Pencarian Solusi Water Jug Problem

dokumen-dokumen yang mirip
BFS dan DFS. Bahan Kuliah IF2151 Strategi Algoritmik. Oleh: Rinaldi Munir

Algoritma Traversal di dalam Graf

Penerapan DFS dan BFS dalam Pencarian Solusi Game Japanese River IQ Test

Penerapan Algoritma DFS dan BFS untuk Permainan Wordsearch Puzzle

Penerapan Algoritma Greedy dan Algoritma BFS untuk AI pada Permainan Greedy Spiders

Penerapan Algoritma DFS pada Permainan Sudoku dengan Backtracking

PENERAPANAN ALGORITMA BFS, DFS, DAN UCS UNTUK MENCARI SOLUSI PADA MASALAH ROMANIA

ALGORITMA PENCARIAN SIMPUL SOLUSI DALAM GRAF

Perbandingan BFS, DFS dan Greedy pada Permainan Logika Crossing Bridge

Bab 2 2. Teknik Pencarian

Implementasi Algoritma DFS pada permainan Monument Valley

Aplikasi Graf Breadth-First Search Pada Solver Rubik s Cube

PENERAPAN ALGORITMA BFS PADA CHINESE SLIDE BLOCK PUZZLE (KLOTSKI)

Penerapan Algoritma Branch and Bound untuk Penentuan Jalur Wisata

PENERAPAN ALGORITMA A* PADA PERMASALAHAN OPTIMALISASI PENCARIAN SOLUSI DYNAMIC WATER JUG

PENERAPAN ALGORITMA BFS DFS DAN KNUTH-MORRIS-PRATT PADA PENCARIAN BERKAS DALAM KOMPUTER

Implementasi Algoritma BFS dan DFS dalam Penyelesaian Token Flip Puzzle

Implementasi Algoritma DFS pada Pewarnaan Gambar Sederhana Menggunakan Bucket tool

Penerapan Algoritma BFS dan DFS dalam Permainan Ular Tangga

Pencarian Solusi Permainan Flow Free Menggunakan Brute Force dan Pruning

PENERAPAN ALGORITMA RUNUT-BALIK DALAM PENCARIAN SOLUSI TEKA-TEKI BATTLESHIP

Perbandingan Algoritma Brute Force dan Breadth First Search dalam Permainan Onet

1, 2, 3

SOLUSI ALGORITMA BACKTRACKING DALAM PERMAINAN KSATRIA MENYEBRANG KASTIL

MASALAH, RUANG KEADAAN & PENCARIAN

Aplikasi dan Analisis Algoritma BFS dan DFS dalam Menemukan Solusi pada Kasus Water Jug

Penerapan Algoritma Runut-Balik (Backtracking) pada Permainan Nurikabe

Penerapan BFS dan DFS pada Pencarian Solusi

Penerapan Algoritma BFS dan DFS dalam Mencari Solusi Permainan Rolling Block

Aplikasi Branch and Bound Pada Pencarian Jalan Pada Software Navigasi

SOLUSI PERMAINAN CHEMICALS DENGAN ALGORITMA RUNUT BALIK

PENGUNAAN DUA VERSI ALGORITMA BACKTRACK DALAM MENCARI SOLUSI PERMAINAN SUDOKU

PERBANDINGAN ALGORITMA BFS DAN DFS DALAM PEMBUATAN RUTE PERJALANAN OBJEK PERMAINAN 2 DIMENSI

Perbandingan Algoritma Depth-First Search dan Algoritma Hunt-and-Kill dalam Pembuatan Labirin

Algoritma Branch & Bound untuk Optimasi Pengiriman Surat antar Himpunan di ITB

Penggunaan Algoritma DFS dalam Pencarian Strategi Permainan Catur

PENERAPAN ALGORITMA BRANCH AND BOUND DALAM MENENTUKAN RUTE TERPENDEK UNTUK PERJALANAN ANTARKOTA DI JAWA BARAT

PENERAPAN ALGORITMA BACKTRACKING PADA PERMAINAN WORD SEARCH PUZZLE

PENYELESAIAN MASALAH MISSIONARIES DAN CANNIBAL MENGGUNAKAN ALGORITMA DFS DENGAN VARIASI PENGHINDARAN REPEATED STATE

Algoritma Runut-balik (Backtracking) Bahan Kuliah IF2251 Strategi Algoritmik Oleh: Rinaldi Munir

Aplikasi Algoritma Traversal Dalam Binary Space Partitioning

Penerapan Algoritma Backtracking untuk Menyelesaikan Permainan Hashiwokakero

Penyelesaian Permasalahan Knight s Tour Menggunakan Algoritma Breadth First Search (BFS)

Pemecahan Masalah Knapsack dengan Menggunakan Algoritma Branch and Bound

MAKALAH STRATEGI ALGORITMIK (IF 2251) ALGORITMA RUNUT BALIK DALAM GAME LABIRIN

Analisis Beberapa Algoritma dalam Menyelesaikan Pencarian Jalan Terpendek

METODE BRANCH AND BOUND UNTUK MENEMUKAN SHORTEST PATH

Analisis Pengimplementasian Algoritma Greedy untuk Memilih Rute Angkutan Umum

Pelacakan dan Penentuan Jarak Terpendek terhadap Objek dengan BFS (Breadth First Search) dan Branch and Bound

Breadth/Depth First Search (BFS/DFS) Bahan Kuliah IF2211 Strategi Algoritmik Oleh: Rinaldi Munir Update: Nur Ulfa Maulidevi 2 Maret 2015

Pembentukan pohon pencarian solusi dan perbandingan masingmasing algoritma pembentuknya dalam simulasi N-Puzzle

Kecerdasan Buatan. Penyelesaian Masalah dengan Pencarian... Pertemuan 02. Husni

Penerapan Algoritma Runut-balik pada Permainan Math Maze

Pencarian Solusi Permainan Fig-Jig Menggunakan Algoritma Runut-Balik

Pemanfaatan Algoritma BFS pada Graf Tak Berbobot untuk Mencari Jalur Terpendek

IMPLEMENTASI ALGORITMA BREADTH FIRST SEARCH DAN STRING MATCHING PADA SISTEM PAKAR

Penggunaan Algoritma DFS dan BFS pada Permainan Three Piles of Stones

Penerapan Algoritma Branch and Bound untuk Optimasi Rute Penempelan Poster di Papan Mading ITB

Implementasi Intuitif Penyelesaian Labirin dengan Algoritma Depth-First Search

Penggunaan Algoritma Backtracking Untuk Menentukan Keisomorfikan Graf

Penerapan strategi BFS untuk menyelesaikan permainan Unblock Me beserta perbandingannya dengan DFS dan Branch and Bound

Analisis Penerapan Algoritma Backtracking Pada Pencarian Jalan Keluar di Dalam Labirin

Penerapan BFS dan DFS pada Pencarian Solusi

Algoritma Branch and Bound dalam Kegunaannya Memecahkan Assignment Problem

Penerapan Algoritma Backtracking pada Pewarnaan Graf

Penggunaan Algoritma DFS dan BFS Dalam Pencarian Jarak Tedekat di Game Civilization V

Pemanfaatan Algoritma Runut-Balik dalam Menyelesaikan Puzzle NeurOn dalam Permainan Logical Cell

Kode MK/ Pemrograman Terstruktur 2

PENGGUNAAN ALGORITMA BRANCH AND BOUND UNTUK MENYELESAIKAN PERSOALAN PENCARIAN JALAN (PATH-FINDING)

Penerapan Algoritma Transversal pada Graf dan Algoritma Pencocokan String dalam Sistem Jual-Beli Tiket Bioskop

PERBANDINGAN APLIKASI ALGORITMA BRUTE-FORCE DAN KOMBINASI ALGORITMA BREADTH FIRST SEARCH DAN GREEDY DALAM PENCARIAN SOLUSI PERMAINAN TREASURE HUNT

Breadth/Depth First Search. Bahan Kuliah IF2211 Strategi Algoritmik Oleh: Rinaldi Munir Update: Masayu Leylia Khodra 22 September 2013

TOPOLOGICAL SORT dengan DFS dan METODE LAIN

Kecerdasan Buatan Penyelesaian Masalah dengan Pencarian

Penggabungan Algoritma Brute Force dan Backtracking dalam Travelling Thief Problem

Pencarian Pohon Solusi Permainan Alchemy Menggunakan Algoritma BFS dan DFS

Mendeteksi Blob dengan Menggunakan Algoritma BFS

PENERAPAN ALGORITMA RUNUT BALIK DALAM PERMAINAN TEKA-TEKI SILANG

Algoritma Runut-balik (Backtracking)

METODE PENCARIAN BFS dan DFS

Penggunaan Metode Depth First Search (DFS) dan Breadth First Search (BFS) pada Strategi Game Kamen Rider Decade Versi 0.3

Implementasi Algoritma Backtracking untuk Memecahkan Puzzle The Tile Trial pada Permainan Final Fantasy XIII-2

Penerapan Algoritma Backtracking. Blind Search untuk Menentukan Penjadwalan Mengajar.

Overview. Searching. Deskripsi. Intro Searching 2/4/2012 IF-UTAMA 1

Penerapan Pohon dengan Algoritma Branch and Bound dalam Menyelesaikan N-Queen Problem

Penerapan Search Tree pada Penyelesaian Masalah Penentuan Jalur Kota Terpendek.

ANTIMAGIC PUZZLE. Alwi Afiansyah Ramdan

ANALISIS PENERAPAN ALGORITMA RUNUT-BALIK DALAM PENCARIAN SOLUSI PERSOALAN LOMPATAN KUDA

METODE PENCARIAN DAN PELACAKAN

Penyelesaian Permainan 3 missionaries and 3 cannibals Dengan Algoritma Runut-Balik

Pemanfaatan Pohon dalam Realisasi Algoritma Backtracking untuk Memecahkan N-Queens Problem

METODE PENCARIAN. Irvanizam Zamanhuri, M.Sc Dr. Taufiq A. Gani, M.EngSc

Branch & Bound. Bahan Kuliah IF2211 Strategi Algoritma Rinaldi Munir & Masayu Leylia Khodra

Penerapan Algoritma DFS dalam Menyelesaikan Permainan Buttons & Scissors

PENERAPAN ALGORITMA RUNUT-BALIK (BACKTRACKING) DALAM PENYELESAIAN PERMAINAN SUDOKU

PENGGUNAAN ALGORITMA GREEDY DALAM PERMAINAN KARTU BLACK JACK

Memecahkan Puzzle Hidato dengan Algoritma Branch and Bound

Penerapan Algoritma Branch and Bound pada Penentuan Staffing Organisasi dan Kepanitiaan

Aplikasi Algoritma B&B untuk Memperoleh Poin Maksimum pada Permainan Diner Dash

Penerapan Algoritma Backtrack pada Knight s Tour

Transkripsi:

Penerapan Algoritma BFS, DFS, DLS dan IDS dalam Pencarian Solusi Water Jug Problem Abstrak Nursyamsiah Pertiwi 1, Esty Hutami Dewi Lubis 2, Lafrania Taufik 3 Laboratorium Ilmu dan Rekayasa Komputasi Departemen Teknik Informatika, Institut Teknologi Bandung Jl. Ganesha 10, Bandung E-mail : if14059@students.if.itb.ac.id 1, if14071@students.if.itb.ac.id 2, if14097@students.if.itb.ac.id 3 Dalam dunia Informatika banyak masalah klasik yang menjadi pembahasan di masa sekarang antara lain TSP (Travelling Salesman Problem), Graf Colouring, N-Queen dan sebagainya. Kali ini, penulis membahas mengenai WaterJug Problem. Water Jug Problem merupakan suatu contoh masalah yang membutuhkan konversi situasi menjadi situasi lain yang diinginkan dengan menggunakan sekumpulan operasi tertentu. Biasanya permasalahan ini ditemukan dalam bidang artificial intelligence. Dalam pencarian solusi untuk Water Jug Problem ini, penulis memakai BFS, DFS, DLS dan IDS yang dirasakan cocok dalam penyelesaian masalah ini. Kata kunci: DFS, BFS,DLS, IDS, Water Jug Problem 1. Pendahuluan Algoritma BFS, DFS, DLS, dan IDS, adalah yang digunakan dalam penelusuran (mengunjungi) graf. Keempat ini dikategorikan ke dalam Blind Search atau Exhautives Search. Karena dengan keempat nya semua simpul harus dikunjungi, dalam kasus terburuk. Water Jug problem adalah masalah yeng membutuhkan konversi situasi menjadi situasi lain yang diinginkan dengan menggunakan sekumpulan operasi tertentu. Dan masalah ini dapat di selesaikan dengan werepresentasikan semua kemungkinan hasil dalam sebuah pohon. Maka masalh ini dapat dikategorikan sebagai masalah yang membutuhkan penelusuran graf. Oleh karena itu penulis berpendapat bahwa masalah ini dapat diselesaikan dengan baik dengan menggunakan keempat tersebut (BFS, DFS, DLS, dan IDS). 1.1 Tujuan Penulisan 1. Menyelesaikan masalah Water Jug dengan penelusuran graf 2. Mengenalkan DLS dan IDS sebagai alternatif penyelesaian persoalan yang menyangkut penelusuran graf. 2. Algoritma Berikut adalah penjelasan singkat dari yang akan digunakan untuk mendapatkan penyelesaian terbaik dari Water Jug Problem 2.1. BFS (Breadth First Search) BFS adalah sebagai berikut: 1. Kunjungi simpul v 2. Kunjungi semua simpul yang bertetangga dengan simpul v terlebih dahulu. 3. Kunjungi simpul yang belum dikunjungi dan bertetangga dengan simpul-simpul yang tadi dikunjungi, demikian seterusnya 4. Jika graf berbentuk pohor berakar, maka semua simpul pada aras d dikunjungi lebih dahulu sebelum mengunjungi simpulsimpul pada aras d + 1. Contoh. (a) (b) Gambar 2.1. Dua buah graf yang dikunjungi Untuk graf pada gambar 2.1(a), bila simpul awal adalah 1 maka urutan dikunjunginya adalah 1, 2, 3, 4, 5, 6, 7, 8. Sedangkan untuk graf pada gambar 2.1(b), bila simpul awal juga 1 maka urutan dikunjunginya adalah 1, 2, 3, 4, 5, 6, 7, 8, 9. 1

2.2. DFS (Depth First Search) DFS adalah sebagai berikut: 1. Kunjungi simpul v, 2. Kunjungi simpul w yang bertetangga dengan simpul v. 3. Ulangi DFS mulai dari simpul w. 4. Ketika mencapai simpul u sedemikian sehingga semua simpul yang bertetangga dengannya telah dikunjungi, pencarian dirunut-balik (backtrack) ke simpul terakhir yang dikunjungi sebelumnya dan mempunyai simpul w yang belum dikunjungi. 5. Pencarian berakhir bila tidak ada lagi simpul yang belum dikunjungi yang dapat dicapai dari simpul yang telah dikunjungi Contoh: Untuk graf pada gambar 2.1(a), bila simpul awal adalah 1 maka urutan dikunjunginya adalah 1, 2, 4, 8, 5, 3, 6, 7. Sedangkan untuk graf pada gambar 2.1(b), bila simpul awal juga 1 maka urutan dikunjunginya adalah 1, 2, 5, 8, 9, 6, 3, 7, 4. 2.3. DLS (Depth Limited Search) Pada dasarnya, DLS sama dengan DFS, hanya saja dalam permasalahan penelusuran graf, sebelumnya ditentukan terlebih dahulu batas maksimum level yang dikunjungi. DFS adalah sebagai berikut: 1. Tentukan batas kedalaman pohon yang akan dikunjungi. 2. Kunjungi simpul v. 3. Kunjungi simpul w yang bertetangga dengan simpul v, yang berada di kedalaman pohon <= batas. 4. Ulangi DLS mulai dari simpul w. 5. Ketika mencapai simpul u sedemikian sehingga semua simpul yang bertetangga dengannya telah dikunjungi, pencarian dirunut-balik (backtrack) ke simpul terakhir yang dikunjungi sebelumnya dan mempunyai simpul w yang belum dikunjungi. 6. Pencarian berakhir bila tidak ada lagi simpul yang belum dikunjungi yang dapat dicapai dari simpul yang telah dikunjungi dalam kedalaman ponon <= batas. Contoh: Untuk graf pada gambar 2.1(a), bila simpul awal adalah 1 dan batas kedalaman adalah 3 maka urutan dikunjunginya adalah 1, 2, 4, 8, 5, 3, 6,. Sedangkan untuk graf pada gambar 2.1(b), bila simpul awal juga 1 maka urutan dikunjunginya adalah 1, 2, 5, 6, 3, 7, 4. 2.4. IDS (Iterarive Deepening Search) BFS adalah sebagai berikut: 1. Kita mulai kunjungan pohon dari simpul di level 1 2. Kunjungi simpul v 3. Kunjungi semua simpul yang bertetangga dengan simpul v terlebih dahulu, yang berada di level 1. 4. Jika hasil belum ditemukan, maka kita mulai pencarian dari simpul awal, ke semua tetangganya yang berada di simpul 2 (level +1). 5. Begitu terus berulang hingga hasil didpatkan 3. Pencarian Solusi Water Jug Problem 3.1 Deskripsi Umum Terkadang apa yang kita punya, tidak sesuai dengan apa yang kita harapkan. Begitu pun dalam Water Jug Problem. Kita mempunyai (misalkan) sebuah gelas dengan kapasitas 4 liter dan sebuah gelas yang lain dengan kapasitas (misalkan) 3 liter. Kedua gelas tidak memiliki skala ukuran dan dalam keadaan kosong. Kita ingin mendapatkan air sebanyak 2 liter dalam gelas yang berkapasitas 4 liter dan tidak boleh mendapatkannya dengan menggunakan prediksi sendiri. Selain itu, kita harus mengikuti suatu operasi-operasi tertentu, seperti dalam tabel berikut. Ket: x adalah gelas dengan kapasitas 4 liter y adalah gelas dengan kapasitas 3 liter 1. (x,y) If x < 4 2. (x,y) If y < 3 3. (x,y) If x > 0 4. (x,y) If y > 0 5. (x,y) If x > 0 (4,y) Isi penuh gelas 4 (x,3) Isi penuh gelas 3 (x-d,y) Buang sebagian air dari gelas 4 (x,y-d) Buang sebagian air dari ukuran 3 (0,y) Kosongkan gelas 4 2

6. (x,y) If y > 0 7. (x,y) If x+y 4 and y > 0 8. (x,y) If x+y 3 and x > 0 9. (x,y) If x+y 4 and y > 0 10. (x,y) If x+y 3 and x > 0 (x,0) Kosongkan gelas 3 (4,y- Tuangkan air dari (4-x)) gelas 3 ke gelas 4 sampai gelas 4 (x-(3- y),3) penuh Tuangkan air dari gelas 4 ke gelas 3 sampai gelas 3 penuh (x+y,0) Tuangkan seluruh air dari gelas 3 ke gelas 4 (0,x+y) Tuangkan seluruh air dari gelas 4 ke gelas 3 11. (0,2) (2,0) Tuangkan 2 air dari gelas 3 ke gelas 4 12. (2,y) (0,y) Buang 2 dalam gelas 4 Tabel 3.1 habis. sampai 3.2 Pencarian Solusi dengan menggunakan Algoritma BFS 2. Cek apakah sesuai dengan keinginan. Jika true, maka masalah selesai. Jika false, kunjungi simpul tetangga (4,0) 3. Jika simpul tetangga sudah dikunjungi semuanya, maka bentuk anak dari seluruh simpul dengan memperhatikan operasi-operasi yang terdapat dalam Tabel 3.1 4. Ulangi langkah 1 hingga 3. Berikut pseudocode untuk BFS: procedure BFS (input v: Point) q: antrian buatantrian(q); {buat antrian kosong} dikunjungi[v] true {array untuk menampung simpul yang sudah dikunjungi} masukantrian(q,v) {kunjungi semua simpul graf selama antrian belum kosong} while not AntrianKosong(q) do hapusantrian(q,v) for w 1 to n do if A[v,w] = 1 then if not dikunjungi[w] then write(w) masukantrian(q,w) endfor endwhile 3.3. Pencarian Solusi dengan menggunakan DFS Gambar 3.2. Pohon Ruang Status untuk Water Jug Problem Langkah-langkah yang dilakukan dalam pencarian solusi menggunakan BFS adalah 1. Kunjungi simpul pertama (0,0) Gambar3.3. Pohon DFS 3

Langkah-langkah yang dilakukan dalam pencarian solusi menggunakan DFS adalah 1. Masukkan simpul akar (0, 0) ke dalam antrian Q, jika simpul akar adalah simpul tujuan (goal node) maka solusi ditemukan. Stop. 2. Jika Q kosong, tidak ada solusi. Stop. 3. Cek apakah sesuai dengan keinginan (2,0). Jika true maka solusi ketemu. Jika false maka bangkitkan simpul tetangga dan ulang (2). procedure DFS (input v: Point) q: antrian dikunjungi[v] true {array untuk menampung simpul yang sudah dikunjungi} for w 1 to n do if A[v,w] = 1 then {simpul v dan simpul w bertetangga} if not dikunjungi[w] then DFS(w) endfor 3.4. Pencarian Solusi dengan menggunakan DLS dan IDS 4. Cek apakah sesuai dengan keinginan (2,0). Jika true maka solusi ketemu. Jika false maka bangkitkan simpul tetangga, dan ulang (2), hingga kedalaman simpul yang dikunjungi <= 5. procedure DLS (input v: Point, level: integer) q: antrian dikunjungi[v] true {array untuk menampung simpul yang sudah dikunjungi} level 1 while not level > 5 do { kunjungi semua simpul di level 1, panggl DFS} if A[v,w] = 1 then {simpul v dan simpul w bertetangga} if not dikunjungi[w] then DLS(w, level) level level +1 endwhile Langkah-langkah yang dilakukan dalam pencarian solusi menggunakan IDS adalah 1. Mulai pencarian dari level pertama pohon yang akan dikunjungi 2. Lalu panggil procedure DLS untuk setiap level 3. Ulang terus sampai didapat hasil procedure IDS (input v: Point) n : integer s : stack for n 1 to infinite do DLS (v,n) endfor Langkah-langkah yang dilakukan dalam pencarian solusi menggunakan DLS adalah 1. Tentukan kedalaman simpul yang dikunjungi (n), misalkan n=5. 2. Masukkan simpul akar (0, 0) ke dalam antrian q, jika simpul akar adalah simpul tujuan (goal node) maka solusi ditemukan. Stop. 3. Jika S kosong, tidak ada solusi. Stop. Jumlah Jumlah Aturan yang dilakukan dalam gelas 4 dalam gelas 3 0 0-4

0 3 2 3 0 9 3 3 2 4 2 7 0 2 5 atau 12 2 0 9 atau 11 Gambar 3.4. Suatu solusi untuk Water Jug Problem 4. Kesimpulan Untuk hampir semua masalah pencarian dalam persoalan pencarian pada graf, maka IDS, selalu menunjukkan hasil yang lebih optimum. namun keempat ini, memiliki kelebihan dan kekurangan masing-masing. Berikut terdapat tabel perbandingan kompleksitas berdasarkan, ruang dan waktu, juga perbandingan keoptimalan dan keselesaian dari keempat. Keterangan tabel : b : branching factor l : level/kedalaman pohon, dimana solusi ditemukan m : kedalaman maksimum pohon yang ditelusuri d : batas kedalaman Kriteria BFS DFS DLS IDS Waktu b^l b^m b^d b^l Ruang b^l bm bd bl Optimal? Ya Tidak Tidak Ya Selesai? Ya Tidak Ya, If Ya d>=l Daftar Pustaka 1. Munir, Rinaldi. Strategi Algoritmik. Laboratorium Ilmu Rekayasa dan Komputasi. Institut Teknologi Bandung. 2. http://www.ai-depot.com 3. Pengntar AI, Universitas Gunadarma 5

6