Vous êtes sur la page 1sur 5

4.2.0.

Algoritma Dijkstra
Algoritma Dijkstra, (dinamai menurut penemunya, seorang ilmuwan komputer, Edsger Dijkstra), adalah sebuah algoritma rakus (greedy algorithm) yang dipakai dalam memecahkan permasalahan jarak terpendek (shortest path problem) untuk sebuah graf berarah (directed graph) dengan bobot-bobot sisi (edge weights) yang bernilai taknegatif. Misalnya, bila vertices dari sebuah graf melambangkan kota-kota dan bobot sisi (edge weights) melambangkan jarak antara kota-kota tersebut, maka algoritma Dijkstra dapat digunakan untuk menemukan jarak terpendek antara dua kota. nput algoritma ini adalah sebuah graf berarah yang berbobot ( weighted directed graph) G dan sebuah sumber vertex s dalam G dan V adalah himpunan semua !ertices dalam graph G. "etiap sisi dari graf ini adalah pasangan !ertices (u,v) yang melambangkan hubungan dari vertex u ke vertex v. #impunan semua tepi disebut E. $obot (weights) dari semua sisi dihitung dengan fungsi w: E [0, ) jadi w(u,v) adalah jarak tak-negatif dari !erte% u ke !erte% v. &ngkos (cost) dari sebuah sisi dapat dianggap sebagai jarak antara dua vertex, yaitu jumlah jarak semua sisi dalam jalur tersebut. 'ntuk sepasang !erte% s dan t dalam V, algoritma ini menghitung jarak terpendek dari s ke t

4.2.1. Penyelesaian Masalah Lintasan Terpendek (Shortest Path Dengan Mengg!nakan Algoritma "ohnson
graph adalah salah satu cabang dari ilmu matematika yang sangat penting dan banyak sekali aplikasinya. "alah satunya adalah penyelesaian masalah lintasan terpendek. (da beberapa metode yang sudah ada dan sering digunakan untuk menyelesaikan masalah lintasan terpendek, misalnya (lgoritma Dijkstra, (lgoritma $ellman )ord dan (lgoritma )loyd-*arshall. "elain menggunakan metode-metode tersebut, ada metode lain yang dapat digunakan untuk menyelesaikan masalah lintasan terpendek yaitu (lgoritma +ohnson. Dalam skripsi ini dibahas tentang penyelesaian masalah lintasan terpendek (shortest path) dengan menggunakan (lgoritma +ohnson. ,angkah awal penyelesaian (lgoritma +ohnson adalah mengkonstruksi digraph baru dengan menambahkan titik baru pada digraph dan memberi bobot sisi yang keluar dari titik baru tersebut dengan -. ,angkah selanjutnya adalah mencari lintasan terpendek dari titik baru ke semua titik lain. ,intasan terpendek tersebut digunakan untuk mengubah bobot semua sisi pada digraph baru agar bobot semua sisi bernilai positif. "etelah itu mencari lintasan terpendek dari tiap titik ke semua titik lain dan mengubah hasilnya dengan menggunakan lintasan terpendek dari titik baru ke semua titik lain. #asil dari perhitungan ini berupa matriks. Dari matriks ini dapat diketahui panjang lintasan terpendek dari tiap titik ke semua titik lain. 'ntuk menghitung lintasan terpendek dari titik baru ke semua titik lain yang berguna untuk mengubah semua bobot menjadi positif digunakan (lgoritma $ellman-)ord. 'ntuk menghitung lintasan terpendek dari tiap titik ke semua titik lain yang semua bobot sisinya sudah bernilai positif digunakan (lgoritma Dijkstra.

.elebihan (lgoritma +ohnson ini adalah dapat digunakan untuk digraph yang berbobot negatif dan untuk menyelesaikan masalah lintasan terpendek dari tiap titik ke semua titik lain.'ntuk memeriksa kebenaran perhitungan dari (lgoritma +ohnson dapat digunakan (lgoritma )loyd-*arshall. Dari proses perhitungan diperoleh hasil yang sama antara penyelesaian masalah lintasan terpendek dengan menggunakan (lgoritma +ohnson dan (lgoritma )loyd-*arshall. 'ntuk memeriksa perhitungan secara manual, dalam skripsi ini juga digunakan program bantu / DE0. . (,/&1 2M( D +."21( digunakan untuk mencari rute terpendek berikut ini contohnya 33 /raph / dengan matrik berhubungan langsung sebagai berikut 33 ( $ 4 D E ) / ( - 5- 6- 7 7 7 7 $ 5- - 8- 8- 9- 7 7 4 6- 8- 7 :- 7 6- 7 D 7 8- :- - 5- 8- 7 E 7 9- 7 5- - ;- :) 7 7 6- 8- ;- - 8/ 7 7 7 7 :- 8- /(M$(1 /1(<#0=( "E<E12 0 33

untuk bobotnya dapat dilihat pada tabel yang sebenarnya sebuah >matrik berhubungan langsung? di samping.. <E0=E,E"( (00=( 33 2itik @i ( $ 4 D % (@i) 7 7 7 7 2 ( $ 4 D 2itik @i % (@i) 2 2itik @i % (@i) 2 2itik @i ( 7 ( ( 7 ( ( $ 7 $ $ 5$ $ 4 7 4 4 7 4 4 D 7 D D A-D D E 7 E E :E E :E ) 7 ) ) 8) ) 8) ) / / / / /

% (@i) 2 2itik @i % (@i) 2 2itik @i % (@i) 2 2itik @i % (@i) 2 2itik @i

7 (

5$

A9- A-4 D 4 D

:E :E :E :-

8) 8) 8) 8-

/ / / -

( $ A9 5( ( $ A9 5( ( $ A9 5( -

AA- A-4 4 D D

AA- A-4 4 D

AA- A--

( $ 4 D E ) / A9 % (@i) 5- AA- A-- :- 82 +adi secara umum cara untuk menyelesaikan algoritma dijkstra adalah 33 nput 33 /raph bobot / dengan s,t elemen @(/) Step 1 33 ,abel titik dengan B(s)C- dan untuk setiap titik ! di / selain s, label titik ! dengan B(!)C7 (dalam praktek 7 diganti dengan bilangan yang >sangat besar? atau diibaratkan sebagai bilangan yang sangat besar). 2ulis 2 C @(/). Step 2 33 Misalkan u D 2 denga B(u) minimum Step # 33 +ika u C t, "2&<, dan beri pesan3 ><anjang lintasan terpendek dari s ke t adalah B(t)?. Step 4 33 untuk setiap sisi e C u!, ! D 2, diganti label ! dengan B(!)C minimum EB(!),B(u) F*(e)G. Step $ 33 2ulis 2 C 2 H EuG, dan kembali ke step 9III keterangan simbol 33 B C ,amda D C elemen

De%inisi Strategi Algoritma &loyd 'arshall


#al yang membedakan pencarian solusi menggunakan pemrograman dinamis (*arshall) dengan algoritma greedy adalah, bahwa keputusan yang diambil pada tiap tahap pada algoritma greedy hanya berdasarkan pada informasi yang terbatas, sehingga hanya nilai optimum yang diperoleh pada saat itu. +adi pada algoritma greedy, kita tidak memikirkan konsekuensi yang akan terjadi seandainya kita memilih suatu keputusan pada suatu tahap. Dalam beberapa kasus, (lgoritma /reedy gagal memberikan solusi terbaik karena kelemahan yang dimilikinya tadi. Di sinilah peran pemrograman dinamis yang mencoba

untuk memberikan solusi yang memiliki pemikiran terhadap konsekuensi yang ditimbulkan dari pengambilan keputusan pada suatu tahap. <emrograman dinamis mampu 3 J Mengurangi pengenumerasian (<endaftaran) keputusan yang tidak mengarah ke solusi. J <rinsip yang dipegang oleh pemrograman dinamis adalah prinsip optimalitas, yaitu jika solusi total optimal, maka bagian solusi sampai suatu tahap (misalnya tahap ke-i) juga optimal.

Analisis Algoritma &loyd('arshall


(lgoritma )loyd-*arshall membandingkan semua kemungkinan lintasan pada graf untuk setiap sisi dari semua simpul. #al tersebut bisa terjadi karena adanya perkiraan pengambilkan keputusan (pemilihan jalur terpendek) pada setiap tahap antara dua simpul, hingga perkiraan tersebut diketahui sebagai nilai optimal. Misalkan terdapat suatu graf / dengan simpul-simpul @ yang masing-masing bernomor A s.d. 0 (sebanyak 0 buah). Misalkan pula terdapat suatu fungsi shortest<ath(i, j, k) yang mengembalikan kemungkinan jalur terpendek dari i ke j dengan hanya memanfaatkan simpul A s.d. k sebagai titik perantara. 2ujuan akhir penggunaan fungsi ini adalah untuk mencari jalur terpendek dari setiap simpul i ke simpul j dengan perantara simpul A s.d. kFA. (da dua kemungkinan yang terjadi3 J +alur terpendek yang sebenarnya hanya berasal darisimpul-simpul yang berada antara A hingga k. J (da sebagian jalur yang berasal dari simpul-simpul i s.d. kFA, dan juga dari kFA hingga j. )ontoh *as!s Algoritma &loyd('arshall (da beberapa jalur antara ( dan E3 <ath A 3 ( -K $ -K E 9<ath 9 3 ( -K D -K E 98 <ath ; 3 ( -K $ -K D -K E ;8 <ath : 3 ( -K D -K $ -K E 9-

(da beberapa hal yang harus dilihat di grafik tersebut 3 J (da bisa lebih dari satu rute antara dua node.

J +umlah node dalam rute tersebut tidak penting (+alur : memiliki : node tetapi lebih pendek dari +alur 9, yang memiliki ; node). J (da bisa lebih dari satu jalur panjang minimal.

<ada algoritma ini diperhatikan agar hasil akhir adalah se-optimum mungkin. <ada jarak antar kota di atas, dari kota ( untuk menuju kota ) terdapat beberapa jalur, dapat melalui kota $ terlebih dahulu, kota E, atau kota 4. <ada algoritma ini dipilih jalur melalui kota 4 kemudian ke kota ) sehingga jarak tempuh total adalah 69 km. $erbeda jika kita memilih kota $ atau E terlebih dahulu, karena akan menghasilkan jarak tempuh yang lebih panjang. *esimp!lan J (lgoritma )loyd-*arshall yang menerapkan pemrograman dinamis lebih menjamin keberhasilan penemuan solusi optimum untuk kasus penentuan lintasan terpendek (single pair shortest path). J <rinsip yang dipegang oleh pemrograman dinamis adalah prinsip optimalitas, yaitu jika solusi total optimal, maka bagian solusi sampai suatu tahap (misalnya tahap ke-i) juga optimal.

Vous aimerez peut-être aussi