6 Algoritma Dijkstra

You might also like

Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 26

ALGORITMA

DIJKSTRA
Kuliah ke 6
Strategi Algoritma
Teknik Informatika
Universitas Ahmad Dahlan
Algoritma Dijkstra diterapkan untuk
mencari lintasan terpendek pada graf
berarah. Namun, algoritma ini juga
benar untuk graf tak berarah.
Algoritma Dijkstra mencari lintasan
terpendek dalam sejumlah langkah.
Algoritma ini menggunakan prinsip
greedy. Prinsip greedy pada algoritma
dijkstra menyatakan bahwa pada
setiap langkah kita memilih sisi yang
berbobot minimum dan memasukannya
dalam himpunan solusi.
Misalkan sebuah graf berbobot dengan n buah simpul
dinyatakan dengan matriks M=[mij], yang dalam hal ini:
mij = bobot sisi (i,j) (pada graf tak berarah mij =mji )
mii = 0
mij = ∞ , jika tidak ada sisi dari simpul I ke simpul j
Selain matriks M, juga menggunakan tabel S=[si], yang
dalam hal ini:
si = 1, jika simpul i termasuk ke dalam lintasan
terpendek
si = 0, jika simpul i tidak termasuk ke dalam lintasan
terpendek
dan tabel D=[di], yang dalam hal ini
di = panjang lintasan dari simpul awal a ke simpul i
Contoh
Graf yang menyatakan beberapa kota di Amerika
Matriks M=
Perhitungan lintasan terpendek dari simpul awal a = 5 ke semua
simpul lainnya ditabulasikan sebagai berikut.
Lelaran Simpul yang Lintasan S D
dipilih
12345678 1 2 3 4 5 6 7 8

Inisial - - 00000000 ∞ ∞ ∞ 1500 0 250 ∞ ∞

1 5 5 00001000 ∞ ∞ ∞ 1500 ∞ 250 ∞ ∞

2 6 5,6 00001100 ∞ ∞ ∞ 1250 ∞ 250 1150 1650

3 7 5,6,7 00001110 ∞ ∞ ∞ 1250 ∞ 250 1150 1650

4 4 5,6,4 00011110 ∞ ∞ 2450 1250 ∞ 250 1150 1650

5 8 5,6,8 00011111 3350 ∞ 2450 1250 ∞ 250 1150 1650

6 3 5,6,4,3 01111111 3350 ∞ 2450 1250 ∞ 250 1150 1650

7 2 5,6,4,3,2 01111111 3350 3250 2450 1250 ∞ 250 1150 1650


Jadi, lintasan terpendek dari:
5 ke 6 adalah 5,6 dengan jarak = 250
5 ke 7 adalah 5,6,7 dengan jarak = 1150
5 ke 4 adalah 5,6,4 dengan jarak = 1250
5 ke 8 adalah 5,6,8 dengan jarak = 1650
5 ke 3 adalah 5,6,4,3 dengan jarak = 2450
5 ke 2 adalah 5,6,4,3,2 dengan jarak = 3250
5 ke1 adalah 5,6,8,1 dengan jarak = 3350
CONTOH ALGORITMA DIJKSTRA
Algorima Dijkstra dinyatakan dalam
notasi pseudo-code sebagai berikut:

procedure Dijkstra(input m: matriks, a: simpul awal)


{Mencari lintasan terpendek dari simpul awal a ke semua
simpul lainnya. Masukan: matriks (m) dari graf berbobot G dan
simpul awal a. Keluaran: lintasan terpendek dari a ke semua
simpul lainnya }

Deklarasi
s1, s2,…, sn : integer
d1, d2,…, dn : integer
i, j, k : integer
Algoritma
{langkah 0 inisialisasi: }
for i ← 1 to n do
si ← 0
di ← mai
endfor
{langkah1:}
sa ← 1 {karena simpul a adalah simpul asal lintasan terpendek, jadisimpul a sudah pasti terpilih dalam lintasan terpendek}
da ← ∞ {tidak ada lintasan terpendek dari simpul a ke a}
{langkah 2, 3, …, n-1: }
for k ← 2 to n-1 do
j ← simpul dengan sj = 0 dan dj minimal
sj ← 1b{simpul j sudah terpilih ke dalam lintasan terpendek}
{perbarui table d}
for semua simpul i dengan si = 0 do
if dj + mji < di then
di ← dj + mji
endif
endfor
endfor
Penerapan Algoritma Dijkstra pada
Jaringan Komputer

Jaringan komputer dapat dimodelkan


sebagai sebuah graf, dengan setiap simpul
menyatakan sebuah komputer/router dan sisi
di dalam graf menyatakan saluran komunikasi
(sering disebut link). Setiap sisi mempunyai
label nilai ( yang disebut bobot). Bobot
tersebut dapat menyatakan jarak
geografis(dalam km), kecepatan transfer data,
waktu pengiriman).
Lanjutan (Penerapan Algoritma
Dijkstra pada Jaringan Komputer)

Mencari lintasan terpendek dari router


asal ke router tujuan dapat diartikan
sebagai menentukan lintasan terpendek dari
simpul asal ke simpul tujuan di dalam graf
yang merepresentasikan jaringan komputer
tersebut. Algoritma Dijkstra adalah
algoritma yang banyak digunakan untuk
mencari lintasan terpendek.
Referensi
• Rinaldi Munir, 2010, Diktat Kuliah Strategi
Algoritma ITB
• Gilles Brassard, 1996, Fundamental Of Algoritmh,
Prentice Hall, New Jersey
• Cormen et al, 2009, Introduction to Algorithms :
thrid edition, MIT

You might also like