Metode Greedy Dan Dynamic Programming

ALGORITMA DAN STRUKTUR DATA

NAMA NIM KELAS

: MAYA MULYASARI : H121 11 277 : STATH A

JURUSAN MATEMATIKA FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS HASANUDDIN 2012/2013

STRATEGI ALGORITMA
Strategi algoritmik adalah kumpulan metode atau teknik untuk memecahkan masalah guna mencapai tujuan yang ditentukan, yang dalam hal ini deskripsi metode atau teknik tersebut dinyatakan dalam suatu urutan langkah-langkah penyelesaian. Secara umum, strategi pemecahan masalah dapat dikelompokan sebagai berikut:
1. Strategi solusi langsung (direct solution strategies)

- Algoritma Brute force - Algoritma Greedy 2. Strategi berbasis pencarian pada ruang status (state-space base strategies) - Algoritma Backtracking - Algoritma Branch and Bound
3. Strategi solusi atas-bawah (top-down solution strategies)

- Algoritma Divide and Conquer
4. Strategi solusi bawah-atas (bottom-up solution strategies)

- Dynamic Programming

METODE GREEDY
Metode ini digunakan untuk memperoleh solusi yang optimal dari suatu masalah yang mempunyai 2 indikator yaitu : adanya fungsi tujuan & pembatas (Constrain). Hanya ada dua macam persoalan optimasi: 1. Maksimasi (maximization) 2. Minimasi (minimization) Algoritma greedy adalah algoritma yang memecahkan masalah langkah per langkah. Pada setiap langkah: 1. Mengambil pilihan yang terbaik yang dapat diperoleh pada saat itu tanpa memperhatikan konsekuensi ke depan (prinsip “take what you can get now!”). 2. Berharap bahwa dengan memilih optimum lokal pada setiap langkah akan berakhir dengan optimum global. Elemen-elemen yang digunakan dalam penerapan algoritma greedy antara lain : 1. Himpunan Kandidat Himpunan yang berisi elemen pembentuk solusi. 2. Himpunan Solusi Himpunan yang terpilih sebagai solusi persoalan.

3. Fungsi Seleksi Fungsi yang memilih kandidat yang paling mungkin untuk mencapai solusi optimal. 4. Fungsi Kelayakan Fungsi yang memilih kandidat yang paling mungkin untuk mencapai solusi optimal. 5. Fungsi Solusi Fungsi yang mengembalikan nilai boolean. True jika himpunan solusi yang sudah tebentuk merupakan solusi yang lengkap; False jika himpunan solusi belum lengkap. 6. Fungsi Objektif Fungsi yang mengoptimalkan solusi Contoh : Pada kasus penukaran uang, misalkan kita memiliki uang senilai 32 dan akan kita tukarkan dengan koin, uang koin pecahan yang tersedia adalah 1, 5, 10, 25, jika kita mengharapkan agar pecahan yang kita miliki sedikit mungkin maka kita bisa menggunakan metode greedy dengan cara memilih pecahan terbesar terlebih dahulu. Mari kita lihat: Himpunan solusi feasibel untuk 32 adalah {1, 5, 10, 25}

Himpunan solusi feasible untuk 7 adalah {1, 5}

Himpunan solusi feasible untuk 2 adalah {1}

Total koin adalah 32 senilai dengan

1 koin 25, 1 koin 7 , dan 2 koin 1 = 4 koin

Namun ada kalanya metode greedy gagal mendapatkan solusi optimal, hal ini juga dikarenakan oleh sifat metode greedy itu sendiri yang memperhatikan keuntungan lokal(diawal) tanpa memperhatikan kemungkinan solusi yang lain. Contoh: Uang yang ditukar sebesar 7

Koin yang tersedia 5,4,3, dan 1 Jika kita menukarkan uang tersebut dengan metode greedy maka kita harus mengambil pecahan terbesar lebih dulu yaitu 5, baru kemudian kita memilih pecahan berikutnya hingga genap berjumlah 7 dalam artian Himpunan solusi feasibel untuk 7 adalah {1, 3, 4, 5}

Himpunan solusi feasibel untuk 2 adalah {1}

alternatif solusi 7=4+3 (2koin) Pada contoh diatas jelas terlihat bahwa metode greedy gagal memberikan solusi optimal.

Skema Umum :
function greedy( input C: himpunan_kandidat )→ himpunan_kandidat { Mengembalikan solusi dari persoalan optimasi dengan algoritma greedy Masukan: himpunan kandidat C Keluaran: himpunan solusi yang bertipe himpunan_kandidat } Deklarasi x : kandidat S : himpunan_kandidat Algoritma : S ← {} { inisialisasi S dengan kosong } while (not SOLUSI(S)) and (C ≠ {} ) do x ← SELEKSI(C) { pilih sebuah kandidat dari C} C ← C - {x} { elemen himpunan kandidat berkurang satu } if LAYAK(S ∪ {x}) then S ← S ∪ {x} endif endwhile {SOLUSI(S) or C = {} } if SOLUSI(S) then return S else write (’tidak ada solusi’) endif

• •

Pada akhir setiap lelaran, solusi yang terbentuk adalah optimum lokal. Pada akhir kalang while-do diperoleh optimum global.

PROCEDURE GREEDY (A,n) Solusi  0 (solusi awal) FOR I  1 TO n DO X  SELECT(A) IF FEASIBLE (Solusi, x) THEN Solusi  UNION (solusi, x) ENDIF REPEAT RETURN (Solusi) END GREEDY Keterangan : A(1:n) mengandung n input data. FEASIBLE merupakan fungsi yang bernilai boo;ean (0 atau 1) UNION penggabungan dan pemeriksaan fungsi obyektifnya (update) SELECT merupakan fungsi untuk mengambil data input dari A Contoh : Himpunan A merupakan himpunan pasangan terurut (x,y), yaitu { (2,1),(3,2),(7,1), dan (1,0)}. Dari data-data tersebut akan ditentukan suatu pasangan terurut yang memiliki jumlah x dan y yang minimum. Adapun batasan dari x dan y masing-masing lebih besar dari nol. Penyelesaiannya : Solusi  0 N = 1 : x=2 > 0 Y=1 > 0 FEASIBLE (solusi, x) Solusi  {(2,1)} N = 2 : x=3 > 0 Y=2 > 0 FEASIBLE (solusi, x) Solusi  {(2,1),{3,2)} N = 3 : x=7 > 0 Y=1>0 FEASIBLE (solusi, x) Solusi  {{2,1),(3,2),(7,1)} N=4:x=1 >0 Y =0>0 TIDAK FEASIBLE Solusi  {(2,1),{3,2),(7,1)}

Dari himpunan solusi yang mungkin tersebut diperoleh solusi yang optimal (dalam hal ini minimum) adalah (2,1) yang jumlahnya sebesar 2 + 1 = 3. Jadi solusi = (2,1) Metode Greedy banyak digunakan dalam berbagai penyelesaian maslah, antara lain adalah : Optimal Storage on Tapes Problem Kanpsack Problem Minimum Spanning Tree Problem Shortest Path Problem

1. 2. 3. 4.

DYNAMIC PROGRAMMING
Program Dinamis (dynamic programming): metode pemecahan masalah dengan cara menguraikan solusi menjadi sekumpulan langkah (step) atau tahapan (stage) sedemikian sehingga solusi dari persoalan dapat dipandang dari serangkaian keputusan yang saling berkaitan. Pada penyelesaian persoalan dengan metode ini:
1. Terdapat sejumlah berhingga pilihan yang mungkin, 2. Solusi pada setiap tahap dibangun dari hasil solusi tahap sebelumnya, 3. Kita menggunakan persyaratan optimasi dan kendala untuk membatasi sejumlah pilihan

yang harus dipertimbangkan pada suatu tahap. Tinjau graf di bawah ini. Kita ingin menemukan lintasan terpendek dari 1 ke 10.
7 2 2 4 1 3 4 6 2 6 3 1 5 4 7 3 3 5 4 6 3 9 4
1 0

1 8 3

3 4

4

• Pada program dinamis, rangkaian keputusan yang optimal dibuat dengan menggunakan

Prinsip Optimalitas.
• Prinsip Optimalitas: jika solusi total optimal, maka bagian solusi sampai tahap ke-k

juga optimal.

Karakteristik persoalan program dinamik, yaitu :
1. Persoalan dapat dibagi menjadi beberapa tahap (stage), yang pada setiap tahap hanya

diambil satu keputusan.
2. Masing-masing tahap terdiri dari sejumlah status (state) yang berhubungan dengan

tahap tersebut. Secara umum, status merupakan bermacam kemungkinan masukan yang ada pada tahap tersebut. 3. Hasil dari keputusan yang diambil pada setiap tahap ditransformasikan dari status yang bersangkutan ke status berikutnya pada tahap berikutnya.
4. Ongkos (cost) pada suatu tahap meningkat secara teratur (steadily) dengan

bertambahnya jumlah tahapan. 5. Ongkos pada suatu tahap bergantung pada ongkos tahap-tahap yang sudah berjalan dan ongkos pada tahap tersebut. 6. Keputusan terbaik pada suatu tahap bersifat independen terhadap keputusan yang dilakukan pada tahap sebelumnya.
7. Adanya hubungan rekursif yang mengidentifikasikan keputusan terbaik untuk setiap

status pada tahap k memberikan keputusan terbaik untuk setiap status pada tahap k + 1. 8. Prinsip optimalitas berlaku pada persoalan tersebut.

Pendekatan program dinamik ada 2, yaitu :

Dua pendekatan yang digunakan dalam PD: maju (forward atau up-down) dan mundur (backward atau bottom-up).

Langkah-langkah pengembangan algoritma program dinamik : 1. Karakteristikkan struktur solusi optimal. 2. Definisikan secara rekursif nilai solusi optimal. 3. Hitung nilai solusi optimal secara maju atau mundur. 4. Konstruksi solusi optimal.

Pada metode greedy hanya satu rangkaian keputusan yang pernah dihasilkan, sedangkan pada metode program dinamis lebih dari satu rangkaian keputusan. Hanya rangkaian keputusan yang memenuhi prinsip optimalitas yang akan dihasilkan.

Contoh Kasus dengan Metode Greedy
Terdapat empat bentuk bangun persegi yang berbeda seperti dibawah ini ( A,B,C,D) . Dengan metode greedy susun keempat balok agar dapat masuk ke dalam kotak berbentuk persegi panjang yang luasnya 35x15 meter dengan menyisakan luas yang sangat kecil.

Penyelesaian : Metode greedy adalah metode yang memecahkan langkah per langkah, dimana pada setiap langkah diambil pilihan yang terbaik (“take what you can get now”). Luas bangun A,B,C,D berturut-turut (12 ,14 ,8 ,16 ). Pada kasus ini, untuk menyisakan luasan yang sangat kecil,ide terbaik yang kita ambil adalah
1. Menyusun bangun yang mempunyai luas terbesar yakni bangun D menjadi berbentuk

kotak seperti dibawah ini, kita peroleh bangun baru E (8x8 = 64

).

2. Memasukkan E kedalam kotak persegi panjang hingga tidak bisa dimasukkan lagi.

Terlihat hanya 4 buah bangun E yang bisa dimasukkan, panjang kotak bersisa 35-(8x4) = 3m dan lebar kotak bersisa 15-8 = 7m
3. Tetap pada prinsip “take what you can get now” ,, kita masukkan lagi bangun yang

terluas dan cukup menempati lebar 7m yakni bangun D yang disusun sedemikian rupa seperti ini

4. Tutup bagian yang terbuka dengan bangun C seperti ini

5. Panjang 7m tadi telah bersisa 7-6 = 1 m dan karena tidak ada bangun yang bersisi 1m maka sisanya sudah tidak bisa diisi bangun lagi. Tapi panjang sisa 3m masih bisa diisi oleh bangun C seperti ini

Daerah yang berwarna abu-abu : Luas Sisa Luas Sisa = Luas Keseluruhan – Luas yang Terisi = (35x15) – (4E+11C+8D) = 525 – (4.64 + 11.8 + 8.16) = 525 – (256 + 88 + 128 ) = 525 – 472

= 53 Dengan metode greedy diperoleh Luas Sisa 53 Kita akan bandingkan dengan menggunakan dynamic programming

Contoh Kasus Dynamic Programming
Terdapat empat bentuk bangun persegi yang berbeda seperti dibawah ini ( A,B,C,D) . Dengan dynamic programming susun keempat balok agar dapat masuk ke dalam kotak berbentuk persegi panjang yang luasnya 35x15 meter dengan menyisakan luas yang sangat kecil.

Penyelesaian : dynamic programming membagi persoalan ini menjadi beberapa tahap, yang pada setiap tahap hanya diambil satu keputusan..

Idenya :
1. Membuat Kotak dari bangun B, diperoleh bangun F yang baru dengan luas 7 x 4 = 28

2. Kotak persegi panjang dibagi menjadi dua seperti ini . Tahap 1 (8 x 35)m .Tahap 2 (7x35)m

3. Ditahap 1 diambil satu keputusan : isi bagian atas seperti ini

4. Ditahap 2 diambil satu keputusan : isi bagian bawah seperti ini

Daerah yang berwarna merah : Luas Sisa Luas Sisa = Luas Keseluruhan – Luas yang Terisi = (35x15) – (18F+C) = 525 – (18.28 + 8) = 525 – (512 ) = 13

Dengan dynamic programming diperoleh Luas Sisa 13

.. ¼ luas sisa dengan metode

greedy. Terlihat , dengan dynamic programming luas sisa yang diperoleh lebih kecil.

Sign up to vote on this title
UsefulNot useful