GREEDY ALGORITHMS
Algoritma Optimisasi :
Sebarisan step.
Tiap step ada beberapa pilihan ( yang dipilih selalu yang optimal).
Algoritma Greedy :
Ambil yang terbaik saat itu ( locally optimum ), dengan harapan akan
memperoleh solusi yang optimum ( globally optimum ).
Algoritma ini jauh lebih sederhana
CONTOH :
a) Travelling Salesman Problem (TSP)
14 12
7 10
9
5 6 8
13
11
7 10
9 2
5
6 37
1
3
4 5
b) The Nearest-Neighbor-First Algorithm
TITIK AWAL
14 12
7 10
9
5 6 8
13
11
TAHAP-TAHAPNYA :
40
GREEDY-ACTIVITY-SELECTOR(GAS)(s, f)
n length(s)
A{1} [ s1 , f1 ) Ket: A = Kumpulan aktifitas yg
j1 dilakukan
for i 2 to n do
if si fj
then A A {i}
ji
Return A
CONTOH :
Aktivitas ke 1, start pukul 1 dan selesai pukul 4
Aktivitas ke 2, start pukul 3 dan selesai pukul 5
Aktivitas ke 3, start pukul 0 dan selesai pukul 6
Aktivitas ke 4, start pukul 5 dan selesai pukul 7
Aktivitas ke 5, start pukul 3 dan selesai pukul 8
Aktivitas ke 6, start pukul 5 dan selesai pukul 9
Aktivitas ke 7, start pukul 6 dan selesai pukul 10
Aktivitas ke 8, start pukul 8 dan selesai pukul 11
Aktivitas ke 9, start pukul 8 dan selesai pukul 12
Aktivitas ke 10, start pukul 2 dan selesai pukul 13
Aktivitas ke 11, start pukul 12 dan selesai pukul 4
GAMBARNYA :
1
Hasil dari GAS :
A: k
1
k
A {k} {1} juga suatu pilihan yang optimal.
A: 1 m
k2 1
1 k
k
Ulangi dengan argument yang sama.
Jadi m dapat diganti dengan 2 ( yaitu aktivitas yang mempunyai
finish time paling awal diantara semua aktivitas yang tidak
overlap dengan 1 ), .. dst.
HUFFMAN CODES
FIXED-LENGTH CODE
A 000000
B 000001
C 000011
.
.
.
VARIABEL-LENGTH-CODE
A 01
B 101
C 011
A B B A
Cara A A Unik.
ini tidak
Symbol yang sering keluar diberi code dengan # bit sedikit, dan
sebaliknya.
PREFIX CODE
Kode dari suatu huruf / symbol tak boleh sebagai prefik dari kode
huruf/symbol lainnya.
A 01
B 101
C 011
Catatan : FIXED LINK CODE pasti PREFIX CODE
FIXED LENGTH CODE
0 1
0 1 0 0
0
0 1 0 1 0 1
0 1 0 1 0
a b c d 0e f
A 0
a a c
0 KETA : a = 000; b = 100 ; c = 010 ; d=110; e = 001 ; f = 101
A a
0 0 A
PREFIX CODE0
Semua node adalah leaf.
0 1
1
a 0
0 1 0 1
1 0 d
c b 0 1
0
f e
X a b c d e f
w(x) 45 13 12 16 9 5
Sum of weighted path lengths :
Fixed code :
45*3 + 13*3+12*3+16*3+9*3+5*3 = 300
Prefix code :
45*1+13*3+12*3+16*3+9*4+5*4 = 224
SOAL:
1. Permutasikan a, b, c, d, e, f sebagai leaf dari
kemungkinan-kemungkinan prefix code yang bisa dibuat
dan hitung Sum of weighted path lengths nya , apakah
ada yang < 224.
2. Carilah cost optimum dari perkalian 8 matriks di bawah ini dan
bagaimana parenthesizationnya?.
A1 A2 A3 A4 A5 A6 A7 A8
(30x45) (45x15) (15x25) (25x10) (10x20) (20x55) (55x35) (35x24)
3. Carilah LCS dari X= ABBADCADC dan Y = BCDABABCC.
PREFIX CODE : Pengkodean suatu set of symbols, dimana kode setiap
symbol bukan mrpkan prefix dari kode symbol yang lain.
CONTOH :
Misal ada tape dengan panjang L dan program dengan
length l1, l2, l3, , ln ( n file ). Jika ingin menyimpan file-file
tersebut, semua solusi adalah feasible bila : = .
Misal : Ingin meminimumkan The average retrieval time of
the program .
Keterangan :
Misal program disimpan dalam urutan l1, l2, l3, l4, l5.
Retrieval time untuk program ke-5 = c = untuk
suatu konstanta c.
Jika program disimpan dalam urutan : l1, l2, l3, , ln ,
maka AVERAGE OF RETRIEVAL TIMENYA
= ( = + = + = + + = )
= = =
TEOREMA:
BUKTI:
= =
= ([ ] + [ + ] + [ + + ] + + [ + +. . + ])
= ( + ( ) + ( ) + + + )
Nilai dari ( + ( ) + ( ) + + + )
minimal jika : l1 l2 l3 ln,
Untuk urutan li tidak/bukan l1 l2 l3 ln, maka nilai
dari ( + ( ) + ( ) + + + ) lebih
besar.
=============================================
CONTOH LAIN:
Misal dimiliki m tape dan misalkan pula n program : P1, P2, ,
Pn disimpan sebagai berikut :
+ (()+ + ()+ + + ))
Jadi :
( + + + ) mempunyai koefisien ( koefisien terbesar)
()
(+ + + + + + + ) mempunyai koefisien
KESIMPULAN:
Tape 1 : 2 5
Tape 2 : 4 7
a.r.t = ([ + ] + [ + ]) = =
Tape 1 : 2 7
Tape 2 : 4 5
a.r.t = ([ + ] + [ + ]) = =
Tape 1 : 2 5 8
Tape 2 : 4 7
a.r.t = ([ + + ] + [ + ]) =
Tape 1 : 2 7 8
Tape 2 : 4 5
a.r.t = ([ + + ] + [ + ]) =
Tape 1 : 4 7 8
Tape 2 : 2 5
a.r.t = ([ + + ] + [ + ]) =
Tape 1 : 5 7 8
Tape 2 : 2 4
a.r.t = ([ + + ] + [ + ]) =
Tape 1 : 2 4 5
Tape 2 : 7 8
a.r.t = ([ + + ] + [ + ]) =
Tape 1 : 2 4 7
Tape 2 : 5 8
a.r.t = ([ + + ] + [ + ]) =
Tape 1 : 4 5 7
Tape 2 : 2 8
a.r.t = ([ + + ] + [ + ]) =
Tape 1 : 2 5 8
Tape 2 : 4 7
a.r.t = ([ + + ] + [ + ]) =
Tape 1 : 2 5 7
Tape 2 : 4 8
a.r.t = ([ + + ] + [ + ]) =
Tape 1 : 2 4 8
Tape 2 : 5 7
a.r.t = ([ + + ] + [ + ]) =
KESIMPULAN:
Bila jumlah 2 elemen di depannya elemen ke 3 , maka a.r.t
optimal.
KNAPSACK
Diberikan knapsack dengan kapasitas tertentu. Isi knapsack
tersebut dengan item-item, sedemikian sehingga isinya mempunyai
nilai MAKSIMAL.
INPUT : Weight : w1; w2; ; wn
Profits : p1; p2 ; ; pn
Kapasitas = M
xi = fraction (sebagian) dari item ke i dimasukkan ke knapsack
Objective function : Maximize = ( memaksimumkan keunt.
Constrains : = ;
CONTOH:
Greedy 1:
repeat
select item with largest profit.
until weight = M
p : 10 6 4 3
w : 10 3 1 2
M = 13
Syarat : = =
Maka x = ( 1 1 0 0)
Sehingga : = = + + + =
Greedy 2:
repeat
select item with largest .
until weight = M
p : 10 6 4 3
w : 10 3 1 2
:1 2 4 1.5
M = 13
Syarat : = =
Maka x = ( 7/10 1 1 1)
Sehingga : = = / + + + =
MERGING FILE/ARRAYS
Misal diberikan n file yang terurut : q1 ; q2 ; q3 ; ; qn dan akan
dimerge menjadi 1 file.
Anggap bahwa dalam satu waktu hanya 2 file yang dapat di merge
dan cost dari merge tersebut proporsional dengan length dari 2 file
tersebut.
Maksudnya :
File 1 ( q1 ) ukuran X
File 2 ( q2 ) ukuran Y
File 1 dan file 2 di merge, costnya = X + Y.
Pola merging bisa dinyatakan dalam suatu binary tree, misal : 4 file
dengan ukuran: 10, 20, 30 dan 50, di merge sbb:
Contoh di atas :
CONTOH:
= = 2*10+2*20+3*35+3*45+2*50 = 20+40+105+135+100=400
Algoritma M memberikan :