xvi
BAB 2
LANDASAN TEORITIS
Dalam penulisan laporan tugas akhir ini, penulis akan memberikan beberapa pengertian yang berhubungan dengan judul penelitian yang penulis ajukan, karena tanpa pengertian yang jelas akan menyebabkan informasi yang dimasukan atau yang keluar tidak sesuai dengan yang diinginkannya, serta sekilas tentang Software yang digunakan.
2.1 TEORI GRAF
Teori graf pertama kali ditulis pada tahun 1736 oleh seorang matematikawan Swiss yang bernama Leonard Euler. Ia menggunakan teori graf untuk menyelesaikan masalah jembatan Königsberg (sekarang, bernama Kaliningrad).
Graf merupakan struktur diskrit yang terdiri dari himpunan sejumlah berhingga obyek yang disebut simpul (vertices, vertex) dan himpunan sisi (edges) yang menghubungkan simpul-simpul tersebut. Graf digunakan untuk merepresentasikan objek-objek diskrit dan hubungan antara objek-objek tersebut. Notasi sebuah graf adalah G = (V, E), dimana : • V merupakan himpunan tak kosong dari simpul-simpul (vertices), misalkan V= { v1 , v2 , ... , vn } • E merupakan himpunan sisi – sisi (edges) yang menghubungkan sepasang simpul, misalkan E = {e1 , e2 , ... , en }
Universitas Sumatera Utara
xvii
2.1.1 Terminologi Graf
1. Bertetangga (adjacent)
Dua buah simpul dikatakan bertetangga jika kedua simpul tersebut terhubung langsung oleh dua sisi. Contoh : Perhatikan graf berikut :
Pada graf diatas : simpul P bertetangga dengan simpul Q dan S, tetapi simpul P tidak bertetangga dengan simpul R
2. Bersisian (incidency)
Suatu sisi e dikatakan bersisian dengan simpul v1 dan simpul v2 jika e menghubungkan kedua simpul tersebut, dengan kata lain e = ( v1, v2). Contoh : Perhatikan graf dari masalah jembatan Konigsberg berikut ini :
maka e1 bersisian dengan simpul A dan simpul C, tetapi sisi tersebut tidak bersisian dengan simpul B.
Universitas Sumatera Utara
xviii
3. Simpul Terpencil (Isolated Vertex)
Jika suatu simpul tidak mempunyai sisi yang bersisian dengannya maka simpul tersebut dinamakan simpul terpencil. Contoh : Perhatikan graf berikut :
Simpul T dan simpul U merupakan simpul terpencil.
4. Derajat (Degree) Simpul
Derajat suatu simpul merupakan jumlah sisi yang bersisian dengan simpul tersebut. Misalkan, suatu simpul v mempunyai 3 buah sisi yang bersisian dengannya maka dapat dikatakan simpul tersebut berderajat 3, atau dinotasikan oleh d(v) = 3. Contoh :
Pada graf diatas : d(P) = d(Q) = d(S) = 5, sedangkan d(R) =3.
5. Lintasan (Path)
Lintasan dari suatu simpul awal v0 ke simpul tujuan vT didalam suatu graf G
Universitas Sumatera Utara
xix
merupakan barisan sebuah sisi atau lebih (x0, x1), (x1, x2), (x2, x3), ….(xn-1, xn) pada G, dimana x0 = v0 dan xn = vT. Lintasan ini dinotasikan oleh : x0, x1, x2, x3,…. xn Lintasan ini mempunyai panjang n, karena lintasan ini memuat n buah sisi, yang dilewati dari suatu simpul awal v0 ke simpul tujuan vT didalam suatu graf G. Suatu lintasan yang berawal dan berakhir pada simpul yang sama dinamakan Siklus (cycle) atau Sirkuit (circuit). Contoh : Perhatikan graf berikut ini :
6. Cut Set
Cut-set dari suatu graf terhubung G adalah himpunan sisi yang jika dibuang dari G menyebabkan G tidak terhubung. Jadi, cut-set selalu menghasilkan dua buah subgraf. Pada graf dibawah ini, {(1,4), (1,5), (2,3), (2,4)} adalah cut-set. Terdapat banyak cut-set pada sebuah graf terhubung. Himpunan {(1,5), (4,5)} juga adalah cut-set, {(1,4), (1,5), (1,2)} adalah cut-set, {(5,6)} juga cut-set.
Tetapi {(1,4), (1,5), (4,5)} bukan cut-set sebab himpunan bagiannya {(1,5), (4,5)} adalah cut-set.
Universitas Sumatera Utara
xx
2.1.2 Jenis Graf
Pada dasarnya, graf dibagi dengan beberapa jenis : 1. Graf Tak Berarah
a. Graf sederhana (simple graph) Graf sederhana merupakan graf tak berarah yang tidak mengandung gelang maupun sisi ganda. Contoh :
b. Graf Ganda (multigraph) Graf ganda merupakan graf tak berarah yang tidak mengandung gelang (loop). Contoh :
c. Graf Semu (pseudograph) Graf semu merupakan graf yang boleh mengandung gelang (loop). Contoh :
Universitas Sumatera Utara
xxi
2. Graf Berarah (Directed graph)
Graf berarah merupakan graf yang setiap sisinya mempunyai arah dan tidak mempunyai dua sisi yang berlawanan antara dua buah simpul (tak mempunyai sisi ganda). Contoh :
Tabel jenis-jenis graf
2.2 ALGORITMA DIJKSTRA
Pada tahun 1959 sebuah tulisan sepanjang tiga halaman yang berjudul A Note on Two Problems in Connexion with Graphs diterbitkan pada jurnal Numerische Mathematik. Pada tulisan ini, Edsger W. Dijkstra, seorang ilmuwan komputer berumur dua puluh sembilan tahun mengusulkan algoritma-algoritma untuk solusi dari dua masalah teoritis graf dasar : the minimum weight Algoritma Dijkstra untuk masalah jalan terpendek adalah satu dari algoritma-algoritma paling ternama pada ilmu komputer dan sebuah algoritma paling popular pada operasi pencarian(OR). Implementasi
Universitas Sumatera Utara
xxii
algoritma dijkstrapada ilmu komputer antara lain adalah pada link-state routing protocol, OSPF dan IS-IS.
Pada literatur tersebut, algoritma ini sering digambarkan sebagai sebuah algoritma yang tamak. Contohnya, buku Algorithmics (Brassard and Bratley [1988, pp. 87-92])mengulas ini pada bab tersebut dengan judul Greedy Algorithms. Encyclopedia of Operations Research and Management Science (Gass and Harris [1996, pp. 166-167]) menggambarkan algoritma ini sebagai sebuah "node labelling greedy algorithm " dan sebuah algoritma yang tamak digambarkan sebagai "a heuristic algorithm that at every step selects the best choice available at that step without regard to future consequences " (Gass and Harris [1996, p. 264]).
2.2.1 Definisi Algoritma Dijkstra
Pada dasarnya, algoritma ini merupakan salah satu bentuk algoritma greedy. Algoritma
ini
termasuk
algoritma
pencarian
graf
yang
digunakan
untuk
menyelesaikan masalah lintasan terpendek dengan satu sumber pada sebuah graf yang tidak memiliki cost sisi negatif, dan menghasilkan sebuah pohon lintasan terpendek. Algoritma ini sering digunakan pada routing. Algoritma dijkstra mencari lintasan terpendek dalam sejumlah langkah. Algoritma ini menggunakan strategi greedy sebagai berikut :
Untuk setiap simpul sumber (source) dalam graf, algortima ini akan mencari jalur dengna cost minimum antara simpul tersebut dengan simpul lainnya. Algoritma juga dapat digunakan untuk mencari total biaya (cost) dari lintasan terpendek yang dibentuk dari sebuah simpul ke sebuah simpul tujuan. Sebagai contoh, bila simpul pada graf merepresentasikan kota dan bobot sisi merepresentasikan jarak antara 2 kota yang mengapitnya, maka algoritma dijkstra dapat digunakan untuk mencari rute terpendek antara sebuah kota dengan kota lainnya.
Universitas Sumatera Utara
xxiii
2.2.2 Skema Umum Algoritma Dijkstra
Algoritma ini mencari panjang lintasan terpendek dari verteks a ke z dalam sebuah graf berbobot tersambung. Bobot dari rusuk (i,j) adalah w(i,j)>0 dan label verteks x adalah L(x). Hasilnya, L(z) merupakan panjang lintasan terpendek dari a ke z.
Masukan: Sebuah graf berbobot tersambung dengan bobot positif. Verteks a sampai z. Keluaran: L(z), panjang lintasan terpendek dari a ke z.
1. procedure dijkstra (w,a,z,L) 2. L(a) := 0 3. for semua verteks x a do 4. L(x) := 5. T := himpunan semua verteks 6. // T adalah himpunan verteks yang panjang terpendeknya dari a belum ditemukan 7. while z T do 8. begin 9. pilih v T dengan minimum L(v) 10. T:=T-{v} 11. for setiap x T di samping v do 12. L(x):=min{L(x), L(v)+w(v,x)} 13. end 14. end dijkstra
Contoh 10.2 : Carilah panjang lintasan terpendek dari verteks a ke z dalam graf berbobot tersambung berikut.
Universitas Sumatera Utara
xxiv
Penyelesaian : Kita akan menerapkan Algoritma Dijkstra. Hasil pelaksanaan baris 2-4 dari Algoritma 10.1 adalah L(a) = 0, L(b) = L(c) = L(d) = L(e) = L(f) = L(g) = L(z) = . Pada baris 7, z tidak dilingkari. Kita lanjutkan ke baris 9, di mana kita memilih verteks a, verteks tak dilingkari dengan label terkecil, dan melingkarinya. Pada baris 11 dan 12 kita perbarui setiap verteks tak terlingkari, b dan f, yang berdekatan dengan a. Kita dapatkan labellabel baru
L(b) = min{ , 0+2} = 2, L(f) = min{ , 0+1} = 1.
Sampai pada bagian ini, kita kembali ke baris 7. Karena z tak dilingkari, kita lanjutkan ke baris 9, di mana kita memilih verteks f, verteks tak dilingkari dengan label terkecil, dan melingkarinya. Pada baris 12 dan 13 kita perbarui setiap label dari verteks tak dilingkari, d dan g, yang berdekatan dengan f. Kita dapatkan label-label baru
L(d) = min{ , 1+3} = 4, L(f) = min{ , 1+5} = 6.
Sampai pada bagian ini, kita kembali ke baris 7. Demikian seterusnya dan pada akhir algoritma, z dilabeli 5, menyatakan panjang lintasan terpendek dari a ke z adalah 5. Sebuah lintasan terpendek diberikan oleh (a,b,c,z).
2.2.3 Kelebihan dan Kekurangan Algoritma Dijkstra
Algoritma djikstra dapat digunakan untuk menyelesaikan persoalan pencarian rute terpendek pada sebuah graf. Kelemahan algoritma ini adalah semakin banyak titik akan semakin memakan waktu proses. Dan Jumlah titik menentukan tingkat efektifitas dari algoritma djikstra.
Universitas Sumatera Utara