Anda di halaman 1dari 7

4.

A SHORTEST-PATH ALGORITHM

Weighted graph : graf yang edge-edge nya diberi bobot (nilai)


Panjang dari suatu path dalam weighted graph : jumlah bobot dalam path itu
Misal w(i, j) bobot dari edge (i, j). Akan dicari suatu shortest-path, yaitu suatu path yang
mempunyai panjang minimum di antara dua vertex yang diberikan.
Algoritma yang secara efisien menyelesaikan masalah ini diberikan oleh Edger W Dijkstra
(1930-) dari Netherland.

Asumsi : graf G connected berbobot, bobot merupakan bilangan positif, akan dicari suatu
shortest-path dari vertex a ke vertex z.

Misal L(v) menyatakan label dari vertex v. Pada sebarang titik, beberapa vertex mempunyai
temporary label dan sisanya mempunyai permanent label. Misal T menyatakan himpunan vertex-
vertex yang mempunyai temporary label. Dalam mengilustrasikan algoritma ini, vertex-vertex
yang mempunyai permanent label akan dilingkari. Akan ditunjukkan bahwa jika L(v) adalah
permanent label dari vertex v, maka L(v) adalah panjang shortest-path dari vertex a ke v. Pada
mulnya, semua vertex mempunyai temporary label. Tiap iterasi dari algoritma mengubah status
satu label dari temporary label ke permanent label; jadi algoritma akan berhenti jika vertex z
menerima permanent label. Ini berarti, L(z) memberikan panjang suatu shortest-path dari a ke z.

ALGORITHM 4.1 Dijkstra’s Shortest-Path Algorithm


Algoritma ini mencari panjang shortest-path dari vertex a ke vertex z dalam connected, weighted
graph. Bobot edge (i, j) adalah w(i, j) > 0 dan label vertex x adalah L(x). Pada terminasi, L(z)
adalah panjang shortest-path dari a ke z.
Input : Connected, weighted graph, semua bobot positif
Vertex-vertex a dan z
Output : L(z) (panjang shortest-path dari a ke z)
1. [Initialization.] Set L(a) :=0. Untuk semua vertex x ≠ a, set L(x) : = ∞. Misal T adalah
himpunan vertex-vertex tersebut.
2. [Done ?] If z ∉T, stop. (L(z) adalah panjang shortest-path dari a ke z)
3. [Get next vertex.] Pilih v ∈ T dengan nilai terkecil dari L(v). Set T := T-{v}.
4. [Revise labels.] Untuk tiap x ∈ T yang adjacent dengan v, set
L(x) := min{L(x), L(v) + w(v, x)}
Go to line 2.
CONTOH 4.1 : Carilah shortest-path dari a ke z dalam graf berikut :

b 2 c

2 4 1
2 3

a d e
4 z

1 3 7
6

f 5 g

• T = {a, b, c, d, e, f, g, z}
• Vertex-vertex T tidak dilingkari dan mempunyai label sementara
• Vertex-vertex dilingkari mempunyai label tetap
Iterasi 1 :

b 2 c

2 4 1
2 3

a d e
4 z

1 3 7
6

f 5 g

• z ∈ T  lanjutkan
• Pilih vertex a ∈ T dengan nilai terkecil. L(a) = 0.
T:= T-{a}= {b, c, d, e, f, g, z}
• Vertex-vertex yang adjacent dengan a adalah b dan f.
L(b) : = min {L(b), L(a) + w(a, b)} = min {∞, 0 + 2} = 2
L(f) : = min {L(f), L(a) + w(a, f)} = min {∞, 0 + 1} = 1

Iterasi 2 :

(a,2) b 2 c

2 4 1
2 3
0 ∞
a d e
4 z


1 3 7
6

f (a,1) 5 g ∞

• z ∈ T  lanjutkan
• Pilih vertex f ∈ T dengan nilai terkecil. L(f) = 1.
T := T-{f}= {b, c, d, e, g, z}
• Vertex-vertex yang adjacent dengan f adalah d dan g.
L(d) : = min {L(d), L(f) + w(f, d)} = min {∞, 1 + 3} = 4
L(g) : = min {L(g), L(f) + w(f, g)} = min {∞, 1 + 5} = 6

Iterasi 3 :
b 2 c

2 4 1
2 3

a d e
4 z

1 3 7
6

f 5 g

• z ∈ T  lanjutkan
• Pilih vertex d ∈ T dengan nilai terkecil. L(d) = 4.
T := T-{d}= {b, c, e, g, z}
• Vertex-vertex yang adjacent dengan d adalah b dan e.
L(b) : = min {L(b), L(d) + w(d, b)} = min {2, 4 + 2} = 2
L(e) : = min {L(e), L(d) + w(d, e)} = min {∞, 4 + 4} = 8

Iterasi 4 :

b 2 c

2 4 1
2 3

a d e
4 z

1 3 7
6

f 5 g

• z ∈ T  lanjutkan
• Pilih vertex b ∈ T dengan nilai terkecil. L(b) = 2.
T := T-{b}= {c, e, g, z}
• Vertex-vertex yang adjacent dengan b adalah c dan e.
L(c) : = min {L(c), L(b) + w(b, c)} = min {∞, 2 + 2} = 4
L(e) : = min {L(e), L(b) + w(b, e)} = min {8, 2 + 4} = 6

Iterasi 5 :

(a,2) b 2 c

2 4 1
2 3
0 ∞
a d e
4 z


1 3 7
6

f (a,1) 5 g ∞

• z ∈ T  lanjutkan
• Pilih vertex c ∈ T dengan nilai terkecil. L(c) = 4.
T := T-{c}= {e, g, z}
• Vertex-vertex yang adjacent dengan c adalah e dan z.
L(e) : = min {L(e), L(c) + w(c, e)} = min {6, 4 + 3} = 6
L(z) : = min {L(z), L(c) + w(c, z)} = min {∞, 4 + 1} = 5

Iterasi 6:
(a,2) b 2 c

2 4 1
2 3
0 ∞
a d e
4 z


1 3 7
6

f (a,1) 5 g ∞

• z ∈ T  lanjutkan
• Pilih vertex z ∈ T dengan nilai terkecil. L(z) = 5.
T := T-{z}= {e, g}
• Tidak ada vertex-vertex yang adjacent dengan z

Iterasi 7 :
• z ∉ T  STOP
• L(z) = 5  panjang shortest-path
Dengan shortest-path : a, b, c, z

5. ISOMORPHISMS OF GRAPHS
Graf G1 dan G2 dikatakan isomorphic (ditulis G1 ≅ G2) jika ada pemetaan satu-satu φ
(isomorphism) dari V(G1) onto V(G2) sedemikian sehingga φ mempertahankan sifat-sifat
adjacency, yaitu
uv ∈E(G1) ⇔ φu φv ∈ E(G2)

CONTOH 5.1 :

G1 G2 G3

G1 ≅ G2 : def. φui = vi , ui ∈ V(G1), vi ∈ V(G2).


G1 ≠ G3 : ada tiga vertex yang saling adjacent di G3.

THEOREM 5.1 : Jika G1 dan G2 graf yang isomorphic, maka degree vertex G1 tepat sama dgn
degree vertex G2.

Bukti : exercise !