SHORTEST PATH ALGORITHM
(Dijkstra, Bellman-Ford)
SHORTEST PATH ALGORITHM
2
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
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
Pengertian Shortest Path
4
Misalkan sebuah directed graph
G V,Ek
v
v
v
p
0,
1,....,
adalahBobot dari sebuah path
k i i i v v w p w 1 1,
Shortest Path Properties
Jika G tidak memiliki bobot, maka shortest pathnya
diperoleh dari panjang path yang paling minimal (jumlah
edge-nya paling sedikit).
Jika G merupakan graph dengan bobot tertentu, maka bobot dari
p adalah
p v uv
u
w
p
w
,,
Shortest Path Properties
6
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
Syarat
Syarat yang harus dipenuhi oleh sebuah shortest path:
Shortest path tidak memiliki cycle. Sebuah shortest path memiliki
1
algoritma single source shortest path
8
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
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
algoritma DIJKSTRA
10
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) Є
Metode algoritma DIJKSTRA
1.
Inisialisasi s (sumber)
Pilih salah satu vertex sebagai sumber Maka d(s) = 0
Beri label 0 pada vertex s
2.
Untuk masing-masing edge e Є E
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)
12
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
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
Metode algoritma DIJKSTRA
14
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
Contoh 1
Tentukan shortest path dari A ke setiap v pada graph G
berikut:
A D C 7 10 6 4 8 5 2 15 9 BContoh 1(cont)
16
Spanning tree T kosong
1. Inisialisasi s (sumber)
pilih vertex A sebagai sumber.
S=A, maka d(A)=0. beri label 0 pada A 2. 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
A D C E 7 10 6 4 8 5 2 15 9 B d(A)=0
Contoh 1(cont)
A D C E 7 10 6 4 8 5 2 15 9 B d(A)=0 d(C)=73 . AC yang mempunyai nilai P terkecil
sehingga C ditambahkan ke spanning tree T
d(c)=P(AC)=7
Contoh 1(cont)
184. Kembali ke no 2
P(AB)=10,P(AE)=15, P(CB)=22,P(CD)=9,P(CE)=15 CD yg mempunyai nilai Pterkecil, sehingga D ditambahkan ke T Beri label d(D)=9 A D C E 7 10 6 4 8 5 2 15 9 B d(A)=0 d(C)=7 d(D)=9
Contoh 1(cont)
5. Kembali ke no 2
• 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 A D C E 7 10 6 4 8 5 2 15 9 B d(A)=0 d(C)=7 d(D)=9 d(B)=10Contoh 1(cont)
205.
Kembali ke no 2
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
A D C E 7 10 6 4 8 5 2 15 9 B d(A)=0 d(C)=7 d(B)=10 d(D)=9 d(E)=13Aplikasi 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
contoh
contoh
contoh
soal
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
Ciri – ciri Algoritma Bellman-Ford :
30
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.
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
Algoritma :
32
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
Teknik relaksasi
Untuk setiap vertex v Є V, d (v) adalah bobot upper bound sebuah shortest path dari s ke v, d(v) disebut
estimasi
relaksasi
34
1. pada algorithm Dijkstra dan algoritma shortest-paths untuk
directed acyclic graphs (DAG), setiap edge direlaksasi sekali.
Triangle Inequality
Lemma 1
Untuk setiap edge (u; v) Є E, mempunyai δ(s;v) ≤ δ(s;u)+w(u;v)
Upper-bound Property
36
Lemma 2
Kita selalu mempunyai d[v] ≥ (s;v) untuk seluruh vertices vЄV
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
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.
Path-relaxation Property
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.
Applications in routing
40
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.
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
contoh
42
• develop algorithm using the following working example
• use a table to show changes in estimates of distances and
predecessors
• initialize table — no predecessors
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)
contoh
44
show how we can use predecessor information to trace paths from source