Anda di halaman 1dari 7

Tugas Personal ke-2

Nama : Fajrianto Manungki


Nim : 2440127016
(Minggu 7 / Sesi 11)

1. [Knapsack Problem] Berikut ini merupakan permasalahan Knapsack tentukan kombinasi


barang yang dapat diambil yang mampu memberikan keuntungan maksimum dengan
menggunakan konsep metode Dynamic Programming apabila diketahui barang terbatas dan
tak dapat dipecah dimana kapasitas maksimum dari tas adalah 27 Kg.

Barang Nilai (Rp) Berat (Kg)


A 15 Juta 4
B 28 Juta 3
C 14 Juta 2
D 40 Juta 5
E 50 Juta 10
F 30 Juta 5
G 75 Juta 7

2. [Multistage Graph] Carilah jalur terpendek dari node A ke node L pada multistage graph
dibawah menggunakan metode dynamic programming (backward)!

COMP6742- Algorithm Design and Analysis


3. [Travelling Salesman Problem] Carilah jalur terpendek dengan metode dynamic
programming, dari kota A mengunjungi kota B, C, dan D dan kembali ke A jika diketahui
jarak antar kota seperti table berikut

Dari kota Ke kota Jarak (km)


A B 6
A C 2
B A 5
B D 5
C A 4
C B 3
C D 3
D A 4
D C 7

4. [Coin Change Problem] Dengan menggunakan metode dynamic programming carilah


kombinasi jumlah uang pecahan minimum yang dapat dibentuk dari nominal uang 284
dengan menggunakan pecahan uang dengan nominal 1, 5, 10, 25, 50 dan 100!

COMP6742- Algorithm Design and Analysis


Jawab :

1. Step 1 : Membuat tabel dynamic programing untuk menentukan keuntungan maksimum dengan formula :

i/w 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
A 0 0 0 0 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15
B 0 0 0 28 28 28 28 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33
C 0 0 14 28 28 42 42 42 42 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57 57
D 0 0 14 20 28 42 42 54 68 68 82 82 82 82 97 97 97 97 97 97 97 97 97 97 97 97 97 97
E 0 0 14 20 28 42 42 54 68 68 82 82 82 82 97 97 97 104 118 118 132 132 133 133 147 147 147 147
F 0 0 14 20 28 42 42 54 68 68 82 82 82 82 97 97 97 104 118 127 132 132 133 133 147 147 147 147
G 0 0 14 20 28 42 42 54 68 89 103 103 117 117 129 143 143 143 144 158 173 173 187 187 188 188 202 207

Step 2. Menentukan keuntungan maksimum


Dari tabel diatas diketahui bahwa keuntungan maksimum yang bisa di dapatkan dengan kapasitas tas yang terbatas yaitu sebanyak 27 Kg adalah 207 Juta,
dan kombinasi barang yang akan diambil dengan keuntungan sebanyak itu adalah B – C – D – E – F – G

2. Menggunakan metode backward :


Dengan formula :
cost(i,j) = min{c(j,k) + cost(i+1,k)}

COMP6742- Algorithm Design and Analysis


 cost (1,A) = 0  cost (3,G) = min {23 + 17 | 27 + 19 | 26 + 20} = 40
 cost (2,B) = 17  cost (3,H) = min {21 + 17 | 18 + 25 | 20 + 24} = 38
 cost (2,C) = 19  cost (4,I) = min { 39 + 13 | 40 + 12 } = 52
 cost (2,D) = 18  cost (4,J) = min { 39 + 17 | 40 + 16 | 38 + 14} = 52
 cost (2,E) = 20  cost (4,K) = min { 38 + 15 } = 53
 cost (3,F) = min {22 + 17 | 28 + 19} = 39  Cost (5,L) = min {52 + 9 | | 52 + 8 | 53 + 7} = 60

Sehingga ditemukan 2 jalur yag memiliki nilai terendah yang sama yaitu :

A – B – H – K – L dan A – B – H – J - L

COMP6742- Algorithm Design and Analysis


COMP6742- Algorithm Design and Analysis
3. Menggunakan Metode Travelling Salesman Problem

Step 1 : Membentuk matriks 2 arah berdasarkan informasi dari tabel :

P/B A B C D
A ∞ 6 2 ∞
B 5 ∞ ∞ 5
C 4 3 ∞ 3
D 4 ∞ 7 ∞

Step 2 : Mencari jalur terpendek berdasarkan arah yang dibuat dengan formula :

p(i,L) = min[c(j,i) + p(j,L–{j})]


A–B:
p (B, Ø) = c (A, B) = 6 A–B–D–C
A–C: p (C, {B,D}) = c ({B,D}, C) + c ({B,D}, Ø) = 7 + 11 = 18
p (C, Ø) = c (A, C) = 2 A–C–B–D
p (D,{C,B}) = c ({C,B},D) + c ({C,B}, Ø) = 5 + 5 = 10
A–B–D:
p (D, {B}) = c (B , D) + c (B, Ø) = 6 + 5 = 11 A–B–D–C–A
A–C–B: p (A, {D,C) = c ({D,C},A) + c ({D,C}, Ø) = 18 + 4 = 22
p ( B , {C}) = c (C , B) + c (C, Ø) = 3 + 2 = 5 A–C–B–D–A
A–C–D: p (A, {B,D) = c ({B,D},A) + c ({B,D}, Ø) = 10 + 4 = 14
p (D , {C}) = c (C, D) + c (C , Ø) = 3 + 2 = 5

Maka jalur terpendek yang bisa ditempuh adalah A – C – B – D – A = 14

COMP6742- Algorithm Design and Analysis


4. Menggunakan bahasa pemogramnan C++

#include<stdio.h>

int count( int S[], int m, int n )


{
if (n == 0)
return 1;
if (n < 0)
return 0;
if (m <=0 && n >= 1)
return 0;
return count( S, m - 1, n ) + count( S, m, n-S[m-1] );
}

int main()
{
int i, j;
int arr[] = {1,5,10,25,50,100};
int m = sizeof(arr)/sizeof(arr[0]);
printf("%d ", count(arr, m, 284));
getchar();
return 0;
}
Maka diketahui banyaknya kombinasi yang mungkin adalah 9442

COMP6742- Algorithm Design and Analysis

Anda mungkin juga menyukai