JURUSAN MATEMATIKA FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS HASANUDDIN 2012/2013
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)
- 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 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 Objektif Fungsi 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}
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 dalam artian Himpunan solusi feasibel untuk 7 adalah {1, 3, 4, 5}
alternatif solusi 7=4+3 (2koin) Pada contoh diatas jelas terlihat bahwa metode greedy gagal memberikan solusi optimal.
Skema Umum :
function greedy( input C: himpunan_kandidat ) himpunan_kandidat { Mengembalikan solusi dari persoalan optimasi dengan algoritma greedy Masukan: himpunan kandidat C Keluaran: himpunan solusi yang bertipe himpunan_kandidat } Deklarasi x : kandidat S : himpunan_kandidat Algoritma : S {} { inisialisasi S dengan kosong } while (not SOLUSI(S)) and (C {} ) do x SELEKSI(C) { pilih sebuah kandidat dari C} C C - {x} { elemen himpunan kandidat berkurang satu } if LAYAK(S {x}) then S S {x} endif endwhile {SOLUSI(S) or C = {} } if SOLUSI(S) then return S else write (tidak ada solusi) endif
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) ENDIF REPEAT RETURN (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 0 N = 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 > 0 Y=1>0 FEASIBLE (solusi, x) Solusi {{2,1),(3,2),(7,1)} N=4:x=1 >0 Y =0>0 TIDAK FEASIBLE Solusi {(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 maslah, antara lain adalah : Optimal Storage on Tapes Problem Kanpsack Problem Minimum Spanning Tree Problem Shortest Path Problem
1. 2. 3. 4.
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.
7 2 2 4 1 3 4 6 2 6 3 1 5 4 7 3 3 5 4 6 3 9 4
1 0
1 8 3
3 4
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.
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).
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.