Pemanfaatan Algoritma BFS pada Graf Tak Berbobot untuk Mencari Jalur Terpendek

dokumen-dokumen yang mirip
METODE BRANCH AND BOUND UNTUK MENEMUKAN SHORTEST PATH

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

Penerapan Algoritma Branch and Bound untuk Penentuan Jalur Wisata

PENGUNAAN DUA VERSI ALGORITMA BACKTRACK DALAM MENCARI SOLUSI PERMAINAN SUDOKU

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

dengan Algoritma Branch and Bound

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

Penerapan Algoritma BFS dan DFS dalam Mencari Solusi Permainan Rolling Block

PENCARIAN SOLUSI DENGAN ALGORITMA BACKTRACKING UNTUK MENYELESAIKAN PUZZLE KAKURO

ALGORITMA PENCARIAN SIMPUL SOLUSI DALAM GRAF

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

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

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

Penggunaan Algoritma Backtracking pada Permainan Mummy Maze

PENGGUNAAN ALGORITMA GREEDY DALAM PERMAINAN KARTU BLACK JACK

Algoritma Branch and Bound dalam Kegunaannya Memecahkan Assignment Problem

Penerapan Algoritma DFS dan BFS untuk Permainan Wordsearch Puzzle

Menentukan Susunan Terbaik Tim Proyek dengan Algoritma Branch and Bound

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

Branch and Bound untuk Rute Terpendek Tur Pengenalan Labtek V Gedung Benny Subianto Chita Najmi Nabila /

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

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

IMPLEMENTASI ALGORITMA BREADTH FIRST SEARCH DAN STRING MATCHING PADA SISTEM PAKAR

Penghematan BBM pada Bisnis Antar-Jemput dengan Algoritma Branch and Bound

Perbandingan Algoritma Brute Force dan Breadth First Search dalam Permainan Onet

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

Analisis Beberapa Algoritma dalam Menyelesaikan Pencarian Jalan Terpendek

PENERAPAN ALGORITMA BFS PADA CHINESE SLIDE BLOCK PUZZLE (KLOTSKI)

Menentukan Titik Evakuasi Selanjutnya bagi Sekelompok Regu Tim SAR dengan Algoritma Branch and Bound

IMPLEMENTASI ALGORITMA GREEDY PADA PERMAINAN OTHELLO

Aplikasi Graf pada Persoalan Lintasan Terpendek dengan Algoritma Dijkstra

Penyusunan Jarkom HMIF ITB dengan Menggunakan Algoritma Branch and Bound

Penerapan Algoritma DFS pada Permainan Sudoku dengan Backtracking

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

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

Pemecahan Masalah Knapsack dengan Menggunakan Algoritma Branch and Bound

VARIASI PENGGUNAAN FUNGSI HEURISTIK DALAM PENGAPLIKASIAN ALGORITMA A*

Penggunaan Algoritma DFS dan BFS pada Permainan Three Piles of Stones

Penggunaan Algoritma Backtrack dan Aturan Warnsdorff Untuk Menyelesaikan Knight s Tour Problem

PENERAPAN ALGORITMA GREEDY DALAM PENCARIAN SOLUSI TERBAIK PADA PERMAINAN TETRIS

Aplikasi Algoritma Brute Force Pada Knight s Tour Problem

Analisis Pengimplementasian Algoritma Greedy untuk Memilih Rute Angkutan Umum

BAB III ALGORITMA BRANCH AND BOUND. Algoritma Branch and Bound merupakan metode pencarian di dalam ruang

Analisis Penerapan Algoritma Backtracking Pada Pencarian Jalan Keluar di Dalam Labirin

Pencarian Solusi Permainan Fig-Jig Menggunakan Algoritma Runut-Balik

Aplikasi Graf Breadth-First Search Pada Solver Rubik s Cube

ALGORITMA RUNUT BALIK DALAM PENYELESAIAN PERMAINAN WORD DIAGRAM

Solusi Terbaik Permainan Rocket Mania Deluxe dengan Pendekatan Algoritma BFS dan Algoritma Greedy

Penerapan Algoritma Brute Force dan Backtracking pada Permainan Skycraper

Penggunaan Algoritma Greedy untuk menyelesaikan Permainan Othello

Implementasi Algoritma DFS pada permainan Monument Valley

PENCARIAN SOLUSI TTS ANGKA DENGAN ALGORITMA RUNUT BALIK BESERTA PENGEMBANGANNYA

Penggunaan Algoritma Pathfinding pada Game

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

I. PENDAHULUAN II. DASAR TEORI. Contoh lainnya: Solusi: 0= V,1= I,2= O,3= R, 4= N,5= L,7= A,8= F,9= E.

Pencarian Pohon Solusi Permainan Alchemy Menggunakan Algoritma BFS dan DFS

Penggunaan Algoritma Runut-balik Pada Pencarian Solusi dalam Persoalan Magic Square

Penerapan Algoritma Runut-Balik (Backtracking) pada Permainan Nurikabe

BFS dan DFS. Bahan Kuliah IF2151 Strategi Algoritmik. Oleh: Rinaldi Munir

Aplikasi Branch and Bound Pada Pencarian Jalan Pada Software Navigasi

PENGGUNAAN ALGORITMA BACKTRACKING DALAM PENYELESAIAN PERMAINAN SUDOKU

Penerapan Algoritma Runut-balik pada Permainan Math Maze

Penerapan Algoritma Pencocokan String Knuth-Morris-Pratt Sebagai Algoritma Pencocokan DNA

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

Implementasi Algoritma DFS pada Pewarnaan Gambar Sederhana Menggunakan Bucket tool

Penggunaan Algoritma DFS dalam Pencarian Strategi Permainan Catur

Menentukan Starting Lineup Futsal Terbaik dengan Algoritma Branch and Bound

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

Memecahkan Puzzle Hidato dengan Algoritma Branch and Bound

Aplikasi Algoritma Traversal Dalam Binary Space Partitioning

Penerapan Algoritma Greedy dan Breadth First Search pada Permainan Kartu Sevens

Perbandingan Algoritma Brute Force dan Backtracking dalam Permainan Word Search Puzzle

Penerapan BFS dan DFS dalam Garbage Collection

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

Pembahasan Pencarian Lintasan Terpendek Menggunakan Algoritma Dijkstra dan A*

Pencarian Solusi Optimal dalam Permainan Congklak dengan Program Dinamis

Aplikasi Algoritma Runut-balik untuk Penyelesaian Jenis Permainan Smart Mike pada Permainan Mike 2 in 1

Pencarian Lintasan Terpendek Pada Aplikasi Navigasi Menggunakan Algoritma A*

Studi Algoritma Optimasi dalam Graf Berbobot

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

Penerapan Algoritma BFS dan DFS dalam Permainan Ular Tangga

Menentukan Susunan Pengambil Tendangan Penalti dalam Skema Adu Penalti pada Pertandingan Sepak Bola dengan Algoritma Branch and Bound

Penerapan Search Tree pada Penyelesaian Masalah Penentuan Jalur Kota Terpendek.

PENERAPAN ALGORITMA BACKTRACKING PADA PERMAINAN WORD SEARCH PUZZLE

Penerapan Algoritma Greedy pada Intelegensia Buatan untuk Transfer Pemain dalam Permainan Simulasi Sepakbola

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

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

Penerapan Algoritma Branch And Bound Dalam Optimasi Assigment Problem

SOLUSI ALGORITMA BACKTRACKING DALAM PERMAINAN KSATRIA MENYEBRANG KASTIL

Penggunaan Strategi Algoritma Backtracking pada Pencarian Solusi Puzzle Pentomino

Pencarian Solusi Permainan Flow Free Menggunakan Brute Force dan Pruning

Algoritma Puzzle Pencarian Kata

Penyelesaian Permasalahan Nonogram dengan Algoritma Runut Balik

IMPLEMENTASI PROGRAM DINAMIS DENGAN ALGORITMA NEEDLEMAN-WUNSCH PADA PENSEJAJARAN DNA DAN PROTEIN

Penerapan Algoritma Brute Force di Permainan Nonogram

Penyelesaian Permainan Minesweeper dengan Algoritma BFS dengan Optimasi Algoritma Greedy

Penerapan Algoritma Greedy Pada Game Tower Defense: Tower of Greece

ALGORITMA RUNUT-BALIK (BACKTRACKING ALGORITHM) PADA MASALAH KNIGHT S TOUR

Penerapan Algoritma Branch and Bound pada Penentuan Staffing Organisasi dan Kepanitiaan

Pembuatan Peta Permainan dengan BSP

Transkripsi:

Pemanfaatan Algoritma BFS pada Graf Tak Berbobot untuk Mencari Jalur Terpendek Aswin Juari Institut Teknologi Bandung Jl. Ganesha 10 Bandung Jawa Barat Indonesia E-mail: if15076@students.if.itb.ac.id ABSTRAK Makalah ini membahas tentang aplikasi Algoritma BFS untuk mencari jalur terpendek pada graf yang tidak berbobot. Maksud dari graf tak berbobot adalah graf yang jarak antar simpulnya sama. Dengan kata lain, ini adalah graf yang semua sisinya bernilai sama. Pada makalah ini, hanya akan dibahas cara mecari jalur terpendek pada graf yang tak berarah saja. Pemanfaatan algoritma ini dalam mencari jalur terpendek pada graf tak berbobot ini banyak diaplikasikan pada permainan permainan di mana musuh mampu mengejar pemain sehingga musuh tak bodoh dalam melakukan pengejaran. Permainan komputer yang menggunakan aplikasi jalur terpendek antara lain : Rodent Revenger, War Craft, dan Pac- Man. Titik awal pengejaran akan menjadi simpul asal dan yang mejadi titik akhir pengejaran adalah posisi pemain(dalam permainan tersebut). Walaupun demikian, algoritma ini masih memiliki kelemahan jika daerah titik awal pengejaran dan titik akhir pengejaran terlalu jauh. Algoritma BFS(Breadth First Search) ini merupakan salah satu strategi pemecahan masalah jalur terpendek pada graf tak berbobot. Algoritma ini mengimplementasikan struktur data queue(antrian) dan linkedlist(list berkait). Dengan algoritma ini pula kita bisa menghitung jalur terpendek. Kata Kunci: linkedlist, queue, matriks, sel, sisi, dan simpul. Graf tak berbobot adalah graf yang semua sisinya sama, sehingga jalur terpendek hanya ditentukan dari jumlah simpul yang dilalui. Gambar 1 Graf Pada contoh graf di atas, misalnya jika kita mulai dari simpul 1 maka urutan simpul yang dikunjungi adalah 1,2,5,7,3,4,6. Algoritma BFS lebih jelasnya sebagai berikut: Kunjungi simpul asal, kemudian kunjungi simpul yang bertetangga dengan simpul asal. Kemudian kunjungi simpul-simpul yang bertetangga dengan simpul yang tadi dikunjungi dan seterusnya. traversal dari algoritma ini tak bersifat unik. Karena traversal inilah, algoritma ini dapat digunakan sebagai algoritma pencarian jalur terpendek. Jika dibuat pohon dengan 1 sebagai akarnya adalah sebagai berikut: 1. PENDAHULUAN Algoritma BFS(Breadth First Search) merupakan algoritma traversal dengan melakukan pencarian melebar pada graf. Setelah ditentukan sebuah simpul awal, strategi dari Breadth First Search adalah secara sistematis melakukan traversal seluruh simpul yang dapat dicapai oleh simpul awal. Pohon BFS yang dimulai dengan simpul akar akan maju satu demi satu level. Gambar 2 Pohon BFS MAKALAH IF2251 STRATEGI ALGORITMIK TAHUN 2007 1

2. APLIKASI ALGORITMA BFS DALAM MASALAH MENCARI JALUR TERPENDEK Agar lebih mudah dalam memahami algoritma ini, kita nyatakan dalam matriks karena graf bisa direpresentasikan dalam matriks dan lebih mudah dalam penentuan posisi dan ketetanggaan dalam realisasi algoritma. Diberikan sebuah matriks ukuran n x m: 1 2 3 4 5 6 7 1 0 0 0 0 0 0 0 2 0 2 0 1 1 0 0 3 0 0 0 1 0 0 0 4 0 0 0 0 0 0 0 5 0 0 0 1 0 3 0 6 0 0 0 1 0 0 0 7 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 m adalah banyaknya kolom pada matriks. n adalah banyaknya baris pada matriks. (x,y) menyatakan koordinat pada matriks. Misalkan m=7 dan n=8. Status 0 menggambarkan bahwa jalan tersebut dapat dilalui, status 0 menggambarkan jalan tersebut tak dapat dilalui, status 2 menggambarkan sel awal, dan status 3 menggambarkan sel yang harus dituju. Kita ingin mencari jalan terpendek dari (2,2) ke (6,5) tetapi tidak boleh mengambil jalur diagonal. Hal ini mirip dengan graf yang tak berarah di mana sel-sel yang dapat dikunjungi itu sebagai simpul dan jalur yang dapat dilalui sebagai sisi(yang semua nilainya sama). Sel mula-mula juga dapat kita analogikan sebagai simpul awal dan sel tujuan dapat kita analogikan sebagai simpul tujuan. Jika kita ingin merepresentasikannya dalam graf, maka grafnya adalah sebagai berikut 2.1. Sketsa Penyelesaian (Informal) Untuk menyelesaikan masalah jalur terpendek dengan menggunakan BFS dapat dilakukan langkah-langkah berikut: 1. Letakkan simpul awal pada antrian 2. Ambil antrian pertama lalu periksa: a. Jika simpul awal sudah sama dengan simpul akhir, maka akhiri pencarian dan kembalikan solusi. b. Jika tidak, masukkan semua suksesor dari simpul tersebut pada akhir antrian, jika ada. 3. Jika antrian simpul kosong dan semua simpul sudah dicek, akhiri pencarian dan solusi tidak ditemukan. 4. Ulangi mulai langkah 2. 2.2. Pseudo-Code Inisialisasi Matriks Boolean yang diset false Inisialisasi Sebuah Antrian Kosong Buat Simpul Asal Masukkan Simpul Asal ke dalam Antrian Buat Simpul Tujuan Boolean ketemu=false int jarak = 1 While AntrianTidakKosong and not ketemu do Ambil simpul n dari antrian if n=simpul_tujuan then ketemu=true output(jarak) return solusi else increment (level) Bangkitkan suksesor n dari n for setiap suksesor n dari n if(dikunjungi[posisi x dari n ][posisi y dari n ]=false) then Set parent dari n menjadi n Masukkan n ke dalam antrian endfor endwhile 2.3. Kode Program Untuk dapat lebih mengerti realisasi algoritma ini, lebih baik jika kita melihat kode programnya secara langsung. Dalam makalah ini, kode program ditulis dalam bahasa java. Representasi dalam matriks. MAKALAH IF2251 STRATEGI ALGORITMIK TAHUN 2007 2

import java.util.*; //Kelas ini untuk pencarian class Simpul private int x;//posisi x pada matriks private int y;//posisi y pada matriks private Simpul parent;//menyatakan parent //dari elemen public Simpul(int _x,int _y) x=_x; y=_y; parent=null; public Simpul(int _x,int _y, Simpul p) x=_x; y=_y; parent = p; //getter public int getx()return x; public int gety()return y; public int getparent()return parent; //setter public void setx(int _x)x=_x; public void sety(int _y)y=_y; public void setparent(simpul p) parent=n; //Kelas ini untuk membuat sel pada matriks class Grid private int x; //posisi x private int y; //posisi y private int status; //status pada grid //0. bisa dikunjungi 1. tak bisa //dikunjugi //1. tak bisa //dikunjungi public Grid(int _x,int _y) x=_x; y=_y; public Grid(int _x,int _y) x=_x; y=_y; //getter public int getx()return x; public int gety()return y; public int getstatus()return status; //setter public void setx(int _x)x=_x; public void sety(int _y)y=_y; public void setstatus(int s)status=s; //Kelas Pencarian dengan BFS untuk masalah //di atas public class BFS public static void main(string args[]) //Inisialisasi Matriks int n=7; int m=8; Grid Matriks[][]=new Grid[m+1][n+1]; for (int i=1;i<m+1;i++) for (int j=1;j<n+1;j++) Matriks[i][j]=new Grid(i,j); Matriks[i][j].setStatus(0); Matriks[2][2].setStatus(2); Matriks[6][5].setStatus(3); Matriks[5][2].setStatus(1); Matriks[4][2].setStatus(1); Matriks[4][3].setStatus(1); Matriks[4][5].setStatus(1); Matriks[4][6].setStatus(1); //Inisialisasi Matriks boolean yang //diset false boolean Matbol[][]=new boolean[m+1][n+1]; for (int i=1;i<m+1;i++) for (int j=1;j<n+1;j++) Matbol[i][j]=false; //Inisialisasi Sebuah Antrian Kosong LinkedList<Simpul> Antrian=new LinkedList<Simpul>(); //Buat Simpul Asal Simpul SimpulAsal=new Simpul(2,2); //Masukkan Simpul Asal ke dalam //Antrian Antrian.addFirst(SimpulAsal); //Buat Simpul Tujuan Simpul SimpulTujuan=new Simpul(6,5); boolean ketemu=false; int jarak=1; Simpul S; while(!(antrian.size()=0) && (!ketemu)) S=Antrian.remove(); Matbol[S.getX()][S.getY()]=true; if((s.getx()==simpultujuan.getx( )) && (S.getY()==SimpulTujuan.getY())) ketemu=true; System.out.println( Jarak = +jarak); //Solusi telah ditemukan While(S!=SimpulAsal) //tandai jalan Matriks[S.getX()] [S.getY()]. setstatus(5); S=S.getParent(); MAKALAH IF2251 STRATEGI ALGORITMIK TAHUN 2007 3

else jarak++; //Bangkitkan suksesor dan //masukkan ke antrian Simpul S_suk[]=new Simpul[4]; //generate Kiri if((s.getx()-1)>0)) if ((MatBol[S.getX()-1] [S.getY()]==false) && (Matriks[S.getX()-1] [S.getY()].getStatus()==0)) S_suk[0]=new Simpul(S.getX()- 1,S.getY(),S); Antrian.addLast(S_suk[0]); //generate kanan if((s.getx()+1)<=m)) if ((MatBol[S.getX()+1] [S.getY()]==false) && (Matriks[S.getX()+1] [S.getY()].getStatus()==0)) S_suk[1]=new Simpul(S.getX()+1,S.getY(),S); Antrian.addLast(S_suk[1]); Lebih jelasnya, pada level ke-1 dari pohon pencarian BFS akan simpul akar membangkitkan n buah simpul baru. Pada level ke-2 jika setiap simpul tersebut menghasilkan kembali simpul yang baru maka akan menghasilkan n 2 simpul. Begitu pula pada level 3 dan seterusnya. Jika dirumuskan secara matematik, jumlah simpul yang dibangkitkan: 1 + n + n 2 + n 3 + n x =(n x+1-1)/(n-1) Jadi, kompleksitas waktunya : O(n x ). Oleh karena itu, pencarian dengan BFS tidak efektif jika daerah pencariannya terlalu besar karena akan memakan waktu(membuat program terlihat hang ). Ada algoritma yang lebih baik daripada BFS untuk mencari jalan terpendek pada graf tak berarah karena algoritma tersebut menggunakan prinsip algoritma Branch and Bound, yaitu menggunakan prinsip ongkos pencarian. 4. Kesimpulan 1. Untuk mencari jalur terpendek pada graf tek berbobot dapat digunakan algoritma BFS walaupun algoritma ini bukan merupakan solusi yang terbaik. //generate atas if((s.gety()-1)>0)) if ((MatBol[S.getX()] [S.getY()-1]==false) && (Matriks[S.getX()] [S.getY()- 1].getStatus()==0)) S_suk[2]=new Simpul(S.getX(),S.getY()-1,S); Antrian.addLast(S_suk[2]); //generate bawah if((s.gety()+1)<=n)) if ((MatBol[S.getX()] [S.getY()+1]==false) && (Matriks[S.getX()] [S.getY()+1].getStatus()==0)) S_suk[3]=new Simpul(S.getX(),S.getY()+1,S); Antrian.addLast(S_suk[3]); 2. Prinsip pencarian jalur terpendek pada matriks pada dasarnya sama dengan graf tak berbobot dan juga tak berarah. REFERENSI [1] Munir, Rinaldi. Diktat Kuliah IF2251 Strategi Algoritmik. Bandung: Program Studi Teknik Informatika ITB. 2007. [2]http://en.wikipedia.org/wiki/breadth-first_search. Tanggal akses: 21 Mei 2007 pukul 17.00. 3. ANALISIS Metode BFS dapat menjamin ditemukannya suatu solusi jika memang terdapat solusi. Akan tetapi kompleksitas waktu algoritma ini kurang begitu baik sehingga jika daerah pencariannya luas maka akan membutuhkan waktu komputasi yang cukup lama. MAKALAH IF2251 STRATEGI ALGORITMIK TAHUN 2007 4

This document was created with Win2PDF available at http://www.daneprairie.com. The unregistered version of Win2PDF is for evaluation or non-commercial use only.