Anda di halaman 1dari 53

SHORTEST PATH ALGORITHM

(Dijkstra, Bellman-Ford)

SHORTEST PATH ALGORITHM


Macam macam shortest Path
Shortest path dapat dibedakan menjadi :
Single Source Shortest Path

Menentukan shortest path dari verteks sumber s V ke setiap verteks v V

Algoritma Dijkstra , Algoritma Bellman Ford

Single Destination Shortest Path


Menentukan shortest path ke suatu tempat t dari tiap verteks v

Single Pair shortest path


Menentukan shortest path dari u ke v jika diketahui pasangan u dan v

All pair shortest path


Untuk semua pasangan (u,v) ditentukan kemungkinan shortest pathnya. Floyd-Warshall

Masalah Shortest Path


Terdapat sebuah graph berbobot (weighted graph) dan
dua vertices u dan v, kita ingin menemukan sebuah path
dengan bobot minimum antara u dan v.
panjang path adalah penjumlahan dari bobot sisi-sisinya
(edges).
Contoh :
Shortest path antara jakarta surabaya
Aplikasi
Internet packet routing
Flight reservations
Driving directions
3

Pengertian Shortest Path


Misalkan sebuah directed graph
Bobot dari sebuah path
adalah

v0 , v1 ,...., vk

w p

w vi 1 , vi
i 1

Bobot shotest path dari u ke v adalah

V,E

Shortest Path Properties


Jika G tidak memiliki bobot, maka shortest pathnya

diperoleh dari panjang path yang paling minimal (jumlah edgenya paling sedikit).
Jika G merupakan graph dengan bobot tertentu, maka bobot dari
p adalah

w p

w u, v
u ,v

Shortest Path Properties


Property 1:
Sebuah subpath dari sebuah shortest path adalah sebuah shortest
path
Property 2:
Terdapat sebuah tree dari shortest paths dari start vertex ke seluruh
vertex lainnya

Syarat
Syarat yang harus dipenuhi oleh sebuah shortest path:
Shortest path tidak memiliki cycle.
Sebuah shortest path memiliki

edge.

algoritma single source shortest path


Ada 2 macam algoritma yang digunakan dalam
memecahkan masalah single source shortest path, yaitu:
Algoritma Bellman Ford ialah algoritma yang digunakan

untuk memecahkan masalah single shortest path yang memiliki


edge dengan bobot negatif.

Algoritma Djikstra ialah algoritma yang digunakan untuk

memecahkan masalah single shortest path yang memiliki edge


dengan bobot positif.

DJIKSTRA
Edsger Wybe Dijkstra lahir di Rotterdam 11 May 1930.

ibunya seorang ahli metematika dan ayahnya seorang


ahli kimia .

th 1956 Dijkstra lulus dari Universitas Leiden dalam

bidang mathematika dan teori fisika

Th 1959 Dijkstra menerima PhD Universitas

Amsterdam untuk thesisnya yg berjudul


Communication with an Automatic Computer,

algoritma DIJKSTRA
Algoritma dijkstra adalah salah satu algoritma untuk

memecahkan masalah single source shortest path

Pada algoritma dijkstra pemecahan masalah

diperuntukkan untuk sebuah Graph G=(V,E) yang


berbobot non negatif.

Diasumsikan w(i,j) 0 untuk masing-masing edge (i,j)

10

Metode algoritma DIJKSTRA


1.

Inisialisasi s (sumber)

2.

Untuk masing-masing edge e E

11

Pilih salah satu vertex sebagai sumber


Maka d(s) = 0
Beri label 0 pada vertex s
Jika i adalah endpoint dari e yang sudah diberi label dan j
adalah endpoint yang belum diberi label maka p(i,j) adalah =
d(i) + w(i,j)

Metode algoritma DIJKSTRA


3. e adalah edge untuk T yang mempunyai nilai P terkecil

Jika i adalah endpoint dari e yang sudah diberi label dan j


adalah endpoint yang belum diberi label maka tambahkan e
dan vertex j ke tree T
d(j)=P(ij)
Beri label d(j) pada vertex j

4. Kembali ke no 2

12

Metode dijkstra
Metode algoritma DIJKSTRA menggunakan metode
relaksasi

Relaksasi (i,j,w)
Jika d(j)>d(i)+w(i,j)
Maka d(j) adalah d(i) + w(i,j)
Beri label d(j) pada j

13

Metode algoritma DIJKSTRA


Output algoritma dijkstra adalah spanning tree T, dimana

path dari vertex s (sumber) ke masing-masing vertex v


adalah sebuah shortest path dari s ke v dalam sebuah graph
G.

Label pada sebuah vertex adalah jarak dari s ke masing-

masing vertex

14

Contoh 1
Tentukan shortest path dari A ke setiap v pada graph G

berikut:

10

A
15

6
5

9
C

2
8

15

Contoh 1(cont)
d(A)=0

A
7
C

15

Spanning tree T kosong


1.

6
2
E

Inisialisasi s (sumber)

9
8

16

10

2.

pilih vertex A sebagai sumber.


S=A, maka d(A)=0. beri label 0 pada A

Untuk semua edge E,

i adalah endpoint yg sudah di label , i = A


j adalah endpoint yg belum dilabel j= B,C,D,E
P(AB)=10, P(AC)=7, P(AE)=15

Contoh 1(cont)
d(A)=0

10

7
C
d(C)=7

17

3 . AC yang mempunyai nilai P terkecil


sehingga C ditambahkan ke spanning tree
T
B

15

6
5

2
8

d(c)=P(AC)=7
Beri label d (c) pada vertex c

Contoh 1(cont)
d(A)=0

10

A
7
C
d(C)=7

18

4. Kembali ke no 2

15

6
5

2
8

D d(D)=9

P(AB)=10,P(AE)=15,
P(CB)=22,P(CD)=9,P(CE)=15
CD yg mempunyai nilai P
terkecil, sehingga D ditambahkan
ke T
Beri label d(D)=9

Contoh 1(cont)
5. Kembali ke no 2
d(A)=0

10

A
7
C
d(C)=7

19

d(B)=10

15

2
8

D d(D)=9

P(AB)=10,P(AE)=15,
P(CB)=22,P(CE)=15,P(DB)=15
,P(DE)=13
AB yg mempunyai nilai
terkecil,sehingga B ditambahkan
ke T
Beri label d(B) =10

Contoh 1(cont)
5. Kembali ke no 2
d(A)=0
A
7
C
d(C)=7

d(B)=10
B

10
15

6
5

2
8

d(E)=13

D
d(D)=9

P(AE)=15, P(CB)=22,
P(CE)=15,P(DB)=15,
P(DE)=13, P(BE)=18
DE yg mempunyai nilai
terkecil,sehingga E
ditambahkan ke T
Beri label d(E) =13

6. Semua vertex sudah

diberi label
7. selesai
20

Aplikasi dijkstra
Dijkstra's algorithm determines the distances (costs) between a given

vertex and all other vertices in a graph.This may be useful to determine


alternatives in decision making.

Dijkstra's algorithm is almost identical to that of Prim's.The algorithm

begins at a specific vertex and extends outward within the graph, until
all vertices have been reached.

The only distinction is that


Prim's algorithm stores a minimum cost edge
whereas Dijkstra's algorithm stores the total cost from a source vertex to

the current vertex.

More simply, Dijkstra's algorithm stores a summation of minimum cost

edges whereas Prim's algorithm stores at most one minimum cost edge.

21

contoh

22

contoh

23

contoh

24

contoh

25

contoh

26

contoh

27

soal
Tentukan shortest path dari A ke semua node pada graph berikut :

28

BELLMAN FORD
Algoritma ini merupakan pengembangan dari algoritma Djikstra,
Algoritma Bellman Ford akan benar jika dan hanya jika graph tidak
terdapat cycle dengan bobot negatif yang dicapai dari sumber s.

No cycle
Diasumsikan shortest
paths tidak mempunyai
cycles.
shortest path maksimum
mempunyai |V|-1 edge

29

Ciri ciri Algoritma Bellman-Ford :


Bekerja walaupun terdapat edge dengan bobot negative.
Harus directed edge (jika tidak graph akan memiliki cycle dengan

bobot negatif)
Iterasi i menemukan seluruh shortest path dengan menggunakan i
edge.
Dapat mendeteksi cycle dengan bobot negatif jika ada.

30

Contoh algoritma bellman ford

BF(G,w,s) // G = Graph, w = weight, s=source


Determine Single Source(G,s);
set Distance(s) = 0; Predecessor(s) = nil;
for each vertex v in G other than s,
set Distance(v) = infinity, Predecessor(v) = nil;
for i <- 1 to |V(G)| - 1 do //|V(G)| Number of vertices in the graph
for each edge (u,v) in G do
if Distance(v) > Distance(u) + w(u,v) then
set Distance(v) = Distance(u) + w(u,v), Predecessor(v) = u;
for each edge (u,r) in G do
if Distance(r) > Distance(u) + w(u,r);
return false; //This means that the graph contains a cycle of negative weight
//and the shortest paths are not well defined
return true; //Lengths of shortest paths are in Distance array

31

Algoritma :

Bellman-Ford(G,w,s)
Inisialisasi single source(G,s)
for i=1 to |V[G]|-1
do for each edge (u,v) E[G]
do RELAX(u,v)
for each edge (u,v) E[G]
;
untuk mencek apakah ada atau tidak cycle dgn bobot negatif

do if d[v] > d[u] +w ((u,v))

jika hasil algoritma yang diinginkan belum didapat

then return FALSE


return TRUE;

32

Teknik relaksasi
Untuk setiap vertex
v V, d (v) adalah
bobot upper bound
sebuah shortest
path dari s ke v,
d(v) disebut
estimasi
shortest-path

33

relaksasi
1.

pada algorithm Dijkstra dan algoritma shortest-paths untuk


directed acyclic graphs (DAG), setiap edge direlaksasi sekali.

2. pada algoritma Bellman-Ford, setiap edge direlaksasi beberapa kali.

34

Triangle Inequality
Lemma 1

Untuk setiap edge (u; v) E, mempunyai (s;v)


(s;u)+w(u;v)

35

Upper-bound Property
Lemma 2
Kita selalu mempunyai d[v] (s;v) untuk seluruh vertices vV
dan satu d[v] achieves the value (s;v), yang tidak pernah berubah
Corollary 1
Jika tidak terdapat path dari s ke v, maka kita selalu mempunyai
d[v] = (s;v) = .

36

Convergence Property

Lemma 3 If s
u v is a shortest path in
G for some u; v V and if d[u] = (s;u) at
any time prior to relaxing edge (u;v), then
d[v] = (s;v) at all times afterward.

37

Path-relaxation Property

38

Applications in routing
A distributed variant of Bellman-Ford algorithm is used in the

Routing Information Protocol (RIP). The algorithm is


distributed because it involves a number of nodes (routers)
within an Autonomous system, a collection of IP networks
typically owned by an ISP. It consists of the following steps:
Each node calculates the distances between itself and all other

nodes within the AS and stores this information as a table.


Each node sends its table to all neighbouring nodes.
When a node receives distance tables from its neighbours, it
calculates the shortest routes to all other nodes and updates
its own table to reflect any changes.

39

Applications in routing
The main disadvantages of Bellman-Ford algorithm in this

setting are
Does not scale well
Changes in network topology are not reflected quickly since

updates are spread node-by-node.


Counting to infinity

40

algoritma Bellman Ford


Ada dua hal yang harus menjadi catatan pada algoritma

Bellman-Ford, yaitu :

Shortest path tidak akan terdiri lebih dari V-1 edge dari graph yang

bersangkutan, dengan asumsi tidak ada negative cycle.Jika terdapat


lebih dari V-1 edge pada shortest path, maka ada node yang dilewati
lebih dari satu kali.Hal tersebut akan mengakibatkan shortest path
tidak optimal.

Pada tiap iterasi, harus dipertimbangkan edge mana yang akan

digunakan terlebih dahulu.

41

contoh
develop algorithm using the following working example
use a table to show changes in
estimates of distances and
predecessors
initialize table no
predecessors

42

contoh
Revise estimates of distances
Ulangi sebanyak v-1 kali
Untuk masing-masing edge (u, v) dalam graph, set d(v) =
min[d(v), d(u) + w(u, v)]
Jika jarak direvisi, tentukan vertex predecessor baru
edges dapat diambil dengan berbagai cara misalnya sesuai
dengan urutan abjad: (a, b), (a,c), (a, d), (b, a), (c, b), . . . , (s,
b)

43

contoh

show how we can use predecessor information to trace


paths from source
44

penjelasan

45

46

47

48

49

50

51

52

HAPPY LEARNING !!

Anda mungkin juga menyukai