Week 04
Greedy Method
OUTLINE MATERI :
1. Introduction
2. Knapsack problem
5. Shortest path
Greedy berarti serakah. Metode ini dinamakan demikian karena penyelesaian masalah yang
diberikan tidak melihat secara keseluruhan masalah. Namun, bagian per bagian yang nantinya
dipilih solusi terbaik untuk bagian tersebut. Hasil akhir dari solusi yang diberikan memiliki sifat
kebenaran berupa local optimum solution. Dikatakan demikian karena proses pemilihan solusi
dilihat secara bagian per bagian sehingga optimum dan bersifat lokal. Namun, proses yang
dikerjakan jauh lebih efisien dibandingkan dengan metode naïve yang mengharuskan
pengecekan terhadap seluruh bagian dari permasalahan secara menyeluruh.
Pada bagian ini kita akan membahas tentang berbagai aplikasi yang dapat diselesaikan dengan
menggunakan pendekatan Greedy.
2. Knapsack problem
Knapsack problem merupakan masalah dimana pemilihan barang dengan nilai terbaik yang
mampu ditampung ke dalam suatu tampungan terbatas yang akan memberikan nilai yang paling
menguntungkan. Jika menggunakan metode naïve hasil dari permasalahan ini akan memberikan
kombinasi barang dapat ditampung dan memberikan nilai yang paling menguntungkan. Namun
proses yang harus dijalankan sangat banyak mengingat kombinasi yang dimunculkan sangat
banyak.
Pada masalah knapsack problem sendiri terbagi menjadi 4 variasi utama, yakni:
2) 0/1 knapsack problem. Barang diambil harus dalam bentuk utuh, tidak dapat dipecah.
3) Bounded knapsack problem. Barang yang tersedia dalam kuantitas yang terbatas.
Pada permasalahan unbounded knapsack problem dapat diselesaikan dengan metode greedy.
Berikut merupakan tahapan cara penyelesaiannya menggunakan metode greedy.
3) Ambil barang dengan nilai tertinggi sebanyak-banyaknya (perhatikan batasan berat dan
jumlah ketersediaan barang)
4) Jika ada sisa berat, gunakan barang dengan nilai tertinggi dan seterusnya
Pada permasalan fractional unbounded knapsack problem dapat diselesaikan dengan metode
greedy. Berikut merupakan tahapan cara penyelesaiannya menggunakan metode greedy.
3) Masukkan barang dengan nilai tertinggi sebanyak mungkin (perhatikan batasan berat dan
jumlah ketersediaan barang)
Contoh soal:
- The highest value is $450 per kg, mean item E will be taken
Step 3: take the item with the highest value as much as possible
- Maximum weight that can be taken is 20 kg, item E are very large (unlimited), means
that the thief was able to bring home 4 pieces of item E. the gains is 4 x $2,250 = $9,000
Step 4: if there is residual weight, take the item with second highest value and so on
- Item C (the second highest value) cannot be taken due to exceeding the weight limit
- Item A (the third highest value) cannot be taken due to exceeding the weight limit
- Item D (the fourth highest value) were taken in increments of 1 pieces, total weight is
now 22 kg
- The remaining weight of 1 kg, there are no other items that can be brought
[if thief was carrying four E and a B, he can earn $10,320 → greedy method is not optimal]
- The highest value is $450 per kg, mean item E will be taken
Step 3: take the item with the highest value as much as possible
Bentuk sederhana dari masalah penjadwalan dimana terdapat sejumlah pekerjaan yang harus
diselesaikan. Pekerjaan yang dikerjakan akan menghasilkan keuntungan jika diselesaikan
sebelum batas waktu akhir (deadline)
Berikut ini merupakan contoh pembahasan dari permasalahan job sequencing with deadline
menggunakan konsep metode greedy
Spanning tree merupakan pembentukan tree yang diubah dari bentuk graph dimana tree ini
wajib memiliki semua node yang dimiliki oleh graph. Pada umumnya graph dapat memiliki
Minimum spanning tree adalah bentuk pembuatan spanning tree dari sebuah graph dengan jalur
minimum ke semua nodenya. Sebuah graph dapat memiliki lebih dari satu bentuk spanning tree
bergantung dari ragam bobot edge yang dimiliki oleh graph tersebut dan berapa banyak metode
pembentukkan spanning tree yang digunakan. Misalkan hasil dari algoritma Prim dan Kruskal
bisa jadi menghasilkan 2 bentuk spanning tree yang berbeda apabila kombinasi ragam dari
bobot edge yang dimiliki oleh graph tersebut terdapat banyak kesamaan bobot.
Minimum spanning tree menggunakan konsep greedy terbagi menjadi dua yaitu
1) Algoritma prim
Algoritma prim merupakan algoritma yang digunakan untuk mencari jalur minimum ke
semua node lain pada graph menggunakan konsep priority queue dan kemudian nilai edge
yang terendah akan diambil yang kemudian akan diikuti dengan langkah yang tadi sampai
semua node selesai dikunjungi. Penggambaran lengkap dari algoritma ini dapat dilihat pada
slide powerpoint tambahan.
2) Algoritma Kruskal
Gambar 2. Penerapan algoritma Kruskal. Tepi yang dipilih ditampilkan dalam huruf tebal.
Shortest path adalah penentuan jalur terpendek dari node – node yang ditentukan dari graph
yang telah diberikan. Untuk penentuan shortest path dapat dengan menggunakan metode
greedy, yakni dengan algoritma Dijkstra. Dimana algoritma ini pada umumnya bekerja
menyerupai algoritma prim sehingga sering disebut algoritma prim-dijstra. Pembahasan jelas
mengenai algoritma ini terdapat pada slide powerpoint tambahan
Gambar 3. Penerapan algoritma Dijkstra. Titik terdekat berikutnya ditampilkan dalam huruf tebal.
Jalur terpendek (diidentifikasi dengan mengikuti label nonnumerik mundur dari titik tujuan di
kolom kiri ke sumber) dan panjangnya (diberikan oleh label numerik dari simpul pohon) adalah
sebagai berikut:
a) Greedy method menyarankan membangun solusi untuk masalah optimasi melalui urutan
langkah, masing-masing memperluas solusi yang dibangun sebagian diperoleh sejauh ini,
sampai solusi lengkap untuk masalah tercapai. Pada setiap langkah, pilihan yang dibuat
harus layak, optimal secara lokal, dan tidak dapat dibatalkan.
b) Algoritma Prim adalah algoritma serakah untuk membangun pohon merentang minimum
dari graf terhubung berbobot. Ia bekerja dengan melampirkan ke subpohon yang dibangun
sebelumnya sebuah simpul yang paling dekat dengan simpul yang sudah ada di pohon.
c) Algoritma Kruskal adalah algoritma serakah lain untuk masalah pohon merentang
minimum. Ini membangun minimum spanning tree dengan memilih edge dalam urutan
bobot yang tidak berkurang asalkan inklusi tidak membuat siklus. Memeriksa kondisi
terakhir secara efisien memerlukan aplikasi dari salah satu yang disebut algoritma union-
find.
d) Algoritma Dijkstra memecahkan masalah jalur terpendek sumber tunggal untuk
menemukan jalur terpendek dari titik tertentu (sumber) ke semua titik lain dari graf atau
digraf berbobot. Ini berfungsi sebagai algoritma Prim tetapi membandingkan panjang jalur
daripada panjang tepi. Algoritma Dijkstra selalu menghasilkan solusi yang tepat untuk graf
dengan bobot nonnegatif.
e) Graph dan tree merupakan dua bentuk struktur data yang menerapkan konsep ADT. Graph
pada umumnya digunakan untuk penggambaran dari sebuah peta, sedangkan tree
digunakan sebagai bentuk penggambaran lebih lanjut dari graph untuk mencari jalur
terpendek ke masing-masing node. Contoh implementasinya adalah bentuk analisa
perancangan kabel telepon. Pembentukan tree dari graph disebut sebagai spanning tree.
Hasil spanning tree dari sebuah graph dapat beragam dan lebih dari satu bergantung dari
beberapa persyaratannya. Terdapat dua metode pembentukan minimum spanning tree
menggunakan konsep greedy, yakni algoritma prim dan algoritma kruskal.
Levitin, A. (2012). The Introduction to The Design and Analysis of Algorithms (3rd ed.). Pearson.