PENGARUH PEMILIHAN PEMBANGKITAN ANAK DENGAN COST SAMA PADA KASUS PENCARIAN LINTASAN TERPENDEK MENGGUNAKAN ALGORITMA BRANCH AND BOUND

dokumen-dokumen yang mirip
Analisis Beberapa Algoritma dalam Menyelesaikan Pencarian Jalan Terpendek

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

Menentukan Susunan Terbaik Tim Proyek dengan Algoritma Branch and Bound

METODE BRANCH AND BOUND UNTUK MENEMUKAN SHORTEST PATH

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

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

Penerapan Algoritma Branch and Bound untuk Penentuan Jalur Wisata

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

Pencarian Lintasan Terpendek Pada Aplikasi Navigasi Menggunakan Algoritma A*

Algoritma Branch and Bound. (Bagian 1)

Memecahkan Puzzle Hidato dengan Algoritma Branch and Bound

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

Pembahasan Pencarian Lintasan Terpendek Menggunakan Algoritma Dijkstra dan A*

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

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

dengan Algoritma Branch and Bound

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

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

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

Penerapan Algoritma A-star (A*) Untuk Menyelesaikan Masalah Maze

Penggunaan Algoritma Branch and Bound dan Program Dinamis Dalam Pemecahan Masalah Rubik s Cube

Implementasi Algoritma Greedy, BFS, Branch and Bound, dan Metode Heuristik dalam Permainan Reversi

Aplikasi Algoritma Branch and Bound dalam Pencarian Solusi Optimum Job Assignment Problem

ALGORITMA PENCARIAN. 1. Iterative-Deepening Depth-First Search (IDS) Nama : Gede Noverdi Indra Wirawan Nim : Kelas : VI A

VARIASI PENGGUNAAN FUNGSI HEURISTIK DALAM PENGAPLIKASIAN ALGORITMA A*

Penerapan Algoritma Branch and Bound pada Penentuan Staffing Organisasi dan Kepanitiaan

Penggunaan Algoritma Pathfinding pada Game

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

Pemanfaatan Algoritma BFS pada Graf Tak Berbobot untuk Mencari Jalur Terpendek

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

Pencarian Pohon Solusi Permainan Alchemy Menggunakan Algoritma BFS dan DFS

Pengaturan Sistem Lampu Lalu Lintas dengan Algoritma Branch and Bound dengan Waktu Tunggu Menggunakan Algoritma Greedy

Aplikasi Branch and Bound Pada Pencarian Jalan Pada Software Navigasi

SOLUSI PERMAINAN CHEMICALS DENGAN ALGORITMA RUNUT BALIK

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

Menentukan Starting Lineup Futsal Terbaik dengan Algoritma Branch and Bound

Penerapan Search Tree pada Penyelesaian Masalah Penentuan Jalur Kota Terpendek.

Analisis Pengimplementasian Algoritma Greedy untuk Memilih Rute Angkutan Umum

Penyelesaian Permainan Sliding Puzzle 3x3 Menggunakan Algoritma Greedy Dengan Dua Fungsi Heuristik

Penggunaan Algoritma Backtracking pada Permainan Mummy Maze

Aplikasi Algoritma Traversal Dalam Binary Space Partitioning

Pemodelan AI dalam Permainan Snake dengan Algoritma Branch and Bound

Penerapan Algoritma BFS dan DFS dalam Mencari Solusi Permainan Rolling Block

Implementasi Logika Penurunan Persamaan Aritmatika pada Program Komputer

Penggunaan Algoritma DFS dan BFS pada Permainan Three Piles of Stones

Algoritma Branch & Bound

Algoritma Branch and Bound dalam Kegunaannya Memecahkan Assignment Problem

Penerapan Algoritma Branch & Bound dan Backtracking pada Game Flow

Pemecahan Masalah Knapsack dengan Menggunakan Algoritma Branch and Bound

Penyusunan Jarkom HMIF ITB dengan Menggunakan Algoritma Branch and Bound

Penyelesaian Game Lights Out dengan Algoritma Runut Balik

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

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

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

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

PERMAINAN KNIGHT S TOUR DENGAN ALGORITMA BACKTRACKING DAN ATURAN WARNSDORFF

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

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

Penerapan Algoritma Backtracking pada Game The Lonely Knight

Analisis Penerapan Algoritma Backtracking Pada Pencarian Jalan Keluar di Dalam Labirin

Penerapan Algoritma Branch And Bound Dalam Optimasi Assigment Problem

Perbandingan Algoritma Brute Force dan Breadth First Search dalam Permainan Onet

Penggabungan Algoritma Brute Force dan Backtracking dalam Travelling Thief Problem

PENCARIAN SOLUSI TTS ANGKA DENGAN ALGORITMA RUNUT BALIK BESERTA PENGEMBANGANNYA

Aplikasi Graf pada Persoalan Lintasan Terpendek dengan Algoritma Dijkstra

Journal of Informatics and Technology, Vol 1, No 1, Tahun 2012, p

Penerapan Algoritma DFS pada Permainan Sudoku dengan Backtracking

BAB II DASAR TEORI Kajian Pustaka a. Penerapan Algoritma Flood Fill untuk Menyelesaikan Maze pada Line Follower Robot [1]

ALGORITMA PENCARIAN SIMPUL SOLUSI DALAM GRAF

Penerapan Algoritma A* Sebagai Algoritma Pencari Jalan Dalam Game

Aplikasi Graf dalam Rute Pengiriman Barang

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

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

Penerapan Algoritma Brute Force dan Backtracking pada Permainan Skycraper

Pencarian Solusi Permainan Fig-Jig Menggunakan Algoritma Runut-Balik

Penerapan Algoritma DFS dan BFS untuk Permainan Wordsearch Puzzle

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

Penerapan BFS dan DFS pada Pencarian Solusi

Aplikasi Algoritma Greedy untuk Pergerakan Musuh pada Permainan Pac-Man

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

Pohon Biner Sebagai Struktur Data Heap dan Aplikasinya

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

Kecerdasan Buatan Penyelesaian Masalah dengan Pencarian

Penerapan Algoritma Runut-balik pada Permainan Math Maze

Penerapan Algoritma Branch and Bound dalam Pemacahan Travelling Salesman Problem (TSP) dalam Graf Lengkap

Kecerdasan Buatan. Pertemuan 03. Pencarian Branch & Bound dan Heuristik (Informed)

Penyelesaian Berbagai Permasalahan Algoritma dengan Kombinasi Algoritma Brute Force dan Greedy

Studi Algoritma Optimasi dalam Graf Berbobot

PENERAPAN ALGORITMA BACKTRACKING PADA PERMAINAN MATH MAZE

PENGEMBANGAN APLIKASI GAME ARCADE 3D MARI SELAMATKAN HUTAN INDONESIA

Representasi Graf Berarah dalam Mencari Solusi Jalur Optimum Menggunakan Algoritma A*

IMPLEMENTASI ALGORITMA GREEDY PADA PERMAINAN OTHELLO

PENERAPAN ALGORITMA BFS PADA CHINESE SLIDE BLOCK PUZZLE (KLOTSKI)

Perbandingan Algoritma Dijkstra dan Algoritma Floyd-Warshall dalam Penentuan Lintasan Terpendek (Single Pair Shortest Path)

Penggunaan Algoritma Greedy untuk menyelesaikan Permainan Othello

BAB 2 LANDASAN TEORI

Penerapan Algoritma Backtrack pada Knight s Tour

Implementasi Brute Force pada Game Mahjong Titans

Algoritma Prim sebagai Maze Generation Algorithm

PENDEKATAN MASALAH TOWER OF HANOI DENGAN ALGORITMA DIVIDE AND CONQUER

Transkripsi:

PENGARUH PEMILIHAN PEMBANGKITAN ANAK DENGAN COST SAMA PADA KASUS PENCARIAN LINTASAN TERPENDEK MENGGUNAKAN ALGORITMA BRANCH AND BOUND David Samuel Program Studi Teknik Informatika, Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung Jl. Ganesha 0, Bandung e-mail: david_samuel@students.itb.ac.id ABSTRAK Algoritma Branch and Bound adalah salah satu algoritma yang dapat memberikan solusi optimal dalam setiap penggunaannya. Salah satu kegunaan alogritma Branch and Bound adalah untuk menentukan lintasan terpendek yang dapat ditempuh dari lantai start menuju lantai finish dalam sebuah labirin (maze). Dalam kasus pencarian lintasan terpendek, secara sistematis algoritma Branch and Bound akan memilih setiap langkah yang didasarkan pada kalkulasi cost setiap lantai dengan menggunakan fungsi heuristik. Secara garis besar, algoritma Branch and Bound akan menggunakan bantuan sebuah pohon BFS, dan memodifikasinya dengan memperluas simpul yang memiliki cost terkecil terlebih dahulu, dengan tujuan untuk mendapatkan solusi secara lebih cepat dan optimal dibandingkan dengan memperluas seluruh simpul yang berada pada tingkat yang sama, yang diterapkan dalam perluasan pohon BFS. Akan tetapi, tidak ada aturan yang pasti mengenai urutan pembangkitan simpul saat ada dua buah simpul atau lebih yang memiliki cost sama dan merupakan cost terkecil dibandingkan simpul-simpul lainnya. Makalah ini akan membahas pengaruh pemilihan simpul yang diperluas terlebih dahulu, apabila terjadi hal seperti demikian, dengan menggunakan contoh kasus pencarian lintasan terpendek. Kata kunci: BFS, Branch and Bound, cost, heuristik,maze. PENDAHULUAN Algoritma Branch and Bound menggunakan bantuan pohon BFS dalam mencari solusi optimalnya. Algoritma murni BFS akan menggunakan antrian untuk menyimpan simpul yang dibangkitkan. Simpul-simpul yang baru dibangkitkan akan diletakkan pada antrian dengan prinsip FIFO (First In First Out). Sedangkan simpul-e, yaitu simpul hidup yang akan diekspansi berikutnya adalah simpul yang pertama masuk ke dalam antrian. Namun, algoritma murni BFS ini kalah cepat dibandingkan dengan apabila kita mengekspansi pohon BFS dengan algoritma Branch and Bound. Kunci utama algoritma Branch and Bound adalah pemilihan simpul yang akan diekspansi secara selektif berdasarkan cost untuk mencapai simpul tersebut. Simpul dengan cost terkecil, dan mengarah ke simpul solusi, akan dibangkitkan terlebih dahulu, sekaligus mematikan simpul-simpul yang tidak mengarah ke simpul solusi. Setiap simpul harus diberi nilai terlebih dahulu. Pemberian nilai didasarkan pada fungsi heuristik, yaitu sebuah fungsi yang menyatakan perkiraan nilai. Tidak ada sebuah pernyataan matematika yang dapat merepresentasikan fungsi heusristik secara pasti, namun fungsi heuristik diturunkan berdasarkan pengamatan terhadap permasalahan yang spesifik. Ada sebuah algoritma yang mirip dengan algoritma Branch and Bound, algoritma tersebut dikemukakan oleh Hart, Nilsson, dan Raphael (6), yang dikenal sebagai algoritma A*. Pada perkembangannya sekarang telah memiliki banyak varian, seperti AlphaA*, dan sebagainya, namun pada makalah ini, akan digunakan istilah Algoritma Branch and Bound, dikarenakan aplikasi pemakaiannya yang lebih luas, sedangkan penggunaan kasus pencarian lintasan terpendek hanya untuk menunjukkan salah satu kasus urutan pembangkitan pada pohon BFS jika ada dua simpul yang bernilai sama. 2. PENCARIAN JALUR TERPENDEK 2. Batasan Masalah Untuk merepresentasikan penggunaan algoritma Branch and Bound serta cara ekspansi simpul pada pohon BFS, akan digunakan contoh permasalahan mencari lintasan terpendek dalam sebuah labirin.

Diberikan sebuah labirin yang terdiri dari lantailantai kotak, dengan ukuran labirin x. Pada labirin terdapat sebuah lantai yang didefinisikan sebagai start, dan sebuah lantai yang didefinisikan sebagai finish. Sebuah robot pencari jejak ditempatkan di lantai start dan ditugaskan untuk mencari lintasan terpendek, melewati tiap lantai dan menghindari halangan tembok pada labirin, sehingga robot dapat mencapai finish. Batasan yang diberikan pada permasalahan ini adalah robot hanya dapat bergerak vertikal dan horizontal, serta tidak dapat menembus tembok. Adapun struktur data lantai yang digunakan adalah sebagai berikut: Type Lantai c, f, g: integer{nilai fungsi heuristik} Parent: Lantai {Penunjuk ke lantai induk},: Boolean Wall,Path : Boolean mengkalkulasi cost setiap lantai. Fungsi Manhattan didefiniskan sebagai berikut: f ˆ ( = fˆ( parent) + (2) f ˆ( i ) adalah ongkos yang didasarkan pada lantai sebelumnya. Ini adalah perkiraan pencapaian lantai i, jika dihitung dari lantai start. g( = abs( finish. x i. x) + abs( finish. y i. y) (3) g( adalah ongkos yang dikalkulasi berdasarkan nilai absolut posisi lantai tersebut terhadap posisi lantai finish, perlu diketahui bahwa fungsi g( akan menganggap tembok seperti layaknya lantai biasa, sehingga nilai ongkos lantai adalah nilai absolut posisi lantai terhadap lantai finish. Sehingga, ilustrasi yang tepat untuk lantai nomor pada labirin gambar 2. adalah: 0 f C 0 g Gambar 2.2 Ilustrasi pemberian cost lantai untuk lantai nomor Proses pemberian nilai ini akan terus diberikan seiring dengn pemilihan jalur yang dilintasi oleh robot. 2.3 Proses Pembangkitan Simpul Gambar 2. Pencarian Jalur Terpendek Untuk Labirin x 2.2 Fungsi Heuristik Manhattan Setiap lantai yang terdapat dalam labirin akan diberikan nilai yang merepresentasikan nilai simpul pada pohon pemebentukannya. Oleh karena itu akan digunakan fungsi heuristik untuk memperkirakan nilai setiap lantai yang akan dilewati oleh c ˆ( = fˆ( + gˆ( () Di mana c ˆ( = ongkos untuk simpul i f ˆ( i ) = ongkos untuk mencapai lantai i dari start g ˆ( = ongkos untuk mencapai finish dari lantai i Pada permasalahan pencarian jalur terpendek ini, akan digunakan fungsi heuristik Manhattan untuk Proses pembangkitan simpul menggunakan antrian Q, di mana antrian yang digunakan adalah antrian Q yang terurut menaik, sehingga antrian Q akan berisi elemen yang terurut menaik, atau lebih dikenal dengan priority queue. Untuk lebih jelasnya, urutan langkah yang harus ditempuh secara umum adalah sebagai berikut:. Masukkan lantai ke dalam antrian Q, jika lantai juga adalah lantai, maka solusi telah ditemukan. 2. Jika antrian Q kosong, maka tidak ditemukan solusi. 3. Jika antrian Q tidak kosong, maka perluas elemen pertamanya, yaitu elemen yang memiliki ongkos terkecil. Jika ada elemen dengan nilai ongkos terkecil sama, maka dipilih salah satu secara sembarang. 4. Jika lantai yang akan dibangkitkan merupakan lantai, maka solusi ditemukan. Jika bukan,

maka akan disisipkan lantai-lantai anak-anaknya, yaitu lantai di atas, kanan, kiri, dan bawah dari lantai tersebut, dengan urutan ongkos menaik pula. Lantai yang telah dibangkitkan anakanaknya dihapus dari antrian Q. Jika lantai anak (lantai yang akan dibangkitkan) merupakan tembok, atau sudah pernah dilalui oleh pembangkitan lantai lainnya, maka lantai anak tersebut tidak dimasukkan ke dalam antrian Q. 5. Ulangi langkah ke-2. Tinjau permasalahan berikut ini: 2 3 4 5 6 2 3 4 5 6 Gambar 2.3 Contoh Kasus Pemilihan Pembangkitan Simpul Pada langkah ketiga, uraian langkah di atas mengungkapkan bahwa pemilihan pembangkitan lantai jika ada yang bernilai (cost) sama dapat dilakukan secara sembarang. Tidak ada aturan yang pasti mengenai lantai mana yang harus terlebih dahulu dibangkitkan anakanaknya. Ini berarti ada dua pilihan dalam membangkitkan lantai, jika ada lantai yang memiliki cost sama:. Membangkitkan anak-anak dari lantai yang baru masuk dari antrian Q. 2. Membangkitkan anak-anak dari lantai yang lebih dahulu masuk ke dalam antrian Q. Apakah kedua cara tersebut akan menghasilkan lintasan yang optimal? Permasalahan ini akan dibahas pada uraian berikut ini, dengan mengacu permasalahan pada gambar 2.3: Cara : Membangkitkan anak-anak dari lantai yang baru masuk antrian Q Untuk memudahkan dalam memperlihatkan urutan pembangkitan lantai, struktur antrian Q yang merupakan priority queue akan dijabarkan dalam bentuk list sederhana. List ini adalah list yang disusun sehingga elemen dengan nilai cost terkecil diletakkan di paling depan, dan elemen list terurut menaik. C= (4, ) C= (5, 2) C= (3, 2) Gambar 2.4 List Priority Queue Untuk Gambar 2.3 Selanjutnya, akan dibangkitkan lantai anak dari elemen pertama list, yaitu lantai (4, ), dan lantai (4, ) dihilangkan dari list: C= (5, 2) C= (3, 2) C= (5, ) Gambar 2.5 Pembangkitan anak-anak lantai (4, ) Permasalahan timbul saat akan membangkitkan anak dari lantai (5, 2). Anak dari lantai (5, 2), yaitu lantai (5,3) memiliki cost, sama dengan lantai (3,2) yang telah terdapat dalam list. Sesuai dengan perjanjian cara, maka lantai (5,3) akan ditaruh sebagai elemen pertama dalam list, dan akan diperluas terlebih dahulu. Keadaan list pada saat pembangkitan anak dari lantai (5, 2) dapat dilihat pada gambar berikut: Gambar 2.6 Pembangkitan anak-anak (5, 2) Jika cara ini kita terapkan terus-menerus, maka urutan pembangkitan anak suatu waktu akan mencapai tahap berikut ini: 2 3 4 5 6 2 3 4 5 6 C= (3, ) C= (5, 3) C= (3, 2) C= (6, 2) C= (3, ) C= (5, ) Gambar 2. Urutan Pembangkitan Lantai dengan Cara

Sebagai akibatnya, lantai (3, 2) akan diperluas belakangan, setelah perluasan sampai di lantai (3, 5), dengan cost. Hal ini menjadi tidak menguntungkan karena robot tidak akan berjalan dalam lintasan yang paling minimum, diakibatkan perkembangan lantai yang tidak simetris, sehingga pembangkitan lantai dan jalur yang dipilih dapat dilihat pada gambar berikut: 2 3 4 5 6 2 3 4 5 6 Gambar 2. Lintasan yang Dipilih oleh Cara Lintasan yang dipilih menjadi tidak optimal, karena jalur yang diambil oleh robot berkelok dan tidak mengambil lantai (3, 5), yang seharusnya diambil sehingga lintasan menjadi optimal. Secara lengkap, robot akan melewati lantai-lantai (3, 2), (3, 3), (3, 4), (2, 4), (2, 5), (2, 6), (3, 6), (3, ), (4, ) Total jumlah langkah yang terjadi adalah langkah. Cara 2: Membangkitkan anak-anak dari lantai yang lebih dahulu masuk ke dalam antrian Q. Sekarang akan diuraikan cara pembangkitan lantai, apabila lantai yang terlebih dahulu masuk ke dalam antrian akan dibangkitkan terlebih dahulu anak-anaknya. Hampir sama seperti cara, namun pada saat pembangkitan anak dari lantai (5, 2), yaitu lantai (5, 3) yang memiliki cost, cost yang sama seperti lantai (3, 2), akan tetapi kali ini lantai (5, 3) akan disisipkan di dalam list setelah lantai (3, 2), yang telah dimasukkan ke dalam list terlebih dahulu. Keadaan list pada saat pembangkitan anak dari lantai (5, 2) dapat dilihat pada ilustrasi berikut C= (3, 2) C= (5, 3) C= (5, ) C= (6, 2) C= Gambar 2. Pembentukan List dengan Cara 2 (3, ) Sehingga bila kita tinjau dari gambar labirin, maka urutan pembentukannya adalah sebagai berikut: 2 3 4 5 6 2 3 4 5 6 Gambar 2.0 Pembangkitan Lantai Menggunakan Cara 2 Lintasan yang dipilih sekarang melewati lintasan yang optimal. Secara lengkap robot akan melewati lantailantai (3, 2), (3, 3), (3, 4), (3, 5), (3, 6), (3, ), (4, ). Total jumlah langkah yang terjadi adalah langkah. 3. PEMBAHASAN Terjadi hal yang menarik di sini. Dengan menggunakan cara, didapatkan bahwa total jumlah langkah yang diperlukan untuk mencapai finish adalah langkah, sedangkan total jumlah yang diperlukan bila menggunakan cara 2 adalah langkah. Cara akan membangkitkan anak-anak dari lantai yang baru masuk ke dalam antrian dan memiliki cost terkecil, sehingga urutan pembangkitan seperti DFS, yaitu memperluas salah satu lantai sampai mendekati finish. Struktur pohonnya sebelum perluasan lantai (3,2): (3,2) (3,) (5,) (4,5) (5,5) (4,) Gambar 3. Pohon Pembentukan Cara Sebelum (3, 2) Diperluas (5,4) (3,5) (5,2) (5,3) (6,2) (6,5) (6,4)

Pada gambar 3. dapat kita lihat pohon yang terbentuk memperluas anak paling kanan terlebih dahulu. Hal ini akan mengakibatkan lantai (3,5) sudah menjadi simpul dari pohon pembentukan, yang akan berpengaruh terhadap pembangkitan anak lantai (3,2) nantinya. Hal inilah yang patut dihindari agar robot dapat mencari lintasan yang terpendek. Sedangkan pada cara 2, lantai yang sudah masuk terlebih dahulu ke dalam antrian Q akan diperluas telebih dahulu, hal ini akan berakibat terbentuk pohon yang seimbang, antara perluasan lantai (3,2) dan lantai (5,2). Sebagian struktur pohonnya dapat dilihat pada gambar berikut: optimal, terutama dalam kasus pencarian jalur terpendek dengan menggunakan algoritma Branch and Bound. REFERENSI [] R. Munir, Diktat Kuliah IF225 Strategi Algoritmik, Program Studi Teknik Informatika ITB, 2006. [2] http://theory.stanford.edu/~amitp/gameprogramming/ Heuristics.html (tanggal akses: Mei 200) [3] (3,2) (4,) (2,2) (3,3) (3,) (5,) (5,2) (5,3) (6,2) (3,4) (2,3) (5,4) (6,4) (3,5) (5,5) (2,4) (6,5) (3,6) (2,5) (3,5) (4,5) (2,6) (3,) (2,) (3,) finish (4,) Gambar 3.2 Pembentukan Pohon Cara 2 Dapat kita lihat pada pembentukan pohon dengan cara 2, jalan yang ditempuh menjadi optimal, yaitu langkah, daripada membangkitkan lantai anak yang baru masuk ke dalam antrian Q terlebih dahulu. 4. KESIMPULAN Dalam menggunakan algoritma Branch and Bound, maka sangat disarankan untuk memperhatikan urutan pembangkitan anak, walaupun pada saat ada lantai yang mempunyai cost sama, diutamakan untuk membangkitkan lantai yang sudah terlebih dahulu terdapat dalam antrian Q terlebih dahulu, sehingga arah pembentukan pohonnya menjadi berimbang, dan mengantisipasi kemungkinan solusi yang didapatkan tidak