Anda di halaman 1dari 20

BAB 4

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 tidak menjamin solusi terakhir minimum


ACTIVITY SELECTION PROBLEM
Diberikan n aktivitas yang diusulkan

Setiap saat hanya ada 1 aktivitas yang dilakukan.


Setiap aktivitas ke i : [ si , fi ), si = start time aktivitas ke i, fi = finish
time aktivitas ke i.
Aktivitas terurut menurut fi : .
Aktivitas ke i dan ke j kompatibel bila : [ si , fi ) dan [ sj , fj ) tidak
overlap, yaitu : (jika aktivitas ke i mendahului aktivitas
ke j ) atau (jika aktivitas ke j mendahului aktivitas ke i ),
Problemnya :

PILIH SET OF MUTUALLY COMPATIBLE ACTIVITIES

DGN SIZE MAKSIMUM

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 :

Teorema : Algoritma GAS ( Greedy-Activity-Selector ) adalah Optimal.


Bukti :
Misal 1 : adalah aktivitas dengan finish time terkecil / terawal.
Klaim : Ada pilihan yang optimal yang mengandung aktivitas 1.
Misal A suatu pilihan optimal yang tidak mengandung 1

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

.
.
.

Panjng bit = x banyak kode = 2x ( x log (# kode ))

VARIABEL-LENGTH-CODE
A 01
B 101
C 011





A B B A
Cara A A Unik.
ini tidak

Kode dari suatu symbol ( di sini A ) merupakan prefik dari symbol


yang lain ( di sini C ).

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

KET : a = 0; b = 101 ; c = 001; d=111; e = 1011 ; f = 0011

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:

= = minimal, jika l1 l2 l3 ln.

BUKTI:

= = minimal jika = = minimal.


= =

= ([ ] + [ + ] + [ + + ] + + [ + +. . + ])
= ( + ( ) + ( ) + + + )
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 :

Tape 1: P1 Pm+1 P2m+1 P(k-1)m+1

Tape 2: P2 Pm+2 P2m+2 P(k-1)m+2

Tape 3: P3 Pm+3 P2m+3 P(k-1)m+3


.
Tape m: Pm P2m P3m Pkm

Anggap n = km, k = bil. Bulat positif.


Length dari program Pi = li
Hitung Average Retrieval Time(ART) nya
JAWAB:

ARTnya =
= = = +()


=
= =( + + + + + + +() )


=
=( + ( )+ + ( )+ + + +() )


= (( + + + ) + ( )(+ + + + + +

+ ) + ( )(+ + + + + ) +

+ (()+ + ()+ + + ))

Jadi :

( + + + ) mempunyai koefisien ( koefisien terbesar)

()
(+ + + + + + + ) mempunyai koefisien

(koefisien terbesar kedua)


()
(+ + + + + + + ) mempunyai koefisien

(koefisien terbesar ketiga)



(()+ + ()+ + + ) mempunyai koefisien terkecil.

KESIMPULAN:

ART akan minimal jika :

m program pertama: ; ; ; adalah yang terkecil


m program kedua: + ; + ; ; adalah yang terkecil
kedua
. dan seterusnya

CONTOH 1: n=4 ; m=2 ; l = (2, 4, 5, 7) Kasus : n = km

Tape 1 : 2 5
Tape 2 : 4 7

a.r.t = ([ + ] + [ + ]) = =

Tape 1 : 2 7
Tape 2 : 4 5

a.r.t = ([ + ] + [ + ]) = =

CONTOH 2: n=5 ; m=2 ; l = (2, 4, 5, 7, 8) Kasus : n km

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:

Total cost = (10+20) + (30+50) + (30+80) = 220


Algoritma M :
Repeat
merge 2 smallest file
Until merging is complete

Contoh di atas :

Total Cost = (10+20) + (30+30) + (60+50) = 200


Total cost = = = 3*10+3*20+2*30+1*50 = 200
di = depth of file-i
qi = size of file-i

CONTOH:
= = 2*10+2*20+3*35+3*45+2*50 = 20+40+105+135+100=400

Algoritma M memberikan :

= = 3*10+3*20+2*35+2*45+2*50 = 30 + 60+ 70+90+100 =


350

Teorema : Algoritma M memberikan solusi optimal, dkl algoritma


M membentuk binary tree dengan minimal total cost ( = )
minimal.

Anda mungkin juga menyukai