Anda di halaman 1dari 18

TUGAS INDIVIDU ALGORITMA DAN STRUKTUR DATA

RESUME METODE GREEDY DAN DYNAMIC

PROGRAMING

NAMA : HARDIANTI HAFID NIM: H12111260

PRODI STATISIKA JURUSAN MATEMATIKA FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS HASANUDDIN 2012

A. Algoritma Greedy Algoritma menyelesaikan greedy merupakan salah satu algoritma termasuk yang dapat

bermacam-macam

permasalahan

permasalahan

mengoptimalkan (minimum atau maksimum) hasil yang didapat. Algoritma greedy menerapkan metode pencarian terkontrol dengan melakukan pilihan yang memberikan hasil optimal sementara. Memilih nilai optimal (maksimum atau minimum) dari sekumpulan pilihan merupakan konsep dasar dari algoritma greedy. 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 Minimum: 32 = 25 + 5 + 1 + 1 (4 koin) (32 koin) (7 koin) (5 koin)

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: 1. mengambil pilihan yang terbaik yang dapat diperoleh pada saat itu tanpa memperhatikan konsekuensi ke depan (prinsiptake what you can get now!) 2. berharap bahwa dengan memilih optimum lokal pada setiap langkah akan berakhir dengan optimum global. Kelebihan utama dari algoritma greedy adalah : Mudah diimplementasikan, algoritma greedy sangat mudah untuk diimplementasikan pada persoalan-persoalan yang ada. Efisien, algoritma greedy merupakan algoritma yang sangat efisien karena algoritma ini selalu berusaha memilih hasil optimal. 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 Langkah1: pilih 1 buah koin 25 (Total = 25) Langkah2: pilih 1 buah koin 5 (Total = 25 + 5 = 30) Langkah3: pilih 2 buah koin 1 (Total = 25+5+1+1= 32) Solusi: Jumlah koin minimum = 4 (solusi optimal!)

Contoh: Dengan menggunakan metode greedy, memilih dari 4 bangun yang disediakan 35 cm

isi bangun berikut dengan

15 cm

Luas Bangun A= 15 cm x 35 cm = 525 cm2 4 bangun yang akan dimasukkan yaitu:

Bangun I=

Luas Bangun= 12 cm

Bangun II= Luas Bangun=14 cm

Bangun III=

Luas Bangun=8 cm

Bangu IV=

Luas Bangun= 16

Dengan Metode Greedy : Ambil bangun yang memiliki luas yang paling besar yaitu bangun IV agar solusi menjadi optimum yaitu memiliki sisa paling kecil. [ ] = 32 cm2

32 cm x 16 cm = 512 cm2 525cm2 512 cm2= 13 cm2 Sisa 13 cm [ ] = 1 cm

Langkah-langkah Greedy: 1. Menggabungkan 2 bangun III dan 2 bangun IV sehingga tampak seperti di bawah ini

2.

Menyusun bangun tersebut menjadi beberapa bagian, sehingga tampak seperti di bawah ini

3. Menambahkan beberapa bangun pada bagian yag kosong untuk meminimalisasikan sisa.Sehingga tampak seperti di bawah ini

4. Membatasi bagian yang kosong untuk menghitung sisa sehingga tampak seperti gambar di bawah ini.

5. Menghitung sisa bangun yaitu A= 1 x 35 = 35 B= 1 x 12 = 12 C= 3 x 2 = 6

Jumlah sisa= Luas A + Luas B + Luas C = 35 + 12 + 6 = 53 cm Jadi sisa bangun adalah 53 cm dari luas bangun 525 cm dengan menggabungkan 43 bangun

Metode Greedy ini digunakan untuk memperoleh solusi yang optimal dari suatu masalah yang mempunyai 2 indikator yaitu: adanya fungsi tujuan (Constrain). PROCEDURE GREEDY (A,n) Solusi FOR I X 0 (solusi awal) & pembatas

1 TO n DO SELECT(A)

IF FEASIBLE (Solusi, x) THEN Solusi ENDIF REPEAT RETURN (Solusi) END GREEDY Keterangan : A(1:n) mengandung n input data. FEASIBLE merupakan fungsi yang bernilai boolean (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 : UNION (solusi, x)

Solusi

N = 1 : x=2 > 0 Y=1 > 0 FEASIBLE (solusi, x) Solusi {(2,1)}

N = 2 : x=3 > 0

Y=2 > 0 Solusi

FEASIBLE (solusi, x) {(2,1),{3,2)}

N = 3 : x=7 > 0

Y=1>0 Solusi

FEASIBLE (solusi, x) {{2,1),(3,2),(7,1)}

N=4:x=1>0 Y=0>0 Solusi TIDAK FEASIBLE {(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 masalah, antara lain adalah : 1. Optimal Storage on Tapes Problem 2. Kanpsack Problem 3. Minimum Spanning Tree Problem 4. Shortest Path Problem B. Dynamic Programming Dynamic Programming adalah prosedur matematis yang terutama dirancang untuk memperbaiki efisiensi perhitungan masalah pemrograman matematis tertentu dengan menguraikannya menjadi bagian-bagian masalah yang lebih kecil. Sehingga program Dinamis (dynamic programming): o metode pemecahan masalah dengan cara menguraikan solusi menjadi sekumpulan tahapan (stage)

sedemikian sehingga solusi dari persoalan dapat dipandang dari serangkaian keputusan yang saling berkaitan.

Istilah program dinamis muncul karena perhitungan solusi menggunakan tabeltabel. Dynamic programming sebagai suatu teknik optimasi memiliki beberapa kelebihan, diantaranya : 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. 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. Disamping memiliki kelebihan, dynamic programming juga memiliki beberapa kekurangan, diantaranya : 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. Dynamic programming tidak memiliki suatu bentuk formulasi matematik yang baku untuk digunakan secara konsekuen, sehingga perhitungan untuk

menghasilkan keputusan optimal yang dilakukan terbatas pada kondisi tertentu.

Hambatan

terbesar

pada

dynamic

programming

adalah

masalah

dimensionalitas, yaitu masalah dimana peningkatan variabel keadaan yang digunakan dalam perhitungan pemrograman dinamis akan menambah beban memori komputer serta menambah lama waktu perhitungan. Karakteristik penyelesaian persoalan dengan Program Dinamis: terdapat sejumlah berhingga pilihan yang mungkin, solusi pada setiap tahap dibangun dari hasil solusi tahap sebelumnya, kita menggunakan persyaratan optimasi dan kendala untuk membatasi sejumlah pilihan yang harus dipertimbangkan pada suatu tahap. Perbedaan Algoritma Greedy dengan Program Dinamis: Greedy: hanya satu rangkaian keputusan yang dihasilkan Program dinamis: lebih dari satu rangkaian keputusan yang

dipertimbangkan.

Tinjau graf di bawah ini. Kita ingin menemukan lintasan terpendek dari 1 ke 10.
7 2 2 6 4 1 3 6 2 6 3 1 5 4 7 3 3 9 4
10

5 4 3 4

1 8 3

3 4

Greedy: 1 2 6 9 10 dengan cost = 2 + 4 + 3 + 4 = 13

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. ongkos pada tahap k +1 = (ongkos yang dihasilkan pada tahap k ) + (ongkos dari tahap k ke tahap k + 1)

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.

V1

V V V Graf multitahap (multistage graph). Tiap simpul diV dalam graf tersebut
2 3 4 5

menyatakan status, sedangkan V1, V2, menyatakan tahap.


2 9 6 3 7 1
10 12

4 8
11

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.

Lintasan Terpendek (Shortest Path)

Tentukan lintasan terpendek dari simpul 1 ke simpul 10:


7 2 2 6 4 1 3 6 2 6 3 1 5 4 7 3 3 9 4
10

5 4 3 4

1 8 3

3 4

Penyelesaian dengan Program Dinamis Mundur Misalkan x1, x2, , x4 adalah simpul-simpul yang dikunjungi pada tahap k (k = 1, 2, 3, 4). Maka rute yang dilalui adalah yang dalam hal ini x1 = 1. Pada persoalan ini,

x1

x2

x3

x4

10 ,

Tahap (k) adalah proses memilih simpul tujuan berikutnya (ada 4 tahap). Status (s) yang berhubungan dengan masing-masing tahap adalah simpulsimpul di dalam graf. Dengan ukuran bangun yang sama seperti pada contoh metode greedy sebelumnya, gunakan metode dynamic programming untuk menyelesaikan soal tersebut. Isi bangun berikut dengan memilih dari 4 bangun yang disediakan 35 cm

15 cm

Luas Bangun A= 15 cm x 35 cm = 525 cm2

4 bangun yang akan dimasukkan yaitu:

Bangun I=

Luas Bangun= 12 cm

Bangun II= Luas Bangun=14 cm

Bangun III=

Luas Bangun=8 cm

Bangun IV=

Luas Bangun= 16

Dengan Metode Dynamic Programming : Mengoptimalkan penyelesaian suatu masalah tertentu yang diuraikan menjadi bagian-bagian lebih kecil yang terkait satu sama lain.Langkah-langkahnya: 1. Membagi 4 bangun utama (A) seperti yang ditunjukkan seperti di bawah ini:

2. Untuk mengisi kotak bagian atas yaitu dengan meggabungkan bangun III dan IV Sehingga terbentuk:

3. Menyusun bangun tersebut pada bagian atas

4. Mengisi bagian kosog yang ada pada bagian atas dengan bangun III.

5. Mengisi bangun kosong bagian bawah dengan meggabungkan banggun III dan IV yaitu:

6. Menyusun beberapa banggun yang telah digabungkan tadi , sehingga terbentuk

7. Mengisi bagian kosong dengan satu bangun III yaitu:

8. Memberi tanda pada bagian yang kosong untuk mempermudah dalam perhitungan sisa.

9. Menghitung sisa yaitu Luas Bangun A + Luas Bangun B + Luas Bangun C = 1 x 35 + 2 x 2 + 1 x 14 = 53 cm

Jadi sisa bangun adalah 53 cm dari luas bangun utama yaitu 525 cm dengan menggunakan 41 bangun lebih efektif dari pada dynamic programming.