16
ALGORITMA DAN STRUKTUR DATA NAMA : MAYA MULYASARI NIM : H121 11 277 KELAS : STATH A JURUSAN MATEMATIKA FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS HASANUDDIN

Metode Greedy Dan Dynamic Programming

Embed Size (px)

Citation preview

Page 1: Metode Greedy Dan Dynamic Programming

ALGORITMA DAN

STRUKTUR DATA

NAMA : MAYA MULYASARI

NIM : H121 11 277

KELAS : STATH A

JURUSAN MATEMATIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS HASANUDDIN

2012/2013

Page 2: Metode Greedy Dan Dynamic Programming

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

Page 3: Metode Greedy Dan Dynamic Programming

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 ObjektifFungsi 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

Page 4: Metode Greedy Dan Dynamic Programming

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 :

Page 5: Metode Greedy Dan Dynamic Programming

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) ENDIFREPEATRETURN (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 0N = 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 > 0Y = 1 > 0 FEASIBLE (solusi, x)Solusi {{2,1),(3,2),(7,1)}

N = 4 : x = 1 > 0Y = 0 > 0 TIDAK FEASIBLESolusi {(2,1),{3,2),(7,1)}

Page 6: Metode Greedy Dan Dynamic Programming

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 :1. Optimal Storage on Tapes Problem2. Kanpsack Problem3. Minimum Spanning Tree Problem4. Shortest Path Problem

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.

• 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.

Page 7: Metode Greedy Dan Dynamic Programming

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.

Page 8: Metode Greedy Dan Dynamic Programming

Contoh Kasus dengan Metode GreedyTerdapat 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 ).

Page 9: Metode Greedy Dan Dynamic Programming

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

Page 10: Metode Greedy Dan Dynamic Programming

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.

Page 11: Metode Greedy Dan Dynamic Programming

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

Page 12: Metode Greedy Dan Dynamic Programming

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

Page 13: Metode Greedy Dan Dynamic Programming

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.