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 {v1, v2,, vn} yang dalam hal ini
verteks merupakan himpunan tidak kosong dari verteks-verteks (vertices atau node)
dan E adalah himpunan edge {e1, e2,, en} 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
dengan dirinya
2. Graf Tak-Sederhana
Graf tak-sederhana adalah graf yang memiliki edges ganda dan atau loop. Graf
tak sederhana dapat dibagi dua yaitu:
Selain berdasarkan ada tidaknya edge yang paralel atau loop, graf dapat juga
dikelompokkan berdasarkan orientasi arah atau panah.
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.
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, vi bertetangga
dengan vj jika (vi, vj) adalah sebuah edge pada graf G.
2.
Bersisian (incident)
Untuk sembarang edge e = ( vj, vk), edge e dikatakan bersisian dengan verteks
vj dan verteks vk.
Pada gambar 2.5 edge e1 bersisian dengan verteks v1 dan verteks v2 edge e5
bersisian dengan verteks v3 dan verteks v4, tetapi tidak bersisian dengan v2.
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 din(v) dan dout(v), yang
dalam hal ini:
din(v) = derajat masuk (in-degree)
= jumlah verteks yang masuk ke verteks v
dout(v) = derajat keluar (out-degree)
= jumlah verteks yang keluar dari verteks v
Dan
d(v) = din(v) + dout(v).
Dalam hal ini d(v) menyatakan derajat verteks.
4. Lintasan (path)
Lintasan yang panjangnya n dari edge awal v0 ke verteks tujuan vn di dalam
graf G ialah barisan berselang-seling verteks-verteks dan edge -edge yang
berbentuk v0 , e1 , v1 , e2 , v2 ,, vn-1 , en , vn sedemikian sehingga
e1 = ( v0 , v1 ) , e2 = ( v1 , v2 ) , , en = ( vn-1 , vn ) 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 v1, v2 , v4, v3 merupakan lintasan sederhana yang
juga lintasan terbuka. Lintasan v1, v2, v4, v3, v1 merupakan lintasan sederhana
yang juga lntasan tertutup. Sedangkan lintasan v2, v4, v3, v1, v4 bukan
merupakan lintasan sederhana, tetapi lintasan terbuka.
Dalam tugas akhir ini, bobot pada pada setiap graf menyatakan jarak antara
dua buah kota dalam kilometer (km).
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 Kn. Setiap verteks pada Kn berderajat n-1. Jumlah edge
pada graf lengkap yang terdiri dari n buah verteks adalah
n (n - 1)/2.
2. Graf Lingkaran
Graf Lingkaran adalah graf sederhana yang setiap verteksnya berderajat dua.
Graf lingkaran dengan n verteks dilambangkan dengan Cn.
(i)Graf berderajat 4
(i) Graf G1
(ii) Graf G2
6. Graf Planar
Graf planar adalah suatu graf yang digambar dalam bidang datar denga edge edge nya tidak ada yang saling memotong.
(a)
(b)
v2
v3 v4 v5
v1
v2
v3
v4
v5
e2
e3 e4 e5 e6 e7
v1
v2
v3
v4
v5
Pada matriks diatas, sebuah kolom e7 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.
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).
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.
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.
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).
Berikut
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.
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.
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.2 Algoritma A*
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*.
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.
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
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.