Anda di halaman 1dari 13

Universitas Hasanuddin

Algoritma dan Struktur Data


Metode Greedy dan Dinamic Programming

Zaenal H 121 11 002

1. METODE GREEDY
Metode Greedy merupakan salah satu cara untuk mendapatkan solusi optimal dalam proses penyimpanan. Pada metode ini untuk mendapatkan solusi optimal dari permasalahan yang mempunyai dua kriteria yaitu Fungsi Tujuan/Utama dan Nilai Pembatas (Constrain). Fungsi Tujuan hanya terdiri atas satu fungsi sedangkan Fungsi Pembatas dapat terdiri atas lebih dari satu fungsi. Metode greedy adalah metode yang memecahkan langkah per langkah, dimana pada setiap langkah diambil pilihan yang terbaik (take what you can get now). Algoritma greedy merupakan metode yang paling populer untuk memecahkan persoalan optimasi. Persoalan optimasi (optimization problems):

persoalan mencari solusi optimum. Hanya ada dua macam persoalan optimasi: 1. Maksimasi (maximization) 2. Minimasi (minimization) Contoh persoalan optimasi: ( Masalah Penukaran Uang): Diberikan uang senilai A. Tukar A dengan koin-koin uang yang ada. Berapa jumlah minimum koin yang diperlukan untuk penukaran tersebut? Persoalan minimasi Contoh 1: tersedia banyak koin 1, 5, 10, 25 Uang senilai A = 32 dapat ditukar dengan banyak cara berikut: 32 = 1 + 1 + + 1 32 = 5 + 5 + 5 + 5 + 10 + 1 + 1 32 = 10 + 10 + 10 + 1 + 1 dst Minimum: 32 = 25 + 5 + 1 + 1 (4 koin) (32 koin) (7 koin) (5 koin)

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. Tinjau masalah penukaran uang: Strategi greedy: Pada setiap langkah, pilihlah koin dengan nilai terbesar dari himpunan koin yang tersisa. Misal: A = 32, koin yang tersedia: 1, 5, 10, dan 25 Langkah 1: pilih 1 buah koin 25 (Total = 25) Langkah 2: pilih 1 buah koin 5 Langkah 3: pilih 2 buah koin 1 (Total = 25 + 5 = 30) (Total = 25+5+1+1= 32) (solusi optimal!)

Solusi: Jumlah koin minimum = 4

Elemen-elemen algoritma greedy: 1. Himpunan kandidat, C. 2. Himpunan solusi, S 3. Fungsi seleksi (selection function) 4. Fungsi kelayakan (feasible) 5. Fungsi obyektif Dengan kata lain: algoritma greedy melibatkan pencarian sebuah himpunan bagian, S, dari himpunan kandidat, C; yang dalam hal ini, S harus memenuhi beberapa kriteria yang ditentukan, yaitu menyatakan suatu solusi dan S dioptimisasi oleh fungsi obyektif. Pada masalah penukaran uang: Himpunan kandidat: himpunan koin yang merepresentasikan nilai 1, 5, 10, 25, paling sedikit mengandung satu koin untuk setiap nilai. Himpunan solusi: total nilai koin yang dipilih tepat sama jumlahnya dengan nilai uang yang ditukarkan. Fungsi seleksi: pilihlah koin yang bernilai tertinggi dari himpunan kandidat yang tersisa.

Fungsi layak: memeriksa apakah nilai total dari himpunan koin yang dipilih tidak melebihi jumlah uang yang harus dibayar. Fungsi obyektif: jumlah koin yang digunakan minimum.

Catatan : Optimum global belum tentu merupakan solusi optimum (terbaik), tetapi sub-optimun atau pseudo-optimum. Alasan: 1. Algoritma greedy tidak beroperasi secara menyeluruh terhadap semua alternatif solusi yang ada (sebagaimana pada metode exhaustive search). 2. Terdapat beberapa fungsi SELEKSI yang berbeda, sehingga kita harus memilih fungsi yang tepat jika kita ingin algoritma menghasilkan solusi optiamal. Jadi, pada sebagian masalah algoritma greedy tidak selalu berhasil memberikan solusi yang optimal. Contoh 2: tinjau masalah penukaran uang. (a) Koin: 5, 4, 3, dan 1 Uang yang ditukar = 7. Solusi greedy: 7 = 5 + 1 + 1 Solusi optimal: 7 = 4 + 3 (b) Koin: 10, 7, 1 Uang yang ditukar: 15 Solusi greedy: 15 = 10 + 1 + 1 + 1 + 1 + 1 (6 koin) Solusi optimal: 15 = 7 + 7 + 1 (c) Koin: 15, 10, dan 1 Uang yang ditukar: 20 Solusi greedy: 20 = 15 + 1 + 1 + 1 + 1 + 1 Solusi optimal: 20 = 10 + 10 (6 koin) (2 koin) (hanya 3 koin) ( 3 koin) tidak optimal ( 2 koin)

Contoh 3 : 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

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 asumsikan bangun baru itu E (8x8 = 64 ).

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

Di gambar terlihat hanya ada 4 buah bangun E yang bisa dimasukkan ke dalam kotak utama.Jadi, panjang kotak tersisa 35-(8x4) = 3m dan lebar kotak tersisa 15-8 = 7m 3. 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

2. 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 ada 3 yaitu: (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.

Prinsip Optimalitas : 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. Prinsip optimalitas berarti bahwa jika kita bekerja dari tahap k ke tahap k + 1, kita dapat menggunakan hasil optimal dari tahap k tanpa harus kembali ke tahap awal. Jika pada setiap tahap kita menghitung ongkos (cost), maka dapat dirumuskan bahwa ongkos pada tahap k +1 = (ongkos yang dihasilkan pada tahap k ) + (ongkos dari tahap k ke tahap k + 1)

Dengan prinsip optimalitas ini dijamin bahwa pengambilan keputusan pada suatu tahap adalah keputusan yang benar untuk tahap-tahap selanjutnya. 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.

Karakteristik Persoalan Program Dinamis 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. Dua pendekatan yang digunakan dalam PD: maju (forward atau up-down) dan mundur (backward atau bottom-up).Misalkan x1, x2, , xn menyatakan peubah (variable) keputusan yang harus dibuat masing-masing untuk tahap 1, 2, , n. Maka, a. Program dinamis maju. Program dinamis bergerak mulai dari tahap 1, terus maju ke tahap 2, 3, dan seterusnya sampai tahap n. Runtunan peubah keputusan adalah x1, x2, , xn. b. Program dinamis mundur. Program dinamis bergerak mulai dari tahap n, terus mundur ke tahap n 1, n 2, dan seterusnya sampai tahap 1. Runtunan peubah keputusan adalah xn, xn-1, , x1. Secara umum, ada empat langkah yang dilakukan dalam mengembangkana algoritma program dinamis: 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.

Contoh 1: Lintasan Terpendek (Shortest Path)

Metode Greedy : Dari A ke L = 2+4+3+5 = 12 yaitu dilihat kedepannya yang mana lebih kecil. Dynamic Programming : step 2 Dist (E) = {A,B,E} cost (E) = 8 Dist (F) = {A,C,F} cost (F) = 6 Dist (G) = {A,C,G} cost (G) = 7 Dist (H) = {A,D,H} cost (H) = 5 Dist (I) = {A,D,I} cost (I) = 7 Step 3 Dist (J) = {A,C,F,J} Dist (K) = {A,D,H,K} Dist (L) = {A,D,H,K,L}

cost (J) = 6+3 = 9 cost (K) = 5+2 = 7 cost (L) = 7 + 6= 13

Contoh 2 : 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.

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

2. Kotak persegi panjang dibagi menjadi dua tahap yaitu:Tahap 1 (8 x 35)m dan 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

Anda mungkin juga menyukai