Analisis Perbandingan Implementasi Algoritma Shortest Path A* dan Flood-Fill pada Kompetisi Micromouse

dokumen-dokumen yang mirip
PENCARIAN SHORTEST PATH DINAMIK DENGAN ALGORITMA BELLMAN-BASED FLOOD-FILL DAN IMPLEMENTASINYA PADA ROBOT MICROMOUSE

Pembahasan Pencarian Lintasan Terpendek Menggunakan Algoritma Dijkstra dan A*

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

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

Penggunaan Algoritma Pathfinding pada Game

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

Penerapan Algoritma A* (A Star) Sebagai Solusi Pencarian Rute Terpendek Pada Maze

BAB 2 LANDASAN TEORI

dengan Algoritma Branch and Bound

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

Algoritma Brute-Force dan Greedy dalam Pemrosesan Graf

Menentukan Susunan Terbaik Tim Proyek dengan Algoritma Branch and Bound

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

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

Penerapan Algoritma BFS dan DFS dalam Mencari Solusi Permainan Rolling Block

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

BAB IV PENGUJIAN DAN ANALISIS

Penerapan Algoritma Branch and Bound untuk Penentuan Jalur Wisata

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

Penerapan Algoritma Brute Force dan Backtracking pada Permainan Skycraper

Penerapan Algoritma Greedy dan Breadth First Search pada Permainan Kartu Sevens

Menentukan Starting Lineup Futsal Terbaik dengan Algoritma Branch and Bound

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

Pencarian Lintasan Terpendek Pada Aplikasi Navigasi Menggunakan Algoritma A*

Implementasi Graf dalam Penentuan Rute Terpendek pada Moving Object

Penerapan Travelling Salesman Problem dalam Penentuan Rute Pesawat

BAB I PENDAHULUAN. Di tengah masyarakat dengan aktivitas yang tinggi, mobilitas menjadi hal yang penting.

Implementasi Logika Penurunan Persamaan Aritmatika pada Program Komputer

Penerapan Algoritma A* Sebagai Algoritma Pencari Jalan Dalam Game

PENGEMBANGAN HEURISTIK DIFERENSIAL TERKOMPRESI UNTUK ALGORITMA BLOCK A*

Analisis Beberapa Algoritma dalam Menyelesaikan Pencarian Jalan Terpendek

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

Algoritma A* Memanfaatkan Navigation Meshes dalam 3 Dimensional Pathfinding

Pengembangan Heuristik Diferensial Terkompresi untuk Algoritma Block A*

BAB III ANALISIS DAN PERANCANGAN SISTEM

Memecahkan Puzzle Hidato dengan Algoritma Branch and Bound

VARIASI PENGGUNAAN FUNGSI HEURISTIK DALAM PENGAPLIKASIAN ALGORITMA A*

Metode Path Finding pada Game 3D Menggunakan Algoritma A* dengan Navigation Mesh

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

Penerapan Algoritma Brute force dan Greedy pada Penjadwalan Disk

BAB II TINJAUAN PUSTAKA

BAB III PERANCANGAN KECERDASAN-BUATAN ROBOT PENCARI JALUR

Penerapan Graf pada Robot Micromouse

Penerapan Algoritma A* Untuk Pencarian Rute Terdekat Pada Permainan Berbasis Ubin (Tile Based Game)

Penyelesaian N-Puzzle Menggunakan A* dan Iterative Deepening A*

Pencarian Pohon Solusi Permainan Alchemy Menggunakan Algoritma BFS dan DFS

Penggunaan Algoritma DFS dan BFS pada Permainan Three Piles of Stones

Analisis Pengimplementasian Algoritma Greedy untuk Memilih Rute Angkutan Umum

METODE BRANCH AND BOUND UNTUK MENEMUKAN SHORTEST PATH

Penerapan Algoritma A* dalam Penentuan Lintasan Terpendek

Aplikasi Graf pada Persoalan Lintasan Terpendek dengan Algoritma Dijkstra

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

Algoritma Prim sebagai Maze Generation Algorithm

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

Aplikasi Algoritma Traversal Dalam Binary Space Partitioning

HEURISTIC SEARCH UTHIE

Implementasi Algoritma Greedy pada Permainan Ludo

Aplikasi Algoritma Greedy untuk Pergerakan Musuh pada Permainan Pac-Man

Penerapan Algoritma Backtracking untuk Menyelesaikan Permainan Hashiwokakero

Perbandingan Algoritma Brute Force dan Breadth First Search dalam Permainan Onet

Pembuktian Kesulitan Hamiltonian Cycle Problem dengan Transformasi 3-Satisfiability Problem

Penerapan Algoritma Branch and Bound pada Penentuan Staffing Organisasi dan Kepanitiaan

Penggunaan Algoritma DFS dalam Pencarian Strategi Permainan Catur

Penerapan BFS dan DFS dalam Garbage Collection

Aplikasi Shortest Path dengan Menggunakan Graf dalam Kehidupan Sehari-hari

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

Aplikasi Teori Graf dalam Penggunaan Cairan Pendingin pada Proses Manufaktur

Aplikasi Pohon Merentan Minimum dalam Menentukan Jalur Sepeda di ITB

Penerapan Algoritma DFS pada Permainan Sudoku dengan Backtracking

BAB 3 PENANGANAN JARINGAN KOMUNIKASI MULTIHOP TERKONFIGURASI SENDIRI UNTUK PAIRFORM-COMMUNICATION

Strategi Algoritma Penyelesaian Puzzle Hanjie

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

Aplikasi Algoritma MiniMax pada Beberapa Permainan Papan

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

SSSS, Problem Solving. State Space Search. Erick Pranata. Edisi I

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

Penerapan Algoritma Flood Fill untuk Mengurangi Ruang Pencarian pada Pencarian Solusi Puzzle Pentomino

Implementasi Algoritma DFS pada Pewarnaan Gambar Sederhana Menggunakan Bucket tool

Penggunaan Algoritma Dijkstra dalam Penentuan Lintasan Terpendek Graf

Penerapan Algoritma Greedy dalam Algoritma Penjadwalan Prosesor Tunggal Shortest Job First

Penerapan Algoritma Prim dan Kruskal Acak dalam Pembuatan Labirin

BAB I PENDAHULUAN. ini. Salah satu penerapannya yaitu terdapat pada permasalahan dalam melakukan pencarian dari

Penerapan Teori Graf Pada Algoritma Routing

Aplikasi Shortest Path dalam Strategy Game Mount & Blade: Warband

Algoritma Dijkstra Sebagai Dasar Pencarian Rute Tercepat pada Aplikasi Berbasis GPS Waze

Penerapan Teori Graf untuk Pathfinding pada Permainan Elektronik

BAB I PENDAHULUAN. yang juga diterapkan dalam beberapa kategori game seperti real time strategy

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

Menyelesaikan Permainan Wordament Menggunakan Algoritma Backtracking

Strategi Permainan Menggambar Tanpa Mengangkat Pena

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

IMPLEMENTASI ALGORITMA GREEDY PADA PERMAINAN OTHELLO

Penggabungan Algoritma Brute Force dan Backtracking dalam Travelling Thief Problem

Pohon Biner Sebagai Struktur Data Heap dan Aplikasinya

SIMULASI ALGORITMA A* UNTUK MENYELESAIKAN PATHFINDING

Penerapan Kombinatorial dalam Permainan Sudoku

Pengaplikasian Algoritma Dijkstra Dalam Pembuatan Agenda Penerbangan

Penerapan Algoritma Greedy dalam Pembuatan Artificial Intelligence Permainan Reversi

Aplikasi Graf dalam Rute Pengiriman Barang

Algoritma Greedy pada Board Game Saboteur

Transkripsi:

Analisis Perbandingan Implementasi Algoritma Shortest Path A* dan Flood-Fill pada Kompetisi Micromouse Arvin Yustin Program Studi Teknik Informatika Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung, Jl. Ganesha 10 Bandung 40132, Indonesia 13517124@std.stei.itb.ac.id Abstraksi - Micromouse Competition adalah kompetisi tahunan yang memperlombakan robotrobot mini untuk menyelesaikan jalur pada maze ukuran 16x16. Kompetisi Micromouse dimulai sejak tahun 1970-an, dan hingga sekarang terdapat beberapa kejuaraan tingkat regional, seperti Micromouse USA, All-Japan Micromouse Contest, IIT Kharagpur s Robotics Competitions. Kata kunci heuristik, robot, micromouse, A-star, flood-fill, priority queue, Manhattan distance, best first-search, Dijkstra, upper-bound I. PENGENALAN Dalam dunia nyata, banyak hal tidak dapat terlepas dalam pikiran kita, terutama dalam memikirkan cara menuju ke sebuah tempat. Ambillah contoh kita hendaknya pergi ke rumah kos seorang teman dan anggaplah teknologi masih belum mendukung GPS (Global Positioning System). Pertanyaan yang pertama kali muncul ialah bagaimana. Bagaimana kita sampai (dalam hal ini rumah kos teman). Diberikan sebuah alamat jalan, dan nomor rumah, Kita hanya bisa mencocokkan nama jalan dan posisi samar rumah kos dari perkiraan letak nomor rumah. Pengetahuan akan perkiraan jalan dan letak nomor rumah itu merupakan landasan dari teori heuristik, dimana robot diberikan sebuah clue dalam pencariannya. Pada perkembangan algoritma shortest path, sering digunakan bantuan heuristik sehingga algoritma tersebut mempunyai otak pemroses apa yang benar, dan apa yang salah. Algoritma yang memakai sistem heuristik di antaranya ialah A-star dan Flood-filling. Algoritma ini banyak diimplementasikan ketika robot sudah mengetahui secara kasar dimensi atau karakteristik area yang akan menjadi lingkungannya A. Algoritma A* II. TEORI DASAR Algoritma A* (dibaca A-star) ialah kombinasi konsep algoritma Dijkstra dan Best First- Search. Pada algoritma Dijkstra, hal yang diperhatikan hanyalah jarak simpul sedekat mungkin dengan titik awal. Sedangkan Best First-Search memperhatikan jarak heuristik antara titik sekarang dengan titik (jarak heuristik harus selalu overestimate karena permintaan untuk mendapatkan jarak minimum). Algoritma A* dibantu oleh sebuah fungsi f(x) = g(x) + h(x), dimana g(x) merupakan jarak titik awal ke titik sekarang, dan h(x) jarak heuristik titik sekarang ke. Setiap pergerakan dari sebuah robot, fungsi f(x) diperhatikan sehingga selalu memberikan solusi optimal. Fungsi heuristik dihitung dari formula Manhattan Distance, yaitu banyak langkah menuju titik. Fungsi jenis ini idealnya digunakan jika gerak robot dibatasi atas-bawah, dan kiri-kanan. h(x) = abs(y y t) + abs(x x t) (1) B. Algoritma Flood-Fill Algoritma Flood-Fill menggunakan strategi heuristik dengan menciptakan sebuah array 2 dimensi yang merepresentasikan maze, kemudian masing-masing sel diisi nilai heuristiknya sesuai fungsi distance yang ditentukan. Umumnya peserta micromouse menggunakan algoritma ini untuk kompetisi. C. Struktur Maze Maze berbentuk persegi dengan ukuran 16x16. Untuk kemudahan dalam analisi pada makalah ini, akan ukuran maze diperkecil menjadi

5x5. Titik awal selalu dimulai dari pojok sudut maze. Setiap peserta harus tiba sampai bagian tengah maze yang berukuran 2x2, kemudian kembali ke titik awal. Jalur dalam maze dapat bersifat siklik, artinya bisa membentuk sirkuit. Maze yang diciptakan pasti mempunyai solusi sekurang-kurangnya 1 buah. III. CARA KERJA ALGORITMA PENCARIAN JALUR A. Algoritma A* Nilai upper boundary ialah nilai cost maksimum jalur yang akan ditempuh robot dari titik awal menuju daerah. Assignment nilai boundary pertama bernilai kuadrat dari ukuran maze (robot harus mengelilingi seluruh area maze sebelum sampai ). Robot memeriksa daerah tetangganya, memasukkan nilai f(x) dan posisi tetangga ke dalam priority queue. Tetangga-tetangga tersebut akan diperiksa terlebih dahulu apakah bisa diakses langsung dari sel sekarang - dengan kata lain, tidak ada dinding penghalang. Struktur data tersebut sedemikian sehingga yang akan dikutip pertama kali dari queue adalah elemen yang memiliki nilai f(x) terkecil (minimum). Kemudian pop elemen dan lakukan perpindahan ke posisi yang di-pop. 1. Assign upper boundary sama dengan kuadrat ukuran maze 2. Periksa posisi tetangga dan validasi apakah posisi tetangga valid. Dikatakan valid jika posisi tetangga masih di dalam ukuran maze dan dapat diakses secara langsung dari sel sekarang (tidak ada dinding penghalang. 3. Lakukan langkah 2 hingga ditemukannya sel Untuk kembali dari bagian tengah maze ke titik awal, cukup menggunakan array simpul yang pernah dilalui, sehingga mengurangi langkahlangkah yang perlu diperiksa. Untuk membantu dalam menyimpan struktur data, maka dipakai Priority Queue, dimana elemen tunggal dari queue ialah posisi, dan nilai g(x) dan h(x) dimana, g(x) dihitung dari jumlah langkah yang diambil dari langkah sebelumnya (bukan simpul hidup), sedangkan g(x) dihitung dari fungsi heuristik. Selain itu, diperlukan sebuah array 2 dimensi yang berisi sel-sel yang sudah pernah ditempuh. Dengan adanya array tersebut, robot bisa bergerak ke sel yang sudah pernah dilalui tanpa melakukan pemeriksaan yang berlebih. Jika sudah mencapai goal, jangan melakukan pencarian lagi. B. Algoritma Flood-Fill Algoritma Flood-fill membutuhkan pemetaan pertama terhadap maze sebelum memulai perjalanan. Masing-masing sel pada array akan diisi dengan nilai optimistik menuju fungsi heuristik. Tujuan robot sekarang ialah mencapai sel yang bernilai heuristik sama dengan 0. 1. Robot bergerak ke sel tetangga dengan nilai heuristik lebih kecil dari heuristik di sel yang ia berada sekarang 2. Jika robot tidak dapat menemukan sel tetangga dengan nilai heuristik yang lebih kecil, update nilai heuristik hingga sel-sel yang dilalui secara konsisten yakni menurun. 3. Jika menemukan sel tetangga dengan heuristik lebih kecil, ulangi langkah 1 hingga ditemukan nilai heuristik sama dengan 0 sudah sampai Untuk kembali ke titik asal, lakukan hal yang sama, dengan array di-set ulang dan diisi nilai heuristik acuan titik akhir adalah titik dimulainya permainan. Update nilai heuristic pada sel-sel yang pernah dilalui dan tidak konsisten dapat dilakukan dengan pemanfaatan struktur data stack pada algoritma berikut. Setiap mengunjungi sebuah sel, push sel tersebut ke stack Perulangan selama stack tidak kosong: o Pull sel dari stack. o Periksa apakah heuristik sel lebih besar dari sel tetangganya. o Jika iya, pull sel lainnya dari stack.

o Jika tidak, update heuristic sel tersebut dengan heuristik terkecil sel tetangga tersebut, kemudian ditambah 1. Lalu push semua sel tetangganya ke dalam stack. IV. PERCOBAAN Pada percobaan ini, saya menggunakan maze ukuran 5x5 dengan posisi awal mice berada pada sudut kiri bawah. Gambar 5 Kondisi saat dekat penghalang Gambar 6 Sel baris 1 kolom 1 tetap diperiksa Gambar 1. Peta Maze A. Implementasi A-star pada Maze Gambar 7 Robot mencapai B. Implementasi Flood-fill pada Maze Tahap pertama ialah mengisi array representasi Maze dengan nilai heuristik / optimistik. Pada tahap ini, dianggap tidak terdapat dinding penghalang. Gambar 2. Periksa tetangga, Jika hanya terdapat 1 pilihan, masuk Periksa apakah sel tetangga dapat diakses tidak. Selain itu, perlu diperhatikan sebelum diambil sel yang akan dikunjungi terhadap nilai estimasi biaya tempuh, yaitu penjumlahan jarak tempuh sekarang dengan estimasi heuristik ke seperti Gambar 4. Gambar 8. Pengisian nilai heuristik Kemudian menelusuri sel tetangga yang Gambar 3. Jika terdapat 2 Gambar 4. Ambil sel dengan tetangga atau lebih yang bisa nilai f(x) minimum (warna dilalui, ambil f(x) minimum merah) Gambar 9. Langkah pemilihan sel(1) Pemeriksaan tetap mengikuti kaidah A-star, sebagaimana memeriksa hingga robot stuck, karena secara visual benar, tetapi robot tidak bisa mengenali apa yang akan dihadapinya, baik dinding maupun penghalang. Seperti pada Gambar 6. Jika robot sudah mencapai, hentikan pencarian, karena tidak perlu mencari jalan lagi. Gambar 10. Langkah pemilihan sel(2) heuristiknya lebih kecil. Karena maze adalah area berpetak, selisih antar sel (atas-bawah, kiri-kanan) selalu bernilai 1 satuan. Gambar 11. Langkah pemilihan sel(3)

Pada Gambar 11, sel selanjutnya dari sel berwarna bernilai 2, tidak bisa diambil karena sel tetangga yang diambil wajib mempunyai nilai yang lebih kecil. Untuk bisa melanjutkan perjalanan, maka sel sekarang yand didiami harus di-update nilainya, beserta sel-sel yang pernah dilalui 1. Melanjutkan pencarian dengan nila heuristic menurun 2. Memperbarui nilai cost sebenarnya jika robot melalui sel tersebut, artinya robot akan mendapatkan cost yang lebih besar Ulangi update dan pemilihan sel seperti langkah-langkah di atas hingga mencapai. V. PERBANDINGAN Berdasarkan percobaan pada maze di atas, algoritma A* cenderung menelusuri semua sel yang berada di dalam maze agar mendapat jalur terpendek. A* juga tidak konsisten dalam pemilihan jalur, seperti Gambar 12. Nilai sel tidak sejalan dengan sel yang akan dilalui Gambar 13. Nilai heuristik setelah diperbarui pada Gambar 5 dan 6, terdapat 3 buah sel yang belum diekspan. Sel yang akan diekspan selanjutnya ialah yang bernilai 10. Terdapat 2 buah sel yang bernilai 10 satuan, sehingga kemungkinan sel yang terpilih ialah Gambar 14 Gambar 15 sel yang berada pada posisi row 1 dan column 1, Jika terjadi, maka robot harus berpindah dari sel posisi row 2 dan column 3 ke sel yang kembali menjauh, padahal sudah sangat dekat. Pada kasus terburuk (worst-case), algoritma A* memeriksa seluruh sel di dalam maze. Pada algoritma Flood-fill, pemeriksaan sel konsisten dengan urutan menurun, yakni memilih sel selanjutnya dengan heuristik lebih kecil. Bagaimana jika heuristic tetangga lebih besar? Untuk terus melanjutkan proses pencarian, dilakukan perbaruan nilai heuristik dari sel yang sedang ditempati. Tujuannya: Gambar 16. Robot mencapai Perhitungan ulang heuristik sel-sel yang sudah dilalui tidak perlu menggerakkan robot ke sel tersebut, karena perubahan dilakukan di dalam prosesor dan di array yang sudah disimpan sebelumnya. Kelebihan ini memberi nilai tambah yang signifikan untuk algoritma flood-fill. Selain itu, algoritma flood-fill juga konsisten pada jalurnya, tidak menyebar dan mengarah ke satu arah jalur. VI. KESIMPULAN Kedua algoritma di atas dapat digunakan pada kompetisi micromouse. Penekanan pada algoritma A- star adalah mencari jalur terpendek, bukan jalur terpendek dan tercepat. Sehingga robot akan terlihat mengeksplorasi bagian-bagian dari maze. Keuntungannya ialah, robot sudah mengetahui jalur mana yang akan diambil ketika kembali dari tengah maze ke posisi semula. A-star idealnya digunakan pada maze yang percabangannya sedikit, sehingga simpul-simpul yang mungkin hanya sedikit atau mendekati 1, sehingga pemeriksaan simpul dilakukan hanya sekali dan tidak melompat. Sedangkan algoritma flood-fill cenderung mempertahankan jalurnya agar konsisten menuju. Akan tetapi hal tersebut dibayar dengan penggunaan memori yang berlebih karena menyimpan struktur data stack. Selain itu, dapat terjadi perulangan dengan worst-case, setiap sel diupdate ketika di-push dari stack. Dampak tersebut dapat diperkecil dengan mengubah spesifikasi perangkat keras dari robot

tersebut, seperti prosesor yang mampu menampung memori lebih besar dan menangani proses lebih banyak pada satu satuan waktu. Algoritma flood-fill idealnya digunakan ketika menghadapi maze dengan cabang yang banyak, karena mampu mendapatkan keputusan optimal dalam pemilihan cabang. IX. PERNYATAAN Dengan ini saya menyatakan bahwa makalah yang saya tulis ini adalah tulisan saya sendiri, bukan saduran, atau terjemahan dari makalah orang lain, dan bukan plagiasi. Bandung, 26 April 2019 VII. UCAPAN TERIMA KASIH Saya ucapkan terima kasih kepada para dosen pengajar mata kuliah strategi algoritma selama 1 semester ini. Walaupun tugas yang diberikan tidaklah sedikit, saya tetap bersyukur dan dapat memetik pelajaran dan pengalaman dari pengerjaan tugastugas ini. Tidak lupa saya ucapkan terima kasih kepada orang tua saya yang selalu mendengarkan keluh kesah saya selama ini. Arvin Yustin 13517124 VIII. REFERENSI [http://robogames.net/rules/maze.php, diakses pada tanggal 24 April 2019] [http://informatika.stei.itb.ac.id/~rinaldi.munir/stmik/201 7-2018/A-Star-Best-FS-dan-UCS-(2018).pdf. diakses pada tanggal 25 April 2019] [3] Ibrahim Elshamarka dan Abu Bakar Sayuti Saman, Jurnal Design and Implementation of a Robot for Maze-Solving using Flood-Fill Algorithm, vol 56, No.5, International Journal of Computer Applications, 2012. [4] Liu, Xiang & Gong, Daoxiong. (2011). A comparative study of A-star algorithms for search and rescue in perfect maze. 10.1109/ICEICE.2011.5777723. [5] Barnouti, N.H., Al-Dabbagh, S.S.M. and Naser, M.A.S.(2016) Pathfinding in Strategy Games and Maze Solving Using A* Search Algorithm, Journal of Computer and Communications, 4, 15-25. http://dx.doi.org/10.4236/jcc.2016.411002