Anda di halaman 1dari 14

LECTURE NOTE

Week 04
Greedy Method

ALGORITHM DESIGN AND


ANALYSIS <<Kode mtk – Nama mtk>>
LEARNING OUTCOMES

LO2: compare several algorithm design methods

OUTLINE MATERI :

1. Introduction

2. Knapsack problem

3. Job sequencing based on deadline

4. Minimum spanning tree

5. Shortest path

Algorithm Design and Analysis


ISI MATERI
1. Introduction

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:

1) Fractional knapsack problem. Barang dapat diambil dalam bentuk pecahan.

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.

4) Unbounded knapsack problem. Barang yang tersedia tidak terbatas.

Algorithm Design and Analysis


Pada permasalahan 0/1 knapsack problem tidak dapat dipecahkan menggunakan metode
greedy. Hal ini dikarenakan metode greedy berfokus pada pengambilan barang dengan nilai
tertinggi, ini menyebabkan adanya kemungkinan tersisa ruang kosong yang cukup besar dalam
tampungan. Namun, tidak mengambil kombinasi barang yang lebih menguntungkan.

Pada permasalahan unbounded knapsack problem dapat diselesaikan dengan metode greedy.
Berikut merupakan tahapan cara penyelesaiannya menggunakan metode greedy.

1) Hitung nilai per kg

2) Ambil nilai tertinggi

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

5) Hitung kompleksitas algoritma

Pada permasalan fractional unbounded knapsack problem dapat diselesaikan dengan metode
greedy. Berikut merupakan tahapan cara penyelesaiannya menggunakan metode greedy.

1) Hitung nilai per kg

2) Ambil nilai tertinggi

3) Masukkan barang dengan nilai tertinggi sebanyak mungkin (perhatikan batasan berat dan
jumlah ketersediaan barang)

4) Hitung kompleksitas algoritma

Contoh soal:

(1) Perhatikan contoh kasus unbounded knapsack problem berikut:

[if maximum weight is changed to 23 kg]

Algorithm Design and Analysis


Step 1: calculate the value per kg

- Item A weighing 7 kg, value $2,975 → value per kg = $425

- Item B weighing 3 kg, value $1,230 → value per kg = $410

- Item C weighing 9 kg, value $3,870 → value per kg = $430

- Item D weighing 2 kg, value $840 → value per kg = $420

- Item E weighing 5 kg, value $2,250 → value per kg = $450

Step 2: take the highest value

- 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

- 4 items E and 1 D of goods worth $9,420

[if thief was carrying four E and a B, he can earn $10,320 → greedy method is not optimal]

Algorithm Design and Analysis


(2) Perhatikan contoh kasus fractional knapsack problem berikut

[maximum weight 23 kg]

Step 1: calculate the value per kg

- Item A weighing 7 kg, value $2,975 → value per kg = $425

- Item B weighing 3 kg, value $1,230 → value per kg = $410

- Item C weighing 9 kg, value $3,870 → value per kg = $430

- Item D weighing 2 kg, value $840 → value per kg = $420

- Item E weighing 5 kg, value $2,250 → value per kg = $450

Step 2: take the highest value

- 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 23 kg, item E is available in a number of


denominations, meaning the thief can bring home the goods 4.6 item E. The advantage
obtained is 4.6 x $2,250 = $10,350

This solution the greedy method produces an optimal solution

3. Job sequencing with deadline

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

Algorithm Design and Analysis


Contoh:

There are 4 jobs


- Job 1 can generate profits 110 if completed by the deadline in the second order (sequence)
- Job 2 can generate profits 47 if completed by the deadline in the first order (sequence)
- Job 3 can generate profits 25 if completed by the deadline in the second order (sequence)
- Job 4 can generate profits 20 if completed by the deadline in the first order (sequence)
n = 4; (p1, p2, p3, p4) = (110, 47, 25, 20); (d1, d2, d3, d4) = (2, 1, 2, 1)
d1, d2, d3, d4 → deadline
p1, p2, p3, p4 → profit
dengan teknik biasa (complete)
(1) Sequence (1) profit 110
(2) Sequence (2) profit 47
(3) Sequence (3) profit 25
(4) Sequence (4) profit 20
(1,2) Sequence (2,1) profit 157
(1,3) Sequence (1,3) or (3,1) profit 135
(1,4) Sequence (4,1) profit 130
(2,3) Sequence (3,2) profit 72
(3,4) Sequence (4,3) profit 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

4. Minimum spanning tree

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

Algorithm Design and Analysis


banyak bentuk spanning tree. Metode pembentukan spanning tree dengan mengacu terhadap
jalur minimumnya dijabarkan melalui metode pembuatan minimum spanning tree, yakni
algoritma prim dan Kruskal. Kedua algoritma ini menggunakan metode greedy sebagai konsep
dasarnya.

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.

Contoh penerapan algoritma prim:

Algorithm Design and Analysis


Gambar 1. Penerapan algoritma Prim.
Label tanda kurung dari sebuah simpul di kolom tengah menunjukkan simpul pohon terdekat dan bobot tepi;
simpul dan tepi yang dipilih ditampilkan dalam huruf tebal.

2) Algoritma Kruskal

Algoritma Kruskal merupakan algoritma yang digunakan untuk mencari minimum ke


semua node lain pada graph menggunakan konsep priority queue/ heap. Sama halnya
dengan prim, algoritma Kruskal juga menggunakan konsep priority queue. Namun proses
penerapan dan pencariannya dimana pada algoritma Kruskal semua edge yang terdapat pada
graph akan dimasukkan ke dalam priority queue terlebih dahulu dan kemudian akan diambil
satu persatu dari yang paling kecil sambil dilakukan pengecekan apakah jalur yang diambil

Algorithm Design and Analysis


menyebabkan looping. Penggambaran lengkap dari algoritma ini dapat dilihat pada slide
powerpoint tambahan.
Contoh penerapan algoritma Kruskal.

Gambar 2. Penerapan algoritma Kruskal. Tepi yang dipilih ditampilkan dalam huruf tebal.

Algorithm Design and Analysis


5. Shortest path

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:

dari a ke b : a b panjang 3; dari a ke c : a b c panjangnya 7


dari a ke d : a b d dengan panjang 5 dari a ke e : a b d e panjangnya 9

Algorithm Design and Analysis


KESIMPULAN

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.

Algorithm Design and Analysis


f) Disamping pembentukan spanning tree juga terdapat masalah lain berupa penentuan
shortest path yang dapat dipecahkan menggunakan metode greedy. Algoritma yang
digunakan untuk memecahkan masalah ini adalah algoritma dijsktra.

Algorithm Design and Analysis


DAFTAR PUSTAKA

Levitin, A. (2012). The Introduction to The Design and Analysis of Algorithms (3rd ed.). Pearson.

Sridhar, S. (2015). Design and Analysis of Algorithms. Oxford University Press.

R6. Greedy Algorithms, www.youtube.com/watch?v=-QcPo_DWJk4

Algorithm Design and Analysis

Anda mungkin juga menyukai