Anda di halaman 1dari 10

Resume Kuliah Algoritma dan Struktur Data

Niluh Widya Utami H12111266

STRATEGI ALGORITMA: 1. Metode greedy Metode greedy adalah metode yang digunakan untuk memecahkan persoalan optimasi. Ada 2 macam persoalan optimasi, yaitu maksimasi dan minimasi, artinya dengan metode greedy kita bemaksud mencari solusi terbaik, yaitu solusi yang benilai minimum atau maksimum dari sekumpulan alternatif solusi yang ada.

Arti kata greedy sendiri adalah RAKUS, namun maksud dari metode grredy adalah kita melihat solusi optimal lokal, atau solusi optimal yang tampak didepan mata, dengan harapan mendapatkan solusi optimal secara global atau secara keseluruhan.algoritma greedy menyelesaikan masalah langkah perlangkah. Pada setiap langkah perlu diputuskanlangkah terbaik berikutnya sehingga diharapkansetiap langkah yang ditempuh bisa menjadi solusi yang optimal untuk masalah keseluruhan.

a. Prinsip Utama Algoritma Greedy Prinsip utama algoritma greedy adalah take what you can get now . Maksud dari prinsip tersebut adalah sebagai berikut : Pada setiap langkah dalam algoritma greedy, kita ambil keputusan yang paling optimal untuk langkah tersebut tanpa memperhatikan konsekuensi pada langkah selanjutnya. Kita namakan solusi tersebut dengan optimum lokal . Kemudian saat pengambilan nilai optimum lokal pada setiap langkah, diharapkan tercapai optimum global, yaitu tercapainya solusi optimum yang melibatkan keseluruhan langkah dari awal sampai akhir. b. Elemen Algoritma Greedy 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 memeriksa apakah suatu kandidat yang dipilih dapat memberikan solusi yang layak. Maksudnya yaitu apakah kandidat tersebut bersama dengan himpunan solusi yang sudah terbentuk tidak melanggar kendala yang ada. 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 masalah yang diselesaikan dengan metode greedy : 1) Di sebuah negara memiliki 5 satuan koin untuk pembayaran yaitu $2, $5, $10,$15,$20 (himpunan kandidat). Andaikan seseorang memiliki uang sebanyak $12.352 , berapa koin minimal yang ia miliki ? = 617 koin $20. Sisa $12,maka himpunan solusi fisibelnya ($2,$5,$10). = 1 koin $10. Sisa $2, maka solusi sisa $2. = 1 koin$2 Jadi keseluruhan koin dari uang $12.352 itu adalah 619 koin,yang terdiri dari kon $20,$10 dan $2.

Pada masalah penukaran uang: Himpunan kandidat: himpunan koin yang merepresentasikan nilai $2, $5, $10,$15,$20 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. 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

7=5+1+1 (3koin) alternatif solusi 7=4+3 (2koin)

pada contoh diatas jelas terlihat bahwa metode greedy gagal memberikan solusi optimal. Contoh Kasus lain yang menggunakan 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 bangunan 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 Dynamic Programming Dynamic programming mirip seperti metode divide-and-conquer yang menyelesaikan suatu problem dengan mengkombinasikan solusi menjadi subproblem. Divide-and-conquer membagi problem menjadi subproblem yang independen. kemudian menyelesaikan subproblem secara rekursif dan mengkombinasikan solusi tersebut untuk menyelesaikan problem utama . Sedangkan dynamic programming cocok digunakan ketika subproblem tidak indepen-den, jadi ketika subproblem terbagi menjadi subsubproblem.

Dynamic programming biasanya digunakan untuk masalah optimisasi. Dimana suatu permasalahan memiliki banyak solusi. Setiap solusi memiliki nilai masing-masing. Dan ingin ditemukan solusi dengan nilai yang optimum (maksimal atau mininal).

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

Aplikasi model dynamic programming dalam memecahkan masalah stagecoach(rute jalan) ditunjukkan pada contoh berikut :

Misalkan seseorang ingin menentukan waktu tercepat dari Jakarta menuju Malang. Jalur dan waktu perjalanan (menit) ditunjukkan pada gambar 2.4 berikut :

STEP 1 STEP 2

STEP 1 Dist 7(Malang) = 5 (semarang) = 380 menit 6 (yogya) = 300 menit

STEP 2 Dist 6(yogya) = 2 (cirebon) = 600 menit 3 (purwekerto) = 500 menit 4 (bandung) = 840 menit

STEP 3 Dist 3 (purwekerto) = 1 (jakarta) = 860 menit

Jadi rute dengan waktu tempuh paling sedikit dari jakarta ke malang yaitu Jakarta-Purwekerto-Yogya-Malang dengan waktu tempuh 860 menit

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 .