a
Graf G didefinisikan sebagai pasangan himpunan (V,E) yang dalam hal ini :
V = himpunan tidak kosong dadi simpul-simpul (vertices atau node): {v1,v2,v3,…,vn}.
E = himpunan sisi (edges atau arcs) yang mehubungkan sepasang simpul: {e1,e2,e3,…,en}.
Atau dapat ditulis singkat dengan notasi G=(V,E). jadi sebuah graf dimungkinkan tidak mempunyai sisi satu buahpun, tapi
simpulnya harus ada, minimal satu. Graf yang hanya mempunyai satu buah simpul tanpa sebuah sisipun dinamakan graf
trivial.
Setiap garis pada graf berubungan dengan satu atau dua titik. Titik-titik tersebut dinamakan titik ujung. Garis yang hanya
berhubungan dengan satu titik ujung disebut Loop. Dua garis berbeda yang menghubungkan titik yang sama disebut Garis
parallel. Perlu diketahui bahwa panjang garis, kelengkungan garis,, dan letak titik tidak berpengaruh dalam suatu graf.
2.2 Jenis-Jenis Graf
Berdasar ada atau tidaknya loop atau garis parallel pada suatu graf, maka secara umum graf dapat digolongkan menjadi dua
jenis :
p
1.Graf tak sederhana (unsimple graph).
Graf yang setiap sisinya diberikan orientasi arah. Pada graf berarah, (v k,vj) dan (vj,vk)menyatakan dua unsur yang berbeda,
dengan kata lain (vj,vk)(vk,vj).
graf yang sisinya tidak memiliki orientasi arah. Urutan pasangan simpul yang dihubungkan oleh sisi tidak diperhatikan,
dengan kata lain : (vj,vk)= (vk,vj).
1.Bertetangga (adjancent)
Dua buah simpul pada graf yang tak-berarah G dikatakan bertetangga bila keduanya terhubung langsung dengan sebuah
sisi. Dengan kata lain, vj bertetangga dengan vk jika (vj,vk)adalah sebuah sisi pada graf G.
1.Bersisian (incident)
Untuk sembarang sisi e= (vj, vk), sisi e dikatakan bersisian dengan simpul vk dan simpul vk.
1.Derajat (degree).
Derajat suatu simpul pada graf tak-berarah adalah jumlah sisi yang bersisian dengan simpul tersebut. Pada graf berarah,
derajat simpul v dinyatakan dengan din(v) dan dout(v), yang dalam hal ini :
din(v) = derajat masuk (in-degree)
Berdasarkan tujuan kita yaitu mencari lintasan tercepat untuk sampai ke tujuan, akan digunakan graf ganda berarah
berbobot. Mengenai graf tersebut akan dijelaskan sebagai berikut :
1.Graf ganda
Graf ganda adalah graf yang memiliki lebih dari satu sisi untuk menghubungkan dua simpul. Pada graf di bawah, ditunjukkan
graf yang memiliki sisi ganda. Yan dimaksud sisi ganda pada graf di bawah adalah sisi yang menghubungkan simpul A dan
simpul B. karena terdapat dua sisi yang menghubungkan simpul A dan simpul B, maka graf tersebut dinamakan graf ganda
2.Graf berarah
Graf yang setiap sisinya diberikan orientasi arah disebut graf berarah. Graf yang setiap sisinya diberikan orientasi arah. Pada
graf berarah, (vk,vj) dan (vj,vk)menyatakan dua unsur yang berbeda, dengan kata lain(vj, vk)(vk,vj).
3.Graf berbobot
Graf berbobot adalah graf yang yang setiap sisinya diberi harga (bobot) atau nilai. Bobot pada tiap sisi dapat
mereprentasikan sesuatu, misalnya jarak, prioritas, harga, dan lain-lain.
Gambar 4 contoh graf berbobot
Graf ganda berarah berbobot adalah gabungan dari ketiga graf di atas. Untuk lebih jelasnya, gambar di bawah ini akan
memberikan gambaran tentang graf ganda berarah berbobot.
2.4 The Shortest Path Problem
Persoalan mencari lintasan terpendek di dalam graf merupakan salah satu persoalan optimasi. Graf yang digunakan dalam
pencarian lintasan terpendek adalah graf berbobot (weight graph), yaitu graf yang setiap sisinya diberikan suatu nilai atau
bobot. Bobot pada sisi graf dapat menyatakan jarak antar kota, waktu, ongkos, kepadatan, dan sebagainya. Asumsi yang
kita gunakan adalah bahwa semua bobot bernilai positif. Kata “terpendek” jangan selalu diartikan secara fisik sebagai
panjang minimum, sebab kata “terpendek”berbeda-beda maknanya bergantung pada tipikal persoalan yang akan
diselesaikan. Namun secara umum “terpendek” berarti meminimisasi bobot pada suatu lintasan graf.
Ada beberapa macam persoalan lintasan terpendek, antara lain:
4.Lintasan terpendek antara dua buah simpul yang melalui beberapa simpul tertentu.
Menurut teori graf, persoalan lintasan terpendek (The Shortest Path Problem) adalah merupakan suatu persoalan untuk
mencari lintasan antara dua buah simpul pada graf berbobot yang memiliki gabungan nilai jumlah bobot pada sisi graf yamg
dilalui dengan jumlah yang paling minimum.
Sampai saat ini sudah banyak algoritma untuk mencari lintasan terpendek yang pernah ditulis orang. Dalam makalah ini,
kami menggunakan satu diantaranya, yaitu Algoritma Dijkstra (sesuai dengan nama penemunya, Edsger W. Dijkstra). Pada
dasarnya algoritma dijkstra diyerapkan untuk mencari lintasan terpendek pada graf berarah. Namun, algoritma ini juga bisa
digunakan untuk mencari lintasan terpendek pada graf tak-berarah.
Algoritma ini menggunakan prinsip greedy. Prinsip greedy pada algoritma dijkstra menyatakan bahwa pada setiap langkah kita
memilih sisi yang berbobot minimum dan memasukkannya ke dalam himpunan solusi.
Ada beberapa versi algoritma dijkstra yang ditulis pada berbagai pustaka. Salah satunya adalah sebagai berikut :
Misalkan :
V(G) = {v1, v2, v3,…,vn}
L = himpunan titik-titik V(G) yang sudah terpilih dalam alur path (jalur) terpendek
D(j) = jumlah bobot path (jalur) terkecil dari vi ke vj.
W(i,j) = bobot garis dari titik vi ke titik vj.
W*(1,j) = jumlah bobot path terkecil dari v1 ke vj.
Secara formal, algoritma dijkstra untuk mencari path terpendek adalah sebagai berikut :
1.L = { }
V = { v2, v3,…,vn}
L = L {vk}.
jika D(j) > D(k) + W(k,j) maka ganti D(j) dengan D(k) + W(k,j)
4.Untuk setiap vj V, W*(1,j) = D(j).
Menurut algoritma tersebut, path (jalur) terpendek dari titik v1 ke vn adalah melalui titik-titik dalam secara berurutan, dan