BAB 2 TINJAUAN PUSTAKA

dokumen-dokumen yang mirip
BAB I PENDAHULUAN. himpunan bagian bilangan cacah yang disebut label. Pertama kali diperkenalkan

Graf digunakan untuk merepresentasikan objek-objek diskrit dan hubungan antara objek-objek tersebut. Demak Semarang. Kend al. Salatiga.

BAB 2 TINJAUAN PUSTAKA

BAB II LANDASAN TEORI

Kode MK/ Matematika Diskrit

BAB 2 LANDASAN TEORI

GRAF. V3 e5. V = {v 1, v 2, v 3, v 4 } E = {e 1, e 2, e 3, e 4, e 5 } E = {(v 1,v 2 ), (v 1,v 2 ), (v 1,v 3 ), (v 2,v 3 ), (v 3,v 3 )}

Penggunaan Algoritma Dijkstra dalam Penentuan Lintasan Terpendek Graf

LANDASAN TEORI. Bab Konsep Dasar Graf. Definisi Graf

G r a f. Pendahuluan. Oleh: Panca Mudjirahardjo. Graf digunakan untuk merepresentasikan objek-objek diskrit dan hubungan antara objek-objek tersebut.

METODE PENCARIAN DAN PELACAKAN

Graf. Matematika Diskrit. Materi ke-5

Discrete Mathematics & Its Applications Chapter 10 : Graphs. Fahrul Usman Institut Teknologi Bandung Pengajaran Matematika

BAB II LANDASAN TEORI

BAB 2 LANDASAN TEORI

Graf. Program Studi Teknik Informatika FTI-ITP

BAB II LANDASAN TEORI

BAB II LANDASAN TEORI

BAB 2 LANDASAN TEORI. yang tak kosong yang anggotanya disebut vertex, dan E adalah himpunan yang

BAB 2 TINJAUAN PUSTAKA

BAB 2 LANDASAN TEORI

LATIHAN ALGORITMA-INTEGER

Algoritma Brute-Force dan Greedy dalam Pemrosesan Graf

BAB II LANDASAN TEORI

BAB II TINJAUAN PUSTAKA

LOGIKA DAN ALGORITMA

CRITICAL PATH. Menggunakan Graph berbobot dan mempunya arah dari Critical Path: simpul asal : 1 simpul tujuan : 5. Graph G. Alternatif

Bab 2 LANDASAN TEORI

BAB 2 LANDASAN TEORI

Graf. Graf digunakan untuk merepresentasikan objek-objek diskrit dan hubungan antara objek-objek tersebut.

BAB 2 LANDASAN TEORI

Sistem Kecerdasan Buatan. Masalah, Ruang Masalah dan Pencarian Solusi. Masalah. Masalah Sebagai Ruang Keadaan 10/7/2015

BAB 2 LANDASAN TEORI

BAB 2 LANDASAN TEORI. 2.1 Penugasan Sebagai Masalah Matching Bobot Maksimum Dalam Graf Bipartisi Lengkap Berlabel

METODE PENCARIAN BFS dan DFS

Aplikasi Algoritma Dijkstra dalam Pencarian Lintasan Terpendek Graf

KECERDASAN BUATAN METODE HEURISTIK / HEURISTIC SEARCH ERWIEN TJIPTA WIJAYA, ST., M.KOM

Pertemuan-07 INFORMATIKA FASILKOM UNIVERSITAS IGM

BAB 2 LANDASAN TEORI

TEORI GRAF UNIVERSITAS MUHAMMADIYAH JEMBER ILHAM SAIFUDIN PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS TEKNIK. Selasa, 13 Desember 2016

Aplikasi Pewarnaan Graf untuk Sistem Penjadwalan On-Air Stasiun Radio

BAB 2 LANDASAN TEORI

Graph. Rembang. Kudus. Brebes Tegal. Demak Semarang. Pemalang. Kendal. Pekalongan Blora. Slawi. Purwodadi. Temanggung Salatiga Wonosobo Purbalingga

BAB 2 LANDASAN TEORITIS

BAB 2 LANDASAN TEORI

Dasar-Dasar Teori Graf. Sistem Informasi Universitas Gunadarma 2012/2013

BAB II LANDASAN TEORI

BAB III METODE PELACAKAN/PENCARIAN

BAB 2 LANDASAN TEORI. 2.1 Teori graf Definisi graf

Pencarian Lintasan Hamilton Terpendek untuk Taktik Safe Full Jungle Clear dalam Permainan League of Legends

BAB 2 LANDASAN TEORI

BAB 2 LANDASAN TEORI

Denny Setyo R. Masden18.wordpress.com

BAB 2 LANDASAN TEORI

Graf dan Analisa Algoritma. Pertemuan #01 - Dasar-Dasar Teori Graf Universitas Gunadarma 2017

Representasi Graph Isomorfisme. sub-bab 8.3

Graph. Politeknik Elektronika Negeri Surabaya

BAB II LANDASAN TEORI. definisi, teorema, serta istilah yang diperlukan dalam penelitian ini. Pada bab ini

BAB 2 LANDASAN TEORI

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

SEARCHING. Blind Search & Heuristic Search

BAB I PENDAHULUAN. Masalah lintasan terpendek berkaitan dengan pencarian lintasan pada graf

Aplikasi Teori Graf dalam Manajemen Sistem Basis Data Tersebar

Penerapan Algoritma Branch and Bound pada Penentuan Staffing Organisasi dan Kepanitiaan

APLIKASI PEWARNAAN SIMPUL GRAF UNTUK MENGATASI KONFLIK PENJADWALAN MATA KULIAH DI FMIPA UNY

PENDAHULUAN MODUL I. 1 Teori Graph Pendahuluan Aswad 2013 Blog: 1.

MENENTUKAN LINTASAN TERPENDEK SUATU GRAF BERBOBOT DENGAN PENDEKATAN PEMROGRAMAN DINAMIS. Oleh Novia Suhraeni 1, Asrul Sani 2, Mukhsar 3 ABSTRACT

BAB 2 LANDASAN TEORI

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

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

ALGORITMA PENCARIAN (1)

ALGORITMA PENCARIAN SIMPUL SOLUSI DALAM GRAF

HEURISTIC SEARCH UTHIE

Matematika Diskret (Graf I) Instruktur : Ferry Wahyu Wibowo, S.Si., M.Cs.

BAB 2 LANDASAN TEORI

HAND OUT MATA KULIAH TEORI GRAF (MT 424) JILID SATU. Oleh: Kartika Yulianti, S.Pd., M.Si.

BAB II LANDASAN TEORI

memberikan output berupa solusi kumpulan pengetahuan yang ada.

Kecerdasan Buatan Penyelesaian Masalah dengan Pencarian

Pemanfaatan Directed Acyclic Graph untuk Merepresentasikan Hubungan Antar Data dalam Basis Data

METODE BRANCH AND BOUND UNTUK MENEMUKAN SHORTEST PATH

BAB II KAJIAN PUSTAKA. Sebuah graf G didefinisikan sebagai pasangan himpunan (V,E), dengan V

TINJAUAN PUSTAKA. Pada bab ini akan diberikan beberapa definisi, istilah istilah yang berhubungan dengan materi

2. TINJAUAN PUSTAKA. Chartrand dan Zhang (2005) yaitu sebagai berikut: himpunan tak kosong dan berhingga dari objek-objek yang disebut titik

Graf dan Pengambilan Rencana Hidup

= himpunan tidak-kosong dan berhingga dari simpul-simpul (vertices) = himpunan sisi (edges) yang menghubungkan sepasang simpul

BAB 2 TINJAUAN PUSTAKA

BAB II LANDASAN TEORI

BAB I PENDAHULUAN. dirasakan peranannya, terutama pada sektor sistem komunikasi dan

BAB 2 LANDASAN TEORI

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

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

PEWARNAAN GRAF SEBAGAI METODE PENJADWALAN KEGIATAN PERKULIAHAN

Update 2012 DESAIN DAN ANALISIS ALGORITMA SEARCHING

Aplikasi Teori Graf dalam Permainan Instant Insanity

Aplikasi Graf pada Hand Gestures Recognition

BAB II TINJAUAN PUSTAKA. masing-masing tepat satu kali dan kembali lagi ke tempat semula?

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

Aplikasi Shortest Path dengan Menggunakan Graf dalam Kehidupan Sehari-hari

Team project 2017 Dony Pratidana S. Hum Bima Agus Setyawan S. IIP

Transkripsi:

BAB 2 TINJAUAN PUSTAKA 2.1 Graf 2.1.1 Definisi Graf Graf adalah pasangan himpunan (V, E), dan ditulis dengan notasi G = (V, E), V adalah himpunan tidak kosong dari verteks-verteks {v 1, v 2,, v n } yang dalam hal ini verteks merupakan himpunan tidak kosong dari verteks-verteks (vertices atau node) dan E adalah himpunan edge {e 1, e 2,, e n } atau sisi yang menghubungkan sepasang verteks. (Munir : 2009) Sebuah graf dimungkinkan tidak mempunyai edge satu buah pun, tetapi verteksnya harus ada minimal satu. Graf yang hanya memiliki satu buah verteks tanpa sebuah edge pun dinamakan graf trivia. 2.1.2 Jenis-jenis Graf Graf dapat dikelompokkan berdasarkan ada tidaknya edge nya yang paralel atau loop, jumlah verteksnya, berdasarkan ada tidaknya arah pada edge nya, adatidaknya bobot pada edge nya, atau ada tidaknya hubungan dengan graf yang lain. Berikut ini adalah jenis graf berdasarkan ada tidaknya edge yang paralel atau loop. 1. Graf Sederhana Graf sederhana adalah graf yang tidak mempunyai edge ganda dan atau loop, loop adalah edge yang menghubungkan sebuah verteks dengan dirinya sendiri). Berikut adalah contoh graf sederhana :

Gambar 2.1 Contoh Graf sederhana 2. Graf Tak-Sederhana Graf tak-sederhana adalah graf yang memiliki edges ganda dan atau loop. Graf tak sederhana dapat dibagi dua yaitu: Graf Ganda (multigraph), adalah graf yang mengandung edge ganda. Sisi ganda yang menghubungkan sepasang verteks bisa lebih dari dua buah. Graf semu (pseudograph), adalah graf yang mempunyi loop, termasuk juga graf yang mempunyai loop dan edge ganda karena itu graf semu lebih umum daripada graf ganda, karena graf semu edge-nya dapat terhubung dengan dirinya sendiri Gambar 2.2 Contoh Graf Ganda Gambar 2.3 Contoh Graf Semu

Selain berdasarkan ada tidaknya edge yang paralel atau loop, graf dapat juga dikelompokkan berdasarkan orientasi arah atau panah. 1. Graf tak-berarah (undirected graph) Graf tak berarah adalah graf yang edge nya tidak mempunyai orientasi arah atau panah. Pada graf ini, urutan pasangan verteks yang dihubungkan oleh edge tidak diperhatikan. Jadi (v j, v k ) = (v k, v j ) adalah edge yang sama. Gambar 2.4 Graf tak berarah 2. Graf Berarah (directed graph atau digraph) Graf berarah adalah graf yang setiap edge nya memiliki orientasi arah atau panah. Pada graf berarah (v j, v k ) (v k, v j ). Gambar 2.5 Contoh Graf berarah Berdasarkan jumlah verteks pada suatu graf, maka secara umum graf dapat digolongkan menjadi dua jenis: 1. Graf berhingga ( limited graph ). Graf berhingga adalah graf yang jumlah verteksnya, n, berhingga. Contoh 2.4 adalah graf berhingga 2. Graf tak-berhingga ( unlimited graph ). Graf tak-berhingga adalah graf yang jumlah verteksnya, n tidak berhingga.

Gambar 2.6 Graf tag berhingga 2.1.3 Terminologi Dasar Dibawah ini adalah beberapa terminologi (istilah) dasar yang berkaitan dengan graf. 1. Bertetangga (Adjacent) Dua buah verteks pada graf tak berarah G dikatakan bertetangga bila keduanya terhubung langsung dengan sebuah edge. Dengan kata lain, v i bertetangga dengan v j jika (v i, v j ) adalah sebuah edge pada graf G. Gambar 2.7 Graf G 1 Pada gambar 2.5. verteks v 1 betetangga dengan verteks v 2, v 3 dan v 4. Verteks v 2 bertetangga dengan v 1 dan v 4, tetapi tidak bertetangga denga v 3. 2. Bersisian (incident) Untuk sembarang edge e = ( v j, v k ), edge e dikatakan bersisian dengan verteks v j dan verteks v k. Pada gambar 2.5 edge e 1 bersisian dengan verteks v 1 dan verteks v 2 edge e 5 bersisian dengan verteks v 3 dan verteks v 4, tetapi tidak bersisian dengan v 2.

3. Derajat (Degree) Derajat suatu verteks pada graf tak berarah adalah jumlah edge yang bersisian dengan verteks tersebut. Pada graf berarah, derajat verteks v dinyatakan dengan d in (v) dan d out (v), yang dalam hal ini: d in (v) = derajat masuk (in-degree) = jumlah verteks yang masuk ke verteks v d out (v) = derajat keluar (out-degree) = jumlah verteks yang keluar dari verteks v Dan d(v) = d in (v) + d out (v). Dalam hal ini d(v) menyatakan derajat verteks. 4. Lintasan (path) Lintasan yang panjangnya n dari edge awal v 0 ke verteks tujuan v n di dalam graf G ialah barisan berselang-seling verteks-verteks dan edge -edge yang berbentuk v 0, e 1, v 1, e 2, v 2,, v n-1, e n, v n sedemikian sehingga e 1 = ( v 0, v 1 ), e 2 = ( v 1, v 2 ),, e n = ( v n-1, v n ) adalah edge -edge dari graf G. Sebuah lintasan dikatakan lintasan sederhana (simple path) jika semua verteksnya berbeda atau setiap edge yang dilalui hanya satu kali. Lintasan yang berawal dan berakhir pada verteks yang sama disebut lintasan tertutup (closed path) sedangkan lintasan yang memiliki verteks awal dan verteks akhir yang berbeda disebut lintasan terbuka (open path). Pada gambar 2.5 lintasan v 1, v 2, v 4, v 3 merupakan lintasan sederhana yang juga lintasan terbuka. Lintasan v 1, v 2, v 4, v 3, v 1 merupakan lintasan sederhana yang juga lntasan tertutup. Sedangkan lintasan v 2, v 4, v 3, v 1, v 4 bukan merupakan lintasan sederhana, tetapi lintasan terbuka. 5. Graf Berbobot (Weighted Graph) Graf berbobot adalah graf yang setiap sisinya diberikan sebuah harga (bobot). Bobot pada setiap sisi dapat menyatakan jarak antara dua buah kota, biaya perjalanan, waktu tempuh, ongkos produksi, dan sebagainya.

Dalam tugas akhir ini, bobot pada pada setiap graf menyatakan jarak antara dua buah kota dalam kilometer (km). Gambar 2.8 Contoh Graf Berbobot 6. Sirkuit (Circuit) atau Cycle Dalam satu graf terdapat suatu sirkuit apabila terdapat lintasan (path) yang mempunyai verteks awal dan verteks akhir sama. Gambar 2.9 Sirkuit v 1 -v 2 -v 3 -v 1 Sebuah sirkuit dikatakan sirkuit sederhana (simple circuit) jika sirkuit tersebut tidak memuat/melewati edge yang sama dua kali (setiap edge yang dilalui hanya satu kali). Sebuah sirkuit dikatakan sirkuit dasar (elementary circuit) jika sirkuit tersebut tidak memuat/melewati verteks yang sama dua kali (setiap verteks yang dilalui hanya satu kali, verteks awal dan akhir boleh sama). 2.1.4 Beberapa Graf Khusus Terdapat beberapa jenis graf sederhana khusus. Berikut ini adalah beberapa graf khusus yang sering ditemui: 1. Graf Lengkap ( Complete Graph ) Graf lengkap merupakan graf sederhana yang setiap verteksnya mempunyai edge ke semua verteks lainnya. Graf lengkap dengan n buah verteks

dilambangkan dengan K n. Setiap verteks pada K n berderajat n-1. Jumlah edge pada graf lengkap yang terdiri dari n buah verteks adalah n (n - 1)/2. Gambar 2.10 Contoh Graf Lengkap 2. Graf Lingkaran Graf Lingkaran adalah graf sederhana yang setiap verteksnya berderajat dua. Graf lingkaran dengan n verteks dilambangkan dengan C n. Gambar 2.11 Contoh Graf Lingkaran 3. Graf Teratur ( Regular Graphs ) Graf teratur adalah graf yang setiap verteksnya mempunyai derajat yang sama. Apabila derajat setiap simpunya adalah r, maka graf tersebut disebut juga graf teratur derajat r. Graf lengkap K n dan graf lingkaran juga merupakan graf teratur. Graf K n berderajat (n-1) sedangkan graf lingkaran berderajat 2. Jumlah sisi pada graf teratur berderajat r dengan n buah verteks adalah nr/2. (i)graf berderajat 4 (ii) Graf berderajat 2 Gambar 2.12 Graf teratur derajat 4 dan 2

4. Graf Bipartit ( Bipartite Graph ) Suatu graf sederhana G dikatakan Bipartit jika himpunan verteks-verteksnya V dapat dipecah menjadi dua himpunan bagian yang saling asing, X 1 dan X 2 sedemikian hinga setiap edge dalam grap G terhubung dengan sebuah verteks dalam V1 dan sebuah verteks lainnya dalam V2. Dengan demikian tidak ada edge dalam G yang terhubung dengan 2 verteks dalam V1 atau dua verteks dalam V2. Gambar 2.13 Contoh Graf Bipartit 5. Graf Isomorfik ( Isomorphic Graph ) Dua bua graf, G 1 dan G 2 dikatakan isomorfik jika terdapat korespondensi satusatu antara verteks-verteks keduanya dan antara sisi-sisi keduanya sedemikian sehingga jika sisi e bersisian dengan verteks u dan v di G 1, maka sisi e yang berkorespon di G 2 juga harus bersisian dengan verteks u dan v di G 2. (i) Graf G 1 (ii) Graf G 2 Gambar 2.14 Contoh Graf yang Isomorfik Syarat-syarat dua buah graf dikatakan graf isomorfik : a. Mempunyai jumlah verteks yang sama. b. Mempunyai jumlah edge yang sama c. Mempunyai jumlah verteks yang sama berderajat tertentu.

6. Graf Planar Graf planar adalah suatu graf yang digambar dalam bidang datar denga edge - edge nya tidak ada yang saling memotong. (a) (b) Gambar 2.15 Contoh Graf Planar K 4 Pada contoh graf G (K 4 ) diatas, K 4 dapat digambar kembali tanpa ada edge - edge nya yang berpotongan, maka graf K 4 adalah suatu Graf Planar. 2.1.5 Representasi Graf Pada penjelasan sebelumnya, graf ditampilkan dengan cara menggambarkannya. Namun apabila graf hendak diproses dengan program komputer, maka graf harus direpresentasikan di dalam memori. Ada beberapa metode yang dapat digunakan dalam merepresentasikan graf, berikut ini adalah metode yang dapat dgunakan dalam merepresentasikan graf : 1. Matriks Ketetanggaan (Adjacency Matrix) Misalkan G = (V, E) merupakan suatu graf dengan n verteks, n > 1. Maka, matriks ketetanggaan A dari G adalah matriks n x n dimana A = [a ij ], untuk hal ini berlaku [a ij ] menjadi 1 bila verteks i dan j bertetangga dan [a ij ] menjadi 0 bila verteks i dan j tidak bertetangga. Jumlah elemen matriks bertetanggaan untuk graf dengan n verteks adalah n 2. Jika tiap elemen membutuhkan ruang memori sebesar p, maka ruang memori yang diperlukan seluruhnya adalah pn 2.

Keuntungan representasi dengan matriks ketetanggaan adalah kita dapat mengakses elemen matriksnya langsung dari indeks. Selain itu, kita juga dapat menentukan dengan langsung apakah verteks i dan verteks j bertetangga. Pada graf berbobot, a ij menyatakan bobot tiap sisi yang menghubungkan verteks i dengan verteks j. Bila tidak ada sisi dari verteks i ke verteks j atau dari verteks j ke verteks i, maka, a ij diberi nilai tak berhingga ( ). Gambar 2.16 Graf G Bentuk matriks ketetanggaan dari graf pada gambar 2.13 adalah v 1 v 2 v 3 v 4 v 5 v 1 0 1 0 0 1 v 2 1 0 1 0 1 v 3 0 1 1 0 1 v 4 0 0 0 0 1 v 5 1 1 1 1 0 2. Matriks Insiden (incidency matriks) Matriks insiden menyatakan kebersisian verteks dengan edge. Misalkan G = (V, E) adalah graf dengan n verteks dan m edge, maka matriks kebersisian A dari G adalah matriks berukuran m x n dimana A = [a ij ], [a ij ] menjadi 1 bila verteks i dan edge j bersisian dan [aij] menjadi 0 bila verteks i dan edge j tidak bersisian.

Gambar 2.17 Graf A Berikut adalah matriks insiden untuk graf pada gambar 2.14. e 1 e 2 e 3 e 4 e 5 e 6 e 7 v 1 1 1 0 0 0 0 0 v 2 1 0 1 1 0 0 0 v 3 0 0 0 1 0 1 1 v 4 0 0 0 0 1 0 0 v 5 0 1 1 0 1 1 0 Pada matriks diatas, sebuah kolom e 7 dapat diwakilkan sebagai loop. Pada sebuah graf tanpa loop, masing-masing kolom mempunyai dua entri 1, dan jumlah dari sebuah baris menyatakan derajat dari verteks yang didefinisikan dengan baris tersebut. 2.2 Lintasan Terpendek (Shortest Path) Dalam Jurnal Pawitri (2007) disebutkan bahwa Lintasan Terpendek (Shortest Path) merupakan lintasan minimum yang diperlukan untuk mencapai suatu titik dari titik tertentu. Dalam pencarian lintasan terpendek masalah yang dihadapi adalah mancari lintasan mana yang akan dilalui sehingga didapat lintasan yang paling pendek dari satu verteks ke verteks yang lain. Ada beberapa macam persoalan lintasan terpendek, antara lain : 1. Lintasan terpendek antara dua buah verteks. 2. Lintasan terpendek antara semua pasangan verteks. 3. Lintasan terpendek dari verteks tertentu ke semua verteks yang lain

4. Lintasan terpendek antara dua buah verteks yang melalui beberapa verteks tertentu. Pada tugas akhir ini persoalan lintasan terpendek yang menjadi masalah adalah lintasan terpendek antara dua buah verteks dimana bobot pada setiap edge graf digunakan untuk menyatakan jarak antar kota dalam satuan Kilometer (Km). 2.3 Metode Pencarian Ada banyak metode yang dapat digunakan untuk pencarian jalur terpendek pada suatu graf. Metode pencarian tersebut dapat dikelompokkan ke dalam dua jenis, yaitu pencarian buta/tanpa informasi (blind atau un-informed search) dan pencarian heuristik/dengan informasi (heuristic atau informed search). 2.3.1 Pencarian Buta (Blind Search/Un-informed Search) Dikatakan pencarian buta, karena pada pencarian ini tidak ada informasi awal. Disini hanya akan dibahas dua metode pencarian, yaitu Breadth First Search dan Depth First Search. 2.3.1.1 Breadth First Search (BFS) Pencarian dilakukan pada semua verteks pada level n secara berurutan dari kiri ke kanan. Jika pada satu level belum ditemukan solusi, maka pencarian dilanjutkan pada level berikutnya (n+1). Demikian seterusnya sampai ditemukan solusi. Dengan strategi ini, maka dapat dijamin bahwa solusi yang ditemukan adalah yang paling baik (Optimal). Tetapi BFS harus menyimpan semua node yang pernah dibangkitkan,h al ini harus dilakukan untuk penelusuran balik jika solusi sudah ditemukan, sehingga membutuhkan memori yang cukup banyak.

Gambar 2.18 Tree untuk Breadth First Search 2.3.1.2 Depth First Search (DFS) Pencarian dilakukan pada satu verteks dalam setiap level dari yang paling kiri. Jika pada level yang paling dalam, solusi belum ditemukan, maka pencarian dilanjutkan pada verteks sebelah kanan. Verteks yang kiri dapat dihapus dari memori. Jika pada level yang paling dalam tidak ditemukan solusi, maka pencarian dilanjutkan pada level sebelumnya. Demikian seterusnya sampai ditemukan solusi. Jika solusi ditemukan maka tidak diperlukan proses backtracking (penelusuran balik untuk mendapatkan jalur yang dinginkan). Kelebihan dari algoritma ini adalah pemakaian memori yang lebih sedikit, sedangkan kelemahannya adalah jika pohon yang dibangkitkan memiliki level yang sangat dalam (tak terhingga), maka tidak ada jaminan menemukan solusi. Artinya, DFS tidak complete (tidak ada jaminan penemuan solusi).

Gambar 2.19 Tree untuk Depth First Search 2.3.2 Pencarian Heuristik Pada metode pencarian buta, tidak dimiliki pengetahuan khusus tentang permasalah yang dihadapi sehingga metode tersebut tidak efisien untuk banyak kasus karena bias saja metode tersebut tidak complete dan atau tidak optimal dalam mendapatkan solusi, optimal disini adalah tidak menjamin menemukan solusi yang terbaik jika terdapat beberapa solusi yang berbeda. Menggunakan informasi khusus yang spesifik untuk suatu masalah tertentu akan sangat memperbaiki kecepatan pencarian solusi, karena teknik ini membantu memutuskan kemungkinan solusi mana yang pertama kali perlu di evaluasi. Pencarian heuristik digunakan untuk mengeliminasi beberapa kemungkinan solusi, tanpa harus mengeksplorasinya secara penuh. Berikut akan dijelaskan beberapa algoritma pencarian dengan informasi (informed search algorithm) yang menggunakan fungsi heuristik dalam mencari solusi, yaitu Generate and test, hill climbing, dan Best First Search (greedy best first search dan A*).

2.3.2.1 Generate and Test (bangkitkan dan Uji) Metode Generate-and-Test adalah metode yang paling sederhana dalam pencarian heuristic. Jika pembangkitan possible solution dikerjakan secara sistematis, maka algoritma ini akan mencari solusinya, jika ada. Tetapi jika ruang masalahnya sangat luas, mungkin memerlukan waktu yang sangat lama. Algoritma Generate-and-Test menggunakan prosedur DFS karena solusi harus dibangkitkan secara lengkap sebelum dilakukan test. Algoritma ini berbentuk sistematis, pencarian sederhana yang mendalam dari ruang permasalahan. Generate & test juga dapat dilakukan dengan pembangkitan solusi secara acak, tetapi tidak ada jaminan solusinya akan ditemukan. 2.3.2.2 Hill Climbing (Pendakian Bukit) Hill Climbing berbeda Generate-and-Test, yaitu pada feedback dari prosedur test untuk membantu pembangkit menentukan yang langsung dipindahkan dalam ruang pencarian. Dalam prosedur Generate & test, respon fungsi pengujian hanya ya atau tidak. Tapi jika pengujian ditambahkan dengan atauran fungsi-fungsi yang menyediakan estimasi dari bagaimana mendekati state yang diberikan ke state tujuan, prosedur pembangkit dapat mengeksplorasi ini sebagaimana ditunjukkan di bawah. Hill Climbing sering digunakan jika terdapat fungsi heuristik yang baik untuk mengevaluasi state. Sebagai contoh, anda berada di sebuah kota yang tidak dikenal, tanpa peta dan anda ingin menuju ke pusat kota. Cara sederhana adalah gedung yang tinggi. Fungsi heuristik-nya adalah jarak antara lokasi sekarang dengan gedung yang tinggi dan state yang diperlukan adalah jarak yang terpendek. 2.3.2.3 Best First Search (BFS) Best first search merupakan kombinasi dari beberapa kelebihan Depth first search dan breadth first search. Pada pencarian dengan hill climbing tidak diperbolehkan untuk kembali ke verteks pada level yang lebih rendah meskipun verteks pada level yang lebih rendah tersebut memiliki nilai heuristik yang lebih baik, sedangkan pada best first search, pencarian diperbolehkan untuk mengunjungi verteks yang berada pada level yang lebih rendah.

Best First Search membangkitkan verteks berikutnya dari sebuah verteks (yang sejauh ini terbaik diantara semua leafnodes yang pernah dibangkitkan. Untuk menentuan verteks terbaik dapat dilakukan dengan menggunakan informasi berupa biaya perkiraan dari suatu verteks menuju ke goal atau gabungan antara biaya sebenarnya dan biaya perkiraan tersebut. Biaya perkiraan tersebut dapat diperoleh dengan menggunakan suatu fungsi yang disebut fungsi heuristik. Terdapat dua jenis algoritma best first search, yaitu: 1) algoritma greedy best first search,yang hanya memperhitungkan biaya perkiraan saja; dan 2) algoritma A*, yang menghitung gabungan biaya antara biaya sebenarnya (actual cost) dan biaya perkiraan. 2.3.2.3.1 Greedy Best First Seach Merupakan Best First Search dengan hanya mempertimbangkan harga perkiraan (estimated cost) saja, yaitu f(n) = h(n). Sedangkan harga sesungguhnya tidak digunakan. Sehingga solusi yang dihasilkan tidak optimal, karena hanya memperhitungkan biaya perkiraan yang belum tentu kebenarannya. 2.3.2.3.2 Algoritma A* Algoritma A* (A Star) adalah algoritma pencarian yang merupakan pengembangan dari algoritma Best First Search (BFS). Seperti halnya pada BFS, untuk menemukan solusi, A* juga dituntun oleh fungsi heuristik, yang menentukan urutan titik mana yang akan dikunjungi terlebih dahulu. Heuristik merupakan penilai yang memberi harga pada tiap verteks yang memandu A* mendapatkan solusi yang diinginkan. Algoritma ini pertama kali diperkenalkan pada 1968 oleh Peter Hart, Nils Nilsson, dan Bertram Raphael Dalam tulisan mereka, algoritma ini dinamakan algoritma A. Dengan penggunaan fungsi heuristik yang tepat pada algoritma ini yang dapat memberikan hasil yang optimal, maka algoritma inipun disebut A*.

Dengan fungsi heuristik Algoritma ini membangkitkan verteks yang paling mendekati solusi. Verteks ini kemudian disimpan suksesornya ke dalam list sesuai dengan urutan yang paling mendekati solusi terbaik. Kemudian, verteks pertama pada list diambil, dibangkitkan suksesornya dan kemudian suksesor ini disimpan ke dalam list sesuai dengan urutan yang terbaik untuk solusi. List verteks ini disebut dengan verteks terbuka (open node). Verteks pada list bisa berasal dari kedalaman berapapun dari graf. Algoritma ini akan mengunjungi secara mendalam (mirip Depth First Search (DFS)) selama verteks tersebut merupakan verteks yang terbaik. Jika verteks yang sedang dikunjungi ternyata tidak mengarah kepada solusi yang diinginkan, maka akan melakukan runut balik ke arah verteks awal untuk mencari verteks lainnya yang lebih menjanjikan dari pada verteks yang terakhir dikunjungi. Bila tidak ditemukan juga, maka akan terus mengulang mencari ke arah verteks awal sampai ditemukan verteks yang lebih baik untuk dibangkitkan suksesornya. Strategi ini berkebalikan dengan algoritma DFS yang mencari sampai kedalaman yang terdalam sampai tidak ada lagi suksesor yang bisa dibangkitkan sebelum melakukan runut balik, dan BFS yang tidak akan melakukan pencarian secara mendalam sebelum pencarian secara melebar selesai. A* baru berhenti ketika mendapatkan solusi yang dianggap solusi terbaik. 2.4 Fungsi Heuristik Dalam metode pencarian heuristik, digunakan suatu fungsi heuristik yang digunakan untuk mengevaluasi keadaan-keadaan masalah individual dan menentukan seberapa jauh hal tersebut dapat digunakan untuk mendapatkan solusi yang diinginkan. Suatu fungsi dapat diterima sebagai fungsi heuristik jika biaya perkiraan yang dihasilkan tidak melebihi dari biaya sebenarnya. Suatu fungsi heuristik dapat dikatakan sebagai fungsi heuristik yang baik, apabila dapat memberikan biaya perkiraan yang mendekati biaya sebenarnya. Semakin mendekati biaya sebenarnya, fungsi heuristik tersebut semakin baik. Dalam masalah pencarian rute terpendek dengan graf planar, fungsi heuristik yang dapat digunakan adalah Jarak Euclidian. Fungsi heuristik ini akan menghitung

jarak berdasarkan panjang garis yang dapat ditarik dari dua buah titik, yang bisa dihitung menggunakan rumus : Rumus diatas adalah rumus untuk mencari garis lurus antara dua verteks, yaitu verteks a dan verteks b. 2.5 MATLAB (Matrix Laboratory) MATLAB merupakan sebuah bahasa pemrograman tingkat tinggi yang ditujukan untuk komputasi teknis. MATLAB mengintegrasikan kemampuan komputasi, visualisasi dan pemrograman dalam sebuah lingkungan yang tunggal dan mudah digunakan. Matlab membertikan sistem interaktif yang menggunakan konsep array/matrik sebagai standar variabel elemennya tanpa membutuhkan pendeklarasian array seperti pada bahasa lainnya. Dengan MATLAB kita dapat menemukan solusi dari berbagai masalah numerik secara cepat, misalnya sistem 2 persamaan dengan 2 variabel : 2x-3y=24 x+5y=15 Hingga perhitungan yang kompleks, seperti mencari akar-akar polinomial. Interpolasi dari sejumlah data, perhitungan dengan matriks, pengolahan sinyal, dan metoda numerik.

Gambar 2.20 Tampilan awal Matlab Gambar 2.21 Tampilan GUI Matlab