download

Matakuliah
Tahun
: T0034 / Perancangan & Analisis Algoritma
: 2008
Pertemuan 11
METODE GREEDY (1)
JENIS SOLUSI MASALAH
• Salah satu fungsi algoritma adalah untuk menghitung
penyelesaian problem / masalah
• Sebuah problem bisa :
–
–
–
–
Memiliki satu set solusi tunggal
Memiliki beberapa set solusi yang sama-sama benar
Memiliki beberapa set solusi dengan tingkat kebenaran berbeda
Tidak memiliki set solusi yang ”total” benar, tapi ada beberapa set
solusi yang mendekati benar
– Tidak memiliki set solusi sama sekali
[buku utama, bab 6.1]
Bina Nusantara
TEKNIK PENYELESAIAN MASALAH
• Beberapa teknik yang populer :
–
–
–
–
–
Bina Nusantara
Metode Greedy
Dynamic Programming
Kompresi Data
Backtracking
Branch and Bound
METODE GREEDY
•
Greedy = serakah
•
Algoritma sering melakukan beberapa tahap perhitungan sebelum menemukan
solusi akhir.
Kadang tahap-tahap tersebut menghasilkan sejumlah elemen yang nantinya
akan dipergunakan untuk menyusun solusi akhir.
Metode Greedy akan ”mengabaikan” perhitungan lengkap dalam pencarian
solusi, menggantikannya dengan memakai elemen-elemen tersebut untuk
menghitung solusi dengan lebih cepat.
•
•
•
Sangat berguna jika pencarian solusi 100% memakan waktu terlalu lama.
– Daripada membuang banyak waktu untuk menghitung solusi ”terbaik”, lebih baik
dihemat dengan mencari solusi yang ”cukup baik”.
•
Sayangnya, tidak semua jenis masalah dapat diselesaikan dengan Metode
Greedy
[buku utama, bab 6.2]
Bina Nusantara
UNIVERSAL SOLUSI
• Sebuah problem memiliki :
– Universal solusi
• Yaitu semua kemungkinan solusi baik yang benar dan yang
salah
– Solusi Feasible
• Yaitu semua kemungkinan solusi yang benar, tetapi tingkat
kebenarannya berbeda-beda
– Fungsi objektif
• Yaitu fungsi untuk mengukur solusi mana yang lebih benar (lebih
baik)
– Solusi optimal
• Yaitu solusi yang paling benar (paling baik)
Bina Nusantara
KNAPSACK PROBLEM
• Seorang pencuri memasuki sebuah rumah. Dia membawa
tas yang hanya muat mengangkut 20 kg barang. Di dalam
rumah terdapat barang A, B, C, D, E
Barang A beratnya 7 kg, nilainya $2975
Barang B beratnya 3 kg, nilainya $1230
Barang C beratnya 9 kg, nilainya $3870
Barang D beratnya 2 kg, nilainya $840
Barang E beratnya 5 kg, nilainya $2250
• Barang apa saja yang harus dibawa si pencuri agar
hasilnya maksimal? (tidak boleh melebihi kapasitas tas-nya
yaitu 20 kg)
[buku utama, bab 6.3]
Bina Nusantara
VARIASI KNAPSACK PROBLEM
• Fractional Knapsack Problem
– Barang boleh dibawa sebagian saja (unit dalam pecahan).
• 0/1 Knapsack Problem
– Setiap barang hanya tersedia 1 unit, take it or leave it.
• Bounded Knapsack Problem
– Setiap barang tersedia sebanyak N unit (jumlahnya terbatas).
• Unbounded Knapsack Problem
– Setiap barang tersedia lebih dari 1 unit, jumlahnya tak terbatas.
Bina Nusantara
MENGHITUNG SOLUSI FEASIBLE
• Jika contoh di atas adalah kasus 0/1 Knapsack, solusi feasible-nya:
Barang
Bina Nusantara
Berat
Nilai
Barang
Berat
Nilai
{}
0
0
{A,B,C}
19
8075
{A}
7
2975
{A,B,D}
12
5045
{B}
3
1230
{A,B,E}
15
6455
{C}
9
3870
{A,C,D}
18
7685
{D}
2
840
{A,C,E}
21
9095
{E}
5
2250
{A,D,E}
14
6065
{A,B}
10
4205
{B,C,D}
14
5940
{A,C}
16
6845
{B,C,E}
17
7350
{A,D}
9
3815
{B,D,E}
10
4320
{A,E}
12
5225
{C,D,E}
16
6960
{B,C}
12
5100
{A,B,C,D}
21
8915
{B,D}
5
2070
{A,B,C,E}
24
10325
{B,E}
8
3480
{A,B,D,E}
17
7295
{C,D}
11
4710
{A,C,D,E}
23
9935
{C,E}
14
6120
{B,C,D,E}
19
8190
{D,E}
7
3090
{A,B,C,D,E}
27
11165
[buku utama, tabel 6.1]
PENYELESAIAN
•
0/1 Knapsack Problem
–
–
•
Unbounded Knapsack Problem
–
–
–
–
–
–
•
Tidak dapat diselesaikan dengan Metoda Greedy
Mengapa?
Bisa diselesaikan dengan Metoda Greedy
Hitung value per kg
Ambil value tertinggi
Masukkan barang dengan value tertinggi sebanyak dimungkinkan (perhatikan batas maksimal
berat dan jumlah ketersedian barang).
Jika ada sisa berat, gunakan barang dengan value kedua tertinggi dst
Hitung kompleksitas algoritmanya!
Fractional Unbounded Knapsack Problem
–
–
–
–
–
Bina Nusantara
Bisa diselesaikan dengan Metoda Greedy
Hitung value per kg
Ambil value tertinggi
Masukkan barang dengan value tertinggi sebanyak dimungkinkan (perhatikan batas maksimal
berat dan jumlah ketersedian barang).
Hitung kompleksitas algoritmanya!
UNBOUNDED KNAPSACK PROBLEM (1)
•
Langkah 1 : hitung value per kg
–
–
–
–
–
•
Barang A beratnya 7 kg, nilainya $2975
Barang B beratnya 3 kg, nilainya $1230
Barang C beratnya 9 kg, nilainya $3870
Barang D beratnya 2 kg, nilainya $840
Barang E beratnya 5 kg, nilainya $2250
 value per kg = $425
 value per kg = $410
 value per kg = $430
 value per kg = $420
 value per kg = $450
Langkah 2 : ambil value tertinggi
– Value tertinggi adalah $450 per kg, berarti barang E akan diambil.
•
Langkah 3 : masukkan barang dengan value tertinggi sebanyak dimungkinkan
– Berat maksimal yang dapat dibawa adalah 20 kg, barang E tersedia sangat banyak
(tanpa batas), berarti pencuri itu dapat membawa pulang 4 buah barang E.
Keuntungan yang diperoleh adalah 4 x 2250 = $9000
•
Langkah 4 : jika ada sisa berat, masukkan barang dengan value kedua tertinggi
dan seterusnya.
– Dalam kasus di atas, tidak terdapat sisa berat karena 4 buah barang E sudah
memiliki berat total 20 kg, menyamai batas berat maksimal.
Bina Nusantara
UNBOUNDED KNAPSACK PROBLEM (2)
•
Andai berat maksimal diubah menjadi 23 kg
•
Langkah 1 : hitung value per kg
–
–
–
–
–
•
Berat maksimal yang dapat dibawa adalah 23 kg, barang E tersedia sangat banyak (tanpa batas), berarti pencuri
itu dapat membawa pulang 4 buah barang E. Keuntungan yang diperoleh adalah 4 x 2250 = $9000
Langkah 4 : jika ada sisa berat, masukkan barang dengan value kedua tertinggi dan seterusnya.
–
–
–
–
–
•
Value tertinggi adalah $450 per kg, berarti barang E akan diambil.
Langkah 3 : masukkan barang dengan value tertinggi sebanyak dimungkinkan
–
•
 value per kg = $425
 value per kg = $410
 value per kg = $430
 value per kg = $420
 value per kg = $450
Langkah 2 : ambil value tertinggi
–
•
Barang A beratnya 7 kg, nilainya $2975
Barang B beratnya 3 kg, nilainya $1230
Barang C beratnya 9 kg, nilainya $3870
Barang D beratnya 2 kg, nilainya $840
Barang E beratnya 5 kg, nilainya $2250
Barang C (value kedua tertinggi) tidak bisa dibawa karena melebihi batas berat
Barang A (value ketiga tertinggi) tidak bisa dibawa karena melebihi batas berat
Barang D (value keempat tertinggi) dibawa sebanyak 1 buah, total berat kini 22 kg
Sisa berat 1 kg, tidak ada barang lain yang bisa dibawa
4 barang E dan 1 barang D bernilai $9420
Andai pencuri membawa 4 E dan 1 B, dia bisa memperoleh $10320  Metode Greedy tidak optimal
Bina Nusantara
FRACTIONAL KNAPSACK PROBLEM
•
Berat maksimal 23 kg
•
Langkah 1 : hitung value per kg
–
–
–
–
–
•
Barang A beratnya 7 kg, nilainya $2975
Barang B beratnya 3 kg, nilainya $1230
Barang C beratnya 9 kg, nilainya $3870
Barang D beratnya 2 kg, nilainya $840
Barang E beratnya 5 kg, nilainya $2250
 value per kg = $425
 value per kg = $410
 value per kg = $430
 value per kg = $420
 value per kg = $450
Langkah 2 : ambil value tertinggi
– Value tertinggi adalah $450 per kg, berarti barang E akan diambil.
•
Langkah 3 : masukkan barang dengan value tertinggi sebanyak dimungkinkan
– Berat maksimal yang dapat dibawa adalah 23 kg, barang E tersedia dalam jumlah
pecahan, berarti pencuri itu dapat membawa pulang 4,6 barang E. Keuntungan yang
diperoleh adalah 4,6 x 2250 = $10350
•
Kali ini Metode Greedy menghasilkan solusi optimal !
Bina Nusantara
PENGURUTAN JOBS BERDASAR DEADLINE
• Bentuk sederhana dari masalah penjadwalan.
• Terdapat sejumlah job yang harus dilakukan.
• Job akan menghasilkan profit apabila berhasil
diselesaikan sebelum batas waktunya (deadline).
[buku utama, bab 6.4]
Bina Nusantara
CONTOH KASUS
n=4; (p1,p2,p3,p4)=(110,47,25,20); (d1,d2,d3,d4)=(2,1,2,1)
•
Terdapat 4 buah job.
–
–
–
–
•
Job 1 dapat menghasilkan keuntungan 110 jika diselesaikan dengan deadline urutan (sequence)
kedua.
Job 2 dapat menghasilkan keuntungan 47 jika diselesaikan dengan deadline urutan pertama.
Job 3 dapat menghasilkan keuntungan 25 jika diselesaikan dengan deadline urutan kedua.
Job 4 dapat menghasilkan keuntungan 20 jika diselesaikan dengan deadline urutan pertama.
Dengan teknik biasa (complete) :
–
–
–
–
–
–
–
–
–
Bina Nusantara
(1)
(2)
(3)
(4)
(1,
(1,
(1,
(2,
(3,
2)
3)
4)
3)
4)
sequence
sequence
sequence
sequence
sequence
sequence
sequence
sequence
sequence
(1)
(2)
(3)
(4)
(2,
(1,
(4,
(2,
(4,
1)
3) atau (3, 1)
1)
3)
3)
profit
profit
profit
profit
profit
profit
profit
profit
profit
110
47
25
20
157
135
130
72
45
DENGAN METODE GREEDY
Job
Consideration
Action
Φ
Job 1
Can be assigned to [1,2], accept
{1}
Job 2
Can’t fit, reject
{1}
Job 3
Can be assigned to [1,2], accept
{1,3}
Job 4
Can’t fit, reject
[buku utama, tabel 6.2]
Bina Nusantara
LATIHAN
• Seorang pencuri memasuki sebuah rumah. Dia membawa tas yang
hanya muat mengangkut 14 kg barang. Di dalam rumah terdapat
barang A, B, C, D, E
Barang A beratnya 4 kg, nilainya $980
Barang B beratnya 5 kg, nilainya $1275
Barang C beratnya 2 kg, nilainya $480
Barang D beratnya 6 kg, nilainya $1410
Barang E beratnya 3 kg, nilainya $750
Semua barang berbentuk bubuk, jadi bisa diambil sebagian (tidak harus
diambil dalam satuan bulat) Tentukan barang yang harus dibawa si
pencuri dan jumlahnya agar hasilnya maksimal!
• Terdapat sebuah problem pengurutan jobs sebagai berikut :
– n=6
– (p1,p2,p3,p4,p5,p6)=(65,75,45,30,35,70)
– (d1,d2,d3,d4,d5,d6)=(2,1,1,2,3,2)
Tentukan jobs yang harus diambil berdasarkan Metode Greedy!
Bina Nusantara
REVIEW
• Apa yang sudah dipahami?
• Apa yang akan dibahas selanjutnya?
Bina Nusantara