Single Source Shortest Path Dijkstra - UDiNus Repository

(1)

Single source shortest path

dijkstra

Single source shortest path

dijkstra


(2)

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

• 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


(3)

Terminologi

• Dengan demikian kita akan peroleh N=SC

• Pada saat algoritma berhenti, S berisi seluruh

node dari G dan masalah terselesaikan.

• Tiap langkah yang terpilih dalam C merupakan

jarak terkecil pada source dan di tambahkan ke S

• Dengan demikian kita akan peroleh N=SC

• Pada saat algoritma berhenti, S berisi seluruh

node dari G dan masalah terselesaikan.

• Tiap langkah yang terpilih dalam C merupakan

jarak terkecil pada source dan di tambahkan ke S


(4)

Abstraksi

• Diberikan G={V,E}, directed graph dengan

fungsi l:ER+

• Problem mencari jalur terpendek dari S ke T

0.5

5

• Diberikan G={V,E}, directed graph dengan

fungsi l:ER+

• Problem mencari jalur terpendek dari S ke T

1.1

2

3 3.1

7

S

source


(5)

Abstraksi

• Berapa path yang mungkin dari graph G tadi?

• Shortest path = 7.2

8.6

• Berapa path yang mungkin dari graph G tadi?

• Shortest path = 7.2

8.6

7.2

8.1 9


(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, misal :

• Jika terdapat k diamond, berapa vertek-nya

• Berapa Path??

• Dapatkah kita mencari SP dengan cara seperti

sebelumnya ??? Kenapa ??

• Sebab dalam praktek, mungkin terdapat G

yang besar dengan path yang tidak di ketahui, misal :

• Jika terdapat k diamond, berapa vertek-nya

• Berapa Path??

S T

3k+1 2k diantara S dan T


(7)

Abstraksi

• Sehingga jika terdapat n vertek, maka terdapat

2 n/3 path

• Lalu bagaimana kita mencari SP pada problem

seperti ini??

• Untuk melakukannya kita harus tahu property

dari SP

• Sehingga jika terdapat n vertek, maka terdapat

2 n/3 path

• Lalu bagaimana kita mencari SP pada problem

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


(8)

Property SP

(single short shortest path)

• Di berikan path dalam G, dari s ke 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

SP dalam setiap vertek dalam GSSSP

s x t

• Di berikan path dalam G, dari s ke 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

SP dalam setiap vertek dalam GSSSP


(9)

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

dalam G, karena l adalah bernilai positive

• Dinotasikan distance/jarak pada

d[v1]=l1,d[v2]<=l2, dst

• 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

dalam G, karena l adalah bernilai positive

• Dinotasikan distance/jarak pada

d[v1]=l1,d[v2]<=l2, dst

s

l3 l2 l1

v1

v2


(10)

IDE SSSP

• D[v1]=0.7, karena hanya terdapat 1 path

• D[v2]=1.11.2, ada path lain (s-v1-v2) tp tdk update • D[v3]=2.3 1,ada path lain(s-v1-v3)

– Path d[v2] dan d[v3] mengalami update utk mendapatkan

shortest path

• D[v4]=1.1

• D[v5]=1.2

s

2.3 1.1 0.7

v1

v2

v3

v4

v5 0.4

0.5 0.5

0.3

• D[v1]=0.7, karena hanya terdapat 1 path

• D[v2]=1.11.2, ada path lain (s-v1-v2) tp tdk update • D[v3]=2.3 1,ada path lain(s-v1-v3)

– Path d[v2] dan d[v3] mengalami update utk mendapatkan

shortest path

• D[v4]=1.1

• D[v5]=1.2


(11)

Algoritma

procedure Dijkstra;

{ 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 }

procedure Dijkstra;

{ 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


(12)

SSSP Manual

• Misalkan source 1, maka

1 2 5

50

45

10

4

1 2 5

3

50

35

15 20

3

6

10 10 20

15


(13)

SSSP 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

– 1-2

• 1-2 =50

• 1-3-4-2 =45, terpendek

• 1-5-4-2 =95

• 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

– 1-2

• 1-2 =50

• 1-3-4-2 =45, terpendek


(14)

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-4

• 1-3-4 =25, terpendek

• 1-2-5-4 =90

• 1-2-3-4 =80

• 1-5-4 =75

– 1-3

• 1-3 =10

• 1-2-3 =65, terpendek

• 1-2-5-4-2-3 =125

• 1-5-4-2-3 =110

– 1-4

• 1-3-4 =25, terpendek

• 1-2-5-4 =90

• 1-2-3-4 =80


(15)

SSSP 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

– 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


(16)

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


(17)

Problem

• Di ketahui G=(V,E), directed and weighted.

• Hitung panjang (cost) shortest path dari node 1

ke setiap node dalam G.

• source node 1 ke 3. Ada beberapa paths (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 . • Di ketahui G=(V,E), directed and weighted.

• Hitung panjang (cost) shortest path dari node 1

ke setiap node dalam G.

• source node 1 ke 3. Ada beberapa paths (1 > 4

-> 3, 1 --> 2 --> 3, dst.), tetapi shortest dari path tsb adalah 1 -> 4 -> 2 ->3 dg panjang 9.


(18)

Algoritma Semi-Greedy

• Kompleksitas O(n*lg(lg(n))) hingga O(n2).

• Ambil cost dari shortest path ke seluruh node

dan tandai dengan infinity (). Dan..

• Tandai panjang (cost) shortest path pada

source dengan 0.

• Kompleksitas O(n*lg(lg(n))) hingga O(n2).

• Ambil cost dari shortest path ke seluruh node

dan tandai dengan infinity (). Dan..

• Tandai panjang (cost) shortest path pada


(19)

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

– 20+10=10

– 40+5=5 (node terpilih)

• 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

– 20+10=10


(20)

• Dari 4 kita akan update cost node 2, 3 dan 5,

yaitu:

• 2 5+2=7 (node terpilih)

• 35+9=14

• 55+2=7

Algoritma (lanj.)

• Dari 4 kita akan update cost node 2, 3 dan 5,

yaitu:

• 2 5+2=7 (node terpilih)

• 35+9=14


(21)

Algoritma (lanj.)

• Dari 2 kita akan update cost node 3 :

• 2 5+2=7 (node terpilih)

• 35+9=14

• 55+2=7

• Dari 2 kita akan update cost node 3 :

• 2 5+2=7 (node terpilih)

• 35+9=14


(22)

Algoritma (lanj.)

• Algoritma berhenti karena semua node sudah

di kunjungi dan terupdate optimal cost


(23)

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 selected

Current lowest cost

B C D E F G H

F 40 F 70 F 20 A 90 A 30 B 3 4 5 6 7 8 A E G D H 50 30 90 20 20 80 40 10 10

20 F 20A 40F 70F 30B 90A

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

Ke B dan G tapi cost update tidak lebih baik Dari yang sekarang


(24)

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 wi dan vi. Ransel tersebut bisa memuat objek maksimal

seberat W. Masalah yang harus dipecahkan adalah bagaimana 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 dapat disusun sebagai berikut.

• 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 wi dan vi. Ransel tersebut bisa memuat objek maksimal

seberat W. Masalah yang harus dipecahkan adalah bagaimana 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 dapat disusun sebagai berikut.


(25)

Algoritma

• n adalah jumlah objek wi adalah variabel yang

menyatakan berat dari objek i, vi adalah

variabel yang menyatakan nilai dari objek i, xi

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.

• n adalah jumlah objek wi adalah variabel yang

menyatakan berat dari objek i, vi adalah

variabel yang menyatakan nilai dari objek i, xi

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.


(26)

Secara Matematis

• Fungsi Utama/Tujuan/Objektif

– Fungsi yg mjd penyelesaian masalah dengan

mendapatkan solusi optimal, yaitu mendapatkan nilai profit yg maksimal utk sejumlah obyek yang akan di muat dalam ransel yg sesuai kapasitasnya

• Fungsi Pembatas/Subyektif

– Bertujuan memberikan batas maksimal setiap

obyek untuk di muatkan dalam ransel sesuai kapasitasnya

• Fungsi Utama/Tujuan/Objektif

– Fungsi yg mjd penyelesaian masalah dengan

mendapatkan solusi optimal, yaitu mendapatkan nilai profit yg maksimal utk sejumlah obyek yang akan di muat dalam ransel yg sesuai kapasitasnya

• Fungsi Pembatas/Subyektif

– Bertujuan memberikan batas maksimal setiap

obyek untuk di muatkan dalam ransel sesuai kapasitasnya


(27)

rumus

i

n

i

i

X

P

1

Fungsi Tujuan

i

n

i

i

X

P

1

M

X

W

i

n

i

1

Fungsi Pembatas

0

,

0

,

1


(28)

Solusi Greedy

• Pilih obyek dengan nilai Pi maksimal

• Pilih obyek dengan bobot Wi minimal

• Pilih obyek dengan perbandingan Pi/Wi

terbesar

• Pilih obyek dengan nilai Pi maksimal

• Pilih obyek dengan bobot Wi minimal

• Pilih obyek dengan perbandingan Pi/Wi


(29)

Algoritma 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]; }

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;

} }

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]; }

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;

} }


(30)

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

– 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


(31)

Contoh Soal

• Diketahui

– n=3 dengan Wi(18,15,10) dan Pi(25,24,15) dan

M=20

• Ditanyakan

– Tentukan berat tiap-tiap barang yang dpt di muat

dalam ransel dengan kapasitas M ?

• Diketahui

– n=3 dengan Wi(18,15,10) dan Pi(25,24,15) dan

M=20

• Ditanyakan

– Tentukan berat tiap-tiap barang yang dpt di muat


(32)

Secara Matematika

i

i

i

X

P

3

1

i

i

i

X

P

3

1

20

3

1

i

i

X

W

0

,

0

,

1

0

X

i

P

i

W

i

Batas atas Batas bawah


(33)

Step 1

• Tentukan solusi feasibel yaitu 2 X n dari batas

bawah dan atas, lalu hitung sesuai kapasitas M<=20, untuk masing masing bobotnya

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=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


(34)

Step 2

• Buat tabel Untuk solusi fisibel

Solusi ke (X1,X2,X3) WiXi PiXi

Profit

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


(35)

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, maka x1=0, batas bawah fungsi – P2/W2=24/15 karena terbesar, maka x2=1, batas atas fungsi

– P3/W3=15/10 di hit dengan F pembatas x3=1/2

• 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, maka x1=0, batas bawah fungsi – P2/W2=24/15 karena terbesar, maka x2=1, batas atas fungsi

– P3/W3=15/10 di hit dengan F pembatas x3=1/2

0

,

0

,

1

0

X

i

P

i

W

i


(36)

Metode Greedy

• Buat Tabel

Solusi 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


(37)

Algortima Greedy

• Sorting Descending thd 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

– Shg di peroleh urutan terhadap P dan W sbb:

• W1,W2,W3  15,10,18

• P1,P2,P3  24,15,25

• Sorting Descending thd 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

– Shg di peroleh urutan terhadap P dan W sbb:

• W1,W2,W3  15,10,18


(38)

Running Algorithm

• Di Inputkan ke algo Knapsak Greedy

X(1:n)0 Isi20 Mulai iterasi i=1

W(i)>isi ? 15>20, tidak, maka

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

(P1+P2+P3)=(24*1+15*1/2+18*0)=31.5

• Di Inputkan ke algo Knapsak Greedy

X(1:n)0 Isi20 Mulai iterasi i=1

W(i)>isi ? 15>20, tidak, maka

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


(1)

Step 1

Tentukan solusi feasibel yaitu 2 X n dari batas

bawah dan atas, lalu hitung sesuai kapasitas

M<=20, untuk masing masing bobotnya

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=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


(2)

Step 2

Buat tabel Untuk solusi fisibel

Solusi ke

(X1,X2,X3)

WiXi

PiXi

Profit

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


(3)

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, maka

x1=0

,

batas bawah fungsi

P2/W2=24/15

karena terbesar, maka

x2=1

,

batas atas fungsi

P3/W3=15/10

di hit dengan F pembatas

x3=1/2

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, maka

x1=0

,

batas bawah fungsi

P2/W2=24/15

karena terbesar, maka

x2=1

,

batas atas fungsi

P3/W3=15/10

di hit dengan F pembatas

x3=1/2

0

,

0

,

1

0

X

i

P

i

W

i


(4)

Metode Greedy

Buat Tabel

Solusi 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


(5)

Algortima Greedy

Sorting

Descending

thd 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

Shg di peroleh urutan terhadap P dan W sbb:

W1,W2,W3

15,10,18

P1,P2,P3

24,15,25

Sorting

Descending

thd 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

Shg di peroleh urutan terhadap P dan W sbb:

W1,W2,W3

15,10,18

P1,P2,P3

24,15,25


(6)

Running Algorithm

Di Inputkan ke algo Knapsak Greedy

X(1:n)0 Isi20 Mulai iterasi i=1

W(i)>isi ? 15>20, tidak, maka

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

(P1+P2+P3)=(24*1+15*1/2+18*0)=31.5

Di Inputkan ke algo Knapsak Greedy

X(1:n)0 Isi20 Mulai iterasi i=1

W(i)>isi ? 15>20, tidak, maka

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