Single
source
shortest
path
dijkstra
j
wijanarto
Terminologi
• Dijkstra’s algorithm di pakai untuk menemukan shortest path dari satu source ke seluruh vertek dalam graph.
• Algo ini menggunakan 2 himp node yaitu S dan C.
• Pada himp. S berisi node yang terpilih yang
memiliki jarak minimal dari source.
• Pada himp. C berisi node selain yang terpilih dalam S, yang belum di ketahui dan merupakan kandidat yang akan di pilih pada langkah berikutnya
Terminologi
• Dengan demikian kita akan peroleh N=S∪C • Pada saat algoritma berhenti, S berisi seluruh
node dari G dan masalah terselesaikan.
i l k h ilih d l C k
• Tiap langkah yang terpilih dalam C merupakan jarak terkecil pada source dan di tambahkan ke S
Abstraksi
• Diberikan G={V,E}, directed graph dengan fungsi l:EÆR+ 0.5 5• Problem mencari jalur terpendek dari S ke T
1.1 2 3 3.1 7 S source T (destination)
Abstraksi
• Berapa pa th yang mungkin dari garaph G tadi? 8 6 • Shortest path = 7.2 8.6 7.2 8.1 9 8.6
Abstraksi
• Dapatkah kita mencari SP dengan cara seperti sebelumnya ??? Kenapa ??
• Sebab dalam praktek, mungkin terdapat G yang besar dengan path yang tidak di ketahui yang besar dengan path yang tidak di ketahui, misal :
• Jika terdapat k diamond, berapa vertek‐nya • Berapa Path??
S T
3k+1
2kdiantara S dan T
Abstraksi
• Sehingga jika terdapat n vertek, maka terdapat 2 n/3path
• Lalu bagaimana kita mencari SP pada problem seperti ini??
seperti ini??
• Untuk melakukannya kita harus tahu property dari SP S T 0.5 1 1.1 0.2 0.3 0.4 0.5 0.8
Property
SP
(single
short
shortest
path)
• Di berikan path dalam G, dari s ke t
s x t
• X salah satu vertek dalam path s‐t, sehingga terdapat path s‐x dalam s‐t, dimana merupakan SP
• Jadi Algoritma yang akan di bicarakan adalah
contoh
• Misal l1<l2<l3, merupakan adj vertek dari s ke v1,v2,v3
• Dikatakan bahwa sp dari s –v1 adalah l1, dan berlaku untuk semua path dari s ke setiap v berlaku untuk semua path dari s ke setiap v dalam G, karena l adalah bernilai positive • Dinotasikan distance/jarak pada
d[v1]=l1,d[v2]<=l2, dst s l3 l2 l1 v1 v2 v3
IDE
SSSP
s 2.3 1.1 0.7 v1 v2 3 v4 v5 0.4 0.5 0.5 0.3• D[v1]=0.7, karena hanya terdapat 1 path
• D[2]=1.1Î1.2, ada path lain (s‐v1‐v2) tp tdk update
• D[3]=2.3 Î1,ada path lain(s‐v1‐v3)
–Path d[2] dan d[3] mengalami update utk mendapatkan shortest path • D[4]=1.1 • D[5]=1.2 v3
Algoritma
procedureDijkstra;{ Dijkstra menghitung cost shortest path dr vertex 1 ke tiap vertex dr directed graph }
begin
1. S := {1}; 2. for i := 2 to n do
3. D[i] := C[1, i]; { inisialkan D },
4. for i := 1 to n-1 do begin
5. Pilih vertex w dlm V-S sedemikian sehingga D[w] adlh minimum;
6. Tambahkan w ke S;
7. for tiap vertex v dlm V-S do 8. D[v] := min(D[v], D[w] + C[w, v]) end end;{ Dijkstra}
SSSP
Manual
• Misalkan source 1, maka 1 2 5 45 4 1 2 5 3 50 35 15 20 3 6 10 10 20 15 30SSSP
Manual
• Cari Source Ke Akhir simpul, ternyata ada: –1‐2,1‐3,1‐4,1‐5
• Cari jalur terpendek dari tiap‐tiap simpul yang berhubungan dr source ke akhir
berhubungan dr source ke akhir –1‐2 •1‐2 =50 •1‐3‐4‐2 =45, terpendek •1‐5‐4‐2 =95
SSSP
Manual
–1‐3 •1‐3 =10 •1‐2‐3 =65, terpendek •1‐2‐5‐4‐2‐3 =125 •1 5 4 2 3 110 •1‐5‐4‐2‐3 =110 –1‐4 •1‐3‐4 =25, terpendek •1‐2‐5‐4 =90 •1‐2‐3‐4 =80 •1‐5‐4 =75SSSP
Manual
–1‐5 •1‐5 =45,terpendek •1‐2‐5 =60 •1‐3‐4‐2‐5 =65 •1‐3‐4‐5 =60• Kumpulkan jalur terpendek dari masing‐ masing simpul yang berhubungan dr source ke akhir
SSSP
Manual
‐
Hasil Akhir
Jalur Jarak 1‐3 10 1‐3‐4 25 1‐3‐4‐2 45 1‐5 45 45 4 1 2 5 3 20 10 15 45
Problem
• Di ketahui G=(V,E), directed and weighted.
• Hitung panjang (cost) shortest path darinode 1 ke setiap node dalam G.
• source node 1 ke 3. Ada beberapa pathsp p (1( ‐> 4 ‐ > 3, 1 ‐> 2 ‐> 3, dst.), tetapi shortest dari path tsb adalah 1 ‐> 4 ‐> 2 ‐>3 dg panjang 9.
• Tugas kita adalah bagaimana menemukan .
Algoritma Semi
‐
Greedy
• KompleksitasO(n*lg(lg(n))) hingga O(n2). • Ambil cost dari shortest path ke seluruh node
dan tandai dengan infinity (∞). Dan..
d i j ( ) h h d
• Tandai panjang (cost) shortest path pada source dengan0.
Algoritma (lanj.)
• Pilih node yg terdekat dg source dan blm optimal dan yang menjanjikan adalah path ke node 2 dan 4.
• Update cost∞pada 2 dan 4 • Update cost ∞pada 2 dan 4
–2Î0+10=10
–4Î0+5=5 (node terpilih)
• Dari 4 kita akan update cost node 2, 3 dan 5, yaitu: • 2Î5+2=7 (node terpilih) 3Î 9
Algoritma (lanj.)
• 3Î5+9=14 • 5Î5+2=7Algoritma (lanj.)
• Dari 2 kita akan update cost node 3 : • 2Î5+2=7 (node terpilih)
• 3Î5+9=14 • 5Î5+2=7
Algoritma (lanj.)
• Algoritma berhenti karena semua node sudah di kunjungi dan terupdate optimal cost • Panjang (cost) optimal =1‐4‐2‐3Î8 step Dari AÎ 1 2 3
SSSP
Greedy
A B 50 F C 10 10 20 40 10 20 20 A 80 A 90 A ∞ ∞ ∞ ∞ A B 20 A 30 B ∞ 80 ∞ A 90 A ∞ Cost selectedCurrent lowest cost
B C D E F G H F 20 40 70 ∞ 30 90 ∞ 3 4 5 6 7 8 E G D H 50 30 90 20 20 80 10 10 20 A F F B A C 60 C 50 C 20 A 40 F ∞ 30 B 90 A D 70 D 20 A 40 F 50 C ∞ 30 B 60 C H 70 D 20 A 40 F 50 C ∞ 30 B 60 C G 70 D 20 A 40 F 50 C ∞ 30 B 60 C
E=∞artinya tidak ada path lagi,walau ada edge Total cost=
Algoritma
Knapsack
• Ada beberapa versi dari masalah klasik ini. Salah satunya bisa
diilustrasikan sebagai berikut. Diberikan n objek dan sebuah
ransel (knapsack). Masing‐masing objek i mempunyai berat
widan vi. Ransel tersebut bisa memuat objek maksimal seberat W. Masalah y gyang harus dipecahkanp adalah bagaimanag
mengisi ransel dengan objek yang nilai maksimal tanpa
melewati batas kapasitas dari ransel. Dalam versi ini,
diasumsikan bahwa masing‐masing objek dapat dibagi
menjadi bagian yang lebih kecil, sehingga kita dapat
memutuskan untuk hanya membawa sebagian objek i
sebanyak x1. Dengan demikian, algoritma untuk masalah ini
Algoritma
• n adalah jumlah objek wiadalah variabel yang
menyatakan berat dari objek i, vi adalah
variabel yang menyatakan nilai dari objek i, xi adalah pecahan yang menyatakan beberapa adalah pecahan yang menyatakan beberapa bagian dari objek i yang dimasukkan dalam ransel. Variabel berat menyatakan jumlah berat objek yagn sudah dimasukkan dalam ransel, sedangkan W adalah kapasitas dari ransel.
Secara
Matematis
• Fungsi Utama/Tujuan/Objektif–Fungsi yg mjd penyelesaian masalah dengan
mendapatkan solusi optimal, yaitu mendapatkan
nilai pprofit ygyg maksimal utk sejumlahj obyeky yangy g
akan di muat dalam ransel yg sesuai kapasitasnya
• Fungsi Pembatas/Subyektif
–Bertujuan memberikan batas maksimal setiap
obyek untuk di muatkan dalam ransel sesuai
kapasitasnya
rumus
∑
=
i
n
i
i
X
P
1
Fungsi Tujuan∑
≤
=
X
M
W
n
i
i
1
Fungsi Pembatas0
,
0
,
1
0
≤
X
i≤
P
i>
W
i>
Solusi
Greedy
• Pilih obyek dengan nilai Pimaksimal • Pilih obyek dengan bobot Wiminimal • Pilih obyek dengan perbandingan Pi/Wi b terbesarAlgoritma
Knapsack
Greedy
void GREEDY(int n,int c, int p[],int w[]){int cc,jj,j; cc=c; zg=0; jj=1; for(j=1;j<n;j++){ if (w[j]>cc) x[j]=0; else { x[j] = 1; cc=cc-w[j]; zg=zg+p[j];g g p[j]; } if (p[j]>p[jj]) jj=j; } if (p[jj]>zg){ zg=p[jj]; for (j=1;j<n;j++) x[j]=0; x[jj]=1; } }
Psuedocode
Algoritma
–Inisiasi•Untuk setiap i, set xi= 0
•Set berat = 0
–Selama berat < W lakukan
•Pilih i, yaitu objek yang paling potensial (lihat keterangan di
bawah) dari objek yang tersisa.
•Jika berat + wi≤ maka xi= 1
Berat = berat + wi Jika tidak maka
xi= (W – berat) / wi berat = W
Contoh
Soal
• Diketahui
–n=3 dengan Wi(18,15,10) dan Pi(25,24,15) dan M=20
• Ditanyakan • Ditanyakan
–Tentukan berat tiap‐tiap barang yang dpt di muat dalam ransel dengan kapasitas M ?
Secara
Matematika
∑
=
i
i
i
X
P
3
1
i
1
∑
≤
=
20
3
1
i
i
X
W
0
,
0
,
1
0
≤
X
i≤
P
i>
W
i>
Step
1
• Tentukan solusi feasibel yaitu 2 X n dari batas bawah dan atas, lalu hitung sesuai kapasitas M<=20, untuk masing masing bobotnya X 0 X 1 X ? X 1 X 0 X ? X =1 X =? X =0 X1=0,X2=1,X3=? 18X1+15X2+10X3≤20 18.0+15.1+10.X3≤20 10X3≤20-15 X3=1/2 X1=1,X2=0,X3=? 18X1+15X2+10X3≤20 18.1+15.0+10.X3≤20 10X3≤20-18 X3=1/5 X1=1,X2=?,X3=0 18X1+15X2+10X3≤20 18.1+15X2+10.0 ≤20 15X2≤20-18 X2=2/15 X1=0,X2=?,X3=1 18X1+15X2+10X3≤20 18.0+15. X2+10.1 ≤20 15X2≤20-10 X2=2/3 X1=?,X2=1,X3=0 18X1+15X2+10X3≤20 18X1+15.1+10.0 ≤20 18X1≤20-15 X1=5/18 X1=?,X2=0,X3=1 18X1+15X2+10X3≤20 18X1+15.0+10.1 ≤20 18X1≤20-10 X1=5/9Step
2
• Buat tabel Untuk solusi fisibel Solusi ke (X1,X2,X3) ΣWiXi ΣPiXiProfit 1 (0 1 1/2) 20 31 5 solusi fisibel 1 (0,1,1/2) 20 31.5 2 (1,0,1/5) 20 28 3 (1,2/15,1) 20 28.2 4 (0,2/3,1) 20 31 5 (5/18,1,0) 20 30.9 6 (5/9,0,1) 20 28.8 solusi fisibel
Metode
Greedy
• Pilih barang dengan nilai profit Maksimal
–P1=25 Î x1=1, batas atas fungsi
–P2=24 Î x2=2/15, hasil perhit. fungsi pembatas
–P3=15 Î x3=0, batas bawah fungsi
• Pilih barang dengan berat Minimal
–W1=18 Îx1=0, batas bawah fungsi
–W2=15 Î x2=2/3, hasil perhit. fungsi pembatas
–W3=10 Î x3=1, batas atas fungsi
• Hitung Wi/Pi
– P1/W1=25/18 Î karena terkecil, makax1=0, batas bawah fungsi – P2/W2=24/15 Î karena terbesar, makax2=1, batas atas fungsi – P3/W3=15/10 Î di hit dengan F pembatasx3=1/2
0
,
0
,
1
0
≤
X
i≤
P
i>
W
i>
F pembatasMetode
Greedy
• Buat TabelSolusi ke (X1,X2,X3) ΣWiXi ΣPiXi Profit
Pi max (1 2/15 0) 20 28 2
Pi max (1,2/15,0) 20 28.2
Wi min (1,2/3,1) 20 31
Algortima
Greedy
• Sorting Descendingthd Pi/Wi –P1/W1=25/18 =1.39 Î urutan 3
–P2/W2=24/15 =1.60 Î urutan 1 P3/W3 15/10 1 50Î urutan 2
–P3/W3=15/10 =1.50 Î urutan 2
–Shg di peroleh urutan terhadap P dan W sbb:
•W1,W2,W3 Æ 15,10,18
•P1,P2,P3 Æ 24,15,25
Running
Algorithm
• Di Inputkan ke algo Knapsak Greedy
X(1:n)Å0 IsiÅ20 Mulai iterasi i=1
W(i)>isi ? Î15>20, tidak, maka (1)Å1 brg dpt dim at sel r hn a dari W(1) 15 x(1)Å1, brg dpt dimuat seluruhnya dari W(1)=15 isi=20‐15, kapasitas ransel berkuran mjd 5 i=2
W(2)>isi ? Î5>10, ya, maka
x(2)Å5/10=1/2, brg dpt dimuat sebanyak ½ bagian saja dari W(2)=10 isi=5‐5, kapasitas ransel habis
i=3, X(3)=0, isi=0, selesai, karena isi=0
• Menghitung Profit