COIN CHANGE PROBLEM
UANG LOGAM
Peca Pecaha han n uan uang g log logam am Indo Indone nesi sia a ± ± ± ± ± ±
Kemba Kembalia lian n seni senila laii 750 750 bisa bisa dida didapa patt dari dari : ± ± ± ±
25 50 100 200 500 1000
1 keping keping 500, 500, 2 kepi keping ng 100 100,, 1 keping keping 50 7 kepi keping ng 100, 100, 1 kepi keping ng 50 5 kepi keping ng 100, 100, 3 kepi keping ng 50 dan masih masih banya banyak k lagi lagi komb kombinas inasii lainn lainnya ya
Baga Bagaima imana na cara carany nya a membe memberi rika kan n uan uang g kemba kembali lian an 835 835? ?
VARIASI COIN CHANGE PROBLEM
Misal Misalkan kan di seb sebua uah h nega negara ra han hanya ya ada ada peca pecaha han n uang logam C1, C2 dan C3. Maka Maka terd terdap apat at 3 varia variasi si Coin Coin Chang Change e Probl Problem em : 1. Apakah kembalian X bisa dibentuk dari dari pecahanpecahanpecahan tersebut? 2. Ada berapa berapa koin koin minimal minimal untuk untuk membentu membentuk k X? 3. Ada berapa kombinasi kombinasi cara untuk membentu membentuk k nilai X? [buku utama, bab 7.3]
CONTOH KASUS
Di sebu sebuah ah nega negara ra hany hanya a ter terda dapa patt uang uang loga logam m bernilai 3, 5 dan 12. 1. Apakah Apakah kembal kembalian ian 23 bisa bisa diben dibentuk tuk dari dari pecah pecahananpecahan tersebut? 2. Ada bera berapa pa koin minima minimall untuk untuk memben membentu tuk k nilai nilai kembalian 23? 3. Ada berap berapa a kombina kombinasi si cara cara untu untuk k membent membentuk uk nilai 23?
KASUS 1
Model ma matemat matika : ± f(3 f(3) = tru true ± f(5 f(5) = tru true ± f(12 f(12)) = true true ± f(x) f(x) = fals false e untu untuk k x <0 ± f(n) f(n) = f(n-3) f(n-3) OR f(n-5) f(n-5) OR f(n-12 f(n-12))
Jika kita kita ingin ingin tah tahu u apa apakah kah X bisa bisa dibe dibent ntuk, uk, kita kita perlu tahu apakah X-3 atau X-5 atau X-12 bisa dibentuk
PSEUDOCODE KASUS 1 1 iNilaiCari=23
13 for n=1 to iMaxCari do
2 iMaxCari=25
14
3 iJumKoin=3
15
4 koin[1]=3
16
5 koin[2]=5
17
6 koin[3]=12
18
7 for i=1 to iMaxCari do
19
8
20
C[i]=´X´
9 end for
for j=1 to iJumKoin do if (n-koin[j])>=1 then if C[n-koin[j]]=´B´ C[n-koin[j]]= ´B´ then C[n]=´B´ end if end if end for
21 end for
10 for j=1 to iJumKoin do
22 if C[iNilaiCari]=´B´ then
11
23
C[koin[j]]=´B´
12 end for
bBisaDicari=true
24 else 25
bBisaDicari=false
26 end if
[buku utama, pseudocode 7.4a]
HASIL KASUS 1
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
X
X
B
X
B
B
X
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
Kolom Kolom 23 beri berisi si tanda tanda ³B´, ³B´, berart berartii nilai nilai uang uang kembal kembalian ian 23 bisa dibentuk dari koin-koin 3, 5 dan 12
KASUS 2
Model ma matemat matika : ± f(23) f(23) = min min { f(20) f(20),, f(18), f(18), f(11) f(11) } + 1 ± f(n) = min { f(n-3), f(n-3), f(n-5) f(n-5),, f(n-12) f(n-12) } + 1
Jumla Jumlah h mini minimal mal koin koin unt untuk uk membe membent ntuk uk nil nilai ai X didapat didapat dari 1 ditambah jumlah koin minimal untuk membentuk nilai nilai X-3 atau X-5 atau X-12 (diambil yang lebih kecil)
PSEUDOCODE KASUS 2 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
iNilaiCari=23 iMaxCari=25 iJumKoin=3 koin[1]=3 koin[2]=5 koin[3]=12 for i=1 to iMaxCari do C[i]=0 end for for j=1 to iJumKoin do C[koin[j]]=1 end for for n=1 to iMaxCari do for j=1 to iJumKoin do if ((n-koin[j])>=1) AND (C[n-koin[j]]>0) then if (C[n]=0) OR (C[n]>(1+C[n-koin (C[n]>(1+C[n-koin[j]])) [j]])) then C[n]=1+C[n-koin[j]] end if end if end for end for if C[iNilaiCari]>0 then bBisaDicari=true iJumKoinMinimal=C[iNilaiCari] else bBisaDicari=false end if
[buku utama, pseudocode 7.5a]
HASIL KASUS 2
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
0
0
1
0
1
2
0
2
3
2
3
1
3
4
2
4
2
3
5
3
4
3
4
2
4
Kolom Kolom 23 beri berisi si angka angka 4, bera berarti rti nila nilaii uang uang kemb kembali alian an 23 bisa dibentuk dari koin-koin 3, 5 dan 12 dengan jumlah koin minimal sebanyak 4 keping uang logam
KASUS 3
Model ma matemat matika : ± f(23) f(23) = f(20) f(20) + f(18 f(18)) + f(11) f(11) ± f(n) f(n) = f(n-3 f(n-3)) + f(n-5) f(n-5) + f(nf(n-12) 12)
Bany Banyakn akny ya kombina kombinasi si untu untuk k memben membentu tuk k nilai nilai X adalah jumlah dari kombinasi yang dapat membentuk nilai nilai X-3, X-3, X-5 dan X-12
PSEUDOCODE KASUS 3 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
iNilaiCari=23 iMaxCari=25 iJumKoin=3 koin[1]=3 koin[2]=5 koin[3]=12 for i=1 to iMaxCari do C[i]= 0 end for for j=1 to iJumKoin do C[koin[j]]=1 end for for n=1 to iMaxCari do for j=1 to iJumKoin do if (n-koin[j])>=1 then C[n]=C[n]+C[n-koin[j]] end if end for end for if C[iNilaiCari]>0 then bBisaDicari=true iJumKemungkinan=C[iNilaiCari] else bBisaDicari=false end if
[buku utama, pseudocode 7.6]
HASIL KASUS 3
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
0
0
1
0
1
1
0
2
1
1
3
2
3
4
4
6
7
8
10
13
15
18
24
27
34
Kolom Kolom 23 beri berisi si angka angka 24, 24, berar berarti ti nila nilaii uang uang kembal kembalia ian n 23 bisa dibentuk dari koin-koin 3, 5 dan 12 dengan total kemungkinan kombinasi sebanyak 24 kombinasi