Metode Greedy & Dynamic Programming

12

Transcript of Metode Greedy & Dynamic Programming

Page 1: Metode Greedy & Dynamic Programming
Page 2: Metode Greedy & Dynamic Programming

STRATEGI ALGORITMA1. Metode Gredy2. Dynamic Programming.

1) Metode GreedyPrinsip metode greedy ini adalah: “take what you can get now!”. Algoritma greedy membentuk solusi langkah per langkah (step by step). Pada setiap langkah, terdapat banyak pilihan yang perlu dieksplorasi. Oleh karena itu, pada setiap langkah harus dibuat keputusan yang terbaik dalam menentukan pilihan. Pada setiap langkah, kita membuat pilihan optimum lokal (local optimum) dengan harapan bahwa langkah sisanya mengarah ke solusi optimum global (global optimum).

Algoritma greedy adalah algoritma yang memecahkan masalah langkah per langkah.Pada setiap langkah:

Mengambil pilihan yang terbaik yang dapat diperoleh pada saat itu tanpa memperhatikan konsekuensi ke depan (prinsip “take what you can get now!”)Berharap bahwa dengan memilih optimum lokal pada setiap langkah akan berakhir dengan optimum global.

Skema umum dari algoritma greedy disusun oleh elemen-elemen sebagai berikut : 1. Himpunan kandidat

Himpunan ini berisi elemen-elemen pembentuk solusi. 2. Himpunan solusi

Himpunan ini berisi bagian dari himpunan kandidat yang terpilih sebagai solusi persoalan.

3. Fungsi seleksi Fungsi ini adalah fungsi yang pada setiap langkah memilih solusi yang paling memungkinkan mencapai solusi optimal.

4. Fungsi kelayakan Fungsi ini memasukkan kandidat-kandidat yang layak dari himpunan kandidat ke himpunan solusi.

5. Fungsi obyektif Yaitu fungsi yang memaksimumkan atau meminimumkan nilai solusi

Contoh kasus:Tinjau masalah penukaran uangLangkah strategi metode greedy:

• Pada setiap langkah, pilihlah koin dengan nilai terbesar dari himpunan koin yang tersisa. Misal: diberikan jumlah uang A = $ 32, koin yang tersedia: $1, $5, $10, dan $25 Langkah 1 : pilih 1 buah koin $25 (Total = 25)

$ 32$25

=1

Page 3: Metode Greedy & Dynamic Programming

1 koin uang $20= $20Sisa = $7

Langkah 2 : pilih 1 buah koin $5 (Total = 25 + 5 = 30)$7$5

=1

1 koin uang $5= $5Sisa = $2

Langkah 3 ; pilih 2 buah koin $1 (Total = 25+5+1+1= 32) $2$1

=2

2 koin uang $1= $2Sisa = 0

• Solusi: Jumlah koin minimum = $4 (solusi optimal!)

Catatan: Algoritma greedy tidak beroperasi secara menyeluruh terhadap semua alternatif solusi

yang ada (sebagaimana pada metode exhaustive search). Terdapat beberapa fungsi SELEKSI yang berbeda, sehingga kita harus memilih fungsi

yang tepat jika kita ingin algoritma menghasilkan solusi optiamal. Kesimpulan:Jadi, pada sebagian masalah, metode greedy tidak selalu berhasil memberikan solusi yang optimal.

Kelebihan dan kelemahan metode greedy:Kelebihan:

Kompleksitas ruangnya rendah. Memori yang dibutuhkan tidak besar, karena langkah sebelumnya tidak disimpan. Kita terus memperhatikan langkah di depan saja. Sehingga sangat kecil kemungkinan mengalami masalah ketersediaan memori.

Mudah diimplementasikan, algoritma greedy sangat mudah untuk diimplementasikan pada persoalan-persoalan yang ada.

Kompleksitas waktunya rendah, sehingga jarang mengalami masalah dalam lamanya waktu pencarian langkah.

Kelemahan: Hasilnya belum tentu optimal. Hanya mencari solusi terbaik saat itu, padahal nelum tentu terbaik untuk langkah

berikutnya.

2) Dynamic ProgrammingDynamic programming problems adalah masalah multi tahap(multistage) dimana keputusan dibuat secara berurutan (in sequence).

Page 4: Metode Greedy & Dynamic Programming

Pemrograman dinamis (dynamic programming) adalah metode pemecahan masalah dengan cara menguraikan solusi menjadi sekumpulan langkah (step) atau tahapan (stage) sedemikian rupa sehingga solusi dari permasalahan ini dapat dipandang dari serangkaian keputusan-keputusan kecil yang saling berkaitan satu dengan yang lain. Penyelesaian persoalan dengan pemrograman dinamis ini akan menghasilkan sejumlah berhingga pilihan yang mungkin dipilih, lalu solusi pada setiap tahap-tahap yang dibangun dari solusi pada tahap sebelumnya, dan dengan metode ini kita menggunakan persyaratan optimasi dan kendala untuk membatasi sejumlah pilihan yang harus dipertimbangkan pada suatu tahap.

Karakteristik Persoalan yang dimiliki oleh Program Dinamis:Persoalan dapat dibagi menjadi beberapa tahap (stage), yang pada setiap tahap hanya dapat diambil satu keputusan.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. Jumlahnya bisa berhingga atau tak berhingga.Hasil dari keputusan yang diambil pada setiap tahap ditransformasikan dari status yang bersangkutan ke status berikutnya pada tahap berikutnya.Ongkos (cost) pada suatu tahap meningkat secara teratur (steadily) dengan bertambahnya jumlah tahapan.Ongkos pada suatu tahap bergantung pada ongkos tahap-tahap yang sudah berjalan dan ongkos pada tahap tersebut.Keputusan terbaik pada suatu tahap bersifat independen terhadap keputusan yang dilakukan pada tahap sebelumnya.Adanya hubungan rekursif yang mengidentifikasikan keputusan terbaik untuk setiap status pada tahap k memberikan keputusan terbaik untuk setiap status pada tahap k + 1.Prinsip optimalitas berlaku pada persoalan tersebut.

Langkah-langkah Pengembangan Algoritma Program Dinamis sebagai berikut :a) Karakteristikkan struktur solusi optimal.b) Definisikan secara rekursif nilai solusi optimal.c) Hitung nilai solusi optimal secara maju atau mundur.d) Konstruksi solusi optimal.

Contoh kasus:Joe tinggal di new York dan akan pergi ke LA. Dia berencana menginap di rumah temannya dalam perjalanan tersebut. Joe punya teman di Columbus, Nashville, Louisville, Kansas, Omaha, Dallas, San Antonio, dan Denver. Joe tahu setelah satu hari perjalanan dia akan mencapai Columbus, Nashville atau Louisville. Setelah perjalanan 2 hari akan mencapai Kansas, Omaha, atau Dallas. Setelah 3 hari perjalanan akan mencapai Denver atau San

Page 5: Metode Greedy & Dynamic Programming

Antonio. Setelah 4 hari akan mencapai LA. Untuk meminimalkan jarak, kemana Joe harus menginap setiap malam dalam perjalanannya ?

Stage 3:Kansas = {New York, Columbus} cost Kansas=1230Omaha= {New York, Columbus} cost Omaha=1340Dallas={New York, Nashville} cost Dallas= 1560

Stage 4:Denver={ New York, Columbus, Kansas} cost Denver=1840San Antonio={ New York, Nashville, Dallas} cost San Antonio=1830

Stage 5:LA={ New York, Columbus, Kansas, Denver } cost LA=2870Jadi jarak optimal yang diperoleh adalah 2870

Kelebihan dan kelemahan metode dynamic programming:Kelebihan:

mengoptimalkan penyelesaian suatu masalah tertentu yang diuraikan menjadi sub-sub masalah yang lebih kecil yang terkait satu sama lain dengan tetap memperhatikan kondisi dan batasan permasalahan tersebut.

Proses pemecahan suatu masalah yang kompleks menjadi sub-sub masalah yang lebih kecil membuat sumber permasalahan dalam rangkaian proses masalah tersebut menjadi lebih jelas untuk diketahui.

Page 6: Metode Greedy & Dynamic Programming

Pendekatan dynamic programming dapat diaplikasikan untuk berbagai macam masalah pemrograman matematik, karena dynamic programming cenderung lebih fleksibel daripada teknik optimasi lain.

Prosedur perhitungan dynamic programming juga memperkenankan bentuk analisis sensitivitas terdapat pada setiap variabel status (state) maupun pada variabel yang ada di masing-masing tahap keputusan (stage).

Dynamic programming dapat menyesuaikan sistematika perhitungannya menurut ukuran masalah yang tidak selalu tetap dengan tetap melakukan perhitungan satu per satu secara lengkap dan menyeluruh.

Kelemahan: Penggunaan dynamic programming jika tidak dilakukan secara tepat, akan

mengakibatkan ketidakefisienan biaya maupun waktu. Karena dalam menggunakan dynamic programming diperlukan keahlian, pengetahuan, dan seni untuk merumuskan suatu masalah yang kompleks, terutama yang berkaitan dengan penetapan fungsi transformasi dari permasalahan tersebut.

CONTOH KASUS:Diberikan sebuah kotak berukuran 15cmx35cm.

15

35

Jenis kotak, ada 4 buah yang akan disusun ke dalam kotak tersebut:4 2

24

Kotak 1 5

2

Kotak2

3

Page 7: Metode Greedy & Dynamic Programming

2 2

4

6

Penyelesaian dengan metode greedy:Kotak 4 dan kotak 1 tersebut disusun seperti di bawah ini:Sehingga diperoleh luas yang dianggap bisa menempati kotak tersebut dengan luas yang optimum.

4 2 4

4

10

Kotak yang telah disusun tersebut dimasukkan ke dalam kota besar yang berukuran 15x35 cm. jumlah kotak yang dimasukkan adalah sebanyak 9 buah, sehingga diperoleh sbb:

10 10 10

Kotak 3

Kotak4

2

2

Page 8: Metode Greedy & Dynamic Programming

Tempat yang kosong masih dapat diisi dengan kotak berukuran 4x2 cm.. jumlah kotak yang dimasukkan adalah sebanyak 14 buah. Sehingga diperoleh:

35

3

12

10 10 10 2 2 1

Dapat dihitung luas dari sisa kotak yang tidak terisi adalah: 35 + 9 + 12 =56cm2

Penyelesaian dengan dynamic programming:Pada metode ini, kotak yang akan diisi dibagi 2 bagian. Sehingga kita akan mengisi kotak tersebut dengan 2 step. Hasilnya menjadi seperti di bawah ini:

8cm

7cm

35 cm

Kemudian dari 4 kotak yang ada dibentuklah susunan kotak yang sesuai sehingga dapat dimasukkan ke dalam kota utama di atas.

Berikut adalah kotak yang sesuai dengan kotak utama (kotak ini dibentuk dari kotak 1 dan kotak 2):

4

2 5

1

3

I

II

Page 9: Metode Greedy & Dynamic Programming

STEP 1: Kotak tersebut kemudian diisi ke dalam kotak utama bagian (I)

8

7

STEP 2: Selanjutnya kita akan mengisi kotak bagian (II). Kembali kita meninjau kotak yang telah disusun, ternyata masih biasa digunakan untuk mengisi kotak bagian (II) ini. Sehingga diperoleh:

8

7

3

Selanjutnya kita meninjau kembali tempat yang masi belum terisi, ternyanya masih ada kotak yang dapat diisi ke dalam, yakni kotak berukuran 4x2 cm. Setelah diisi, kita memperoleh hasil sebagai berikut:

4

3

3

Sisa kotak yang kosong adalah= 4+9=13 cm2

2

Page 10: Metode Greedy & Dynamic Programming

Kesimpulan:

Jika kita membandingkan metode greedy dengan metode dynamic programming, maka yang mendapatkan sisa kotak yang paling minimum adalah metode dynamic programming. Jadi metode yang paling optimal adalah dynamic programming.