GREEDY BEST-FIRST SEARCH
1.
Greedy Best-First Search
Algoritma Greedy merupakan kan bagian bagian dari dari metode metode heuristic Greedy Best-Fir Best-First st Search Search merupa dalam algoritma algoritma pencarian. pencarian. Algoritma Algoritma greedy merupakan merupakan metode yang paling populer populer untuk untuk memecahkan memecahkan persoalan persoalan optimasi. Dalam mencari mencari sebuah sebuah solusi solusi (optimasi), algoritma greedy hanya menggunakan dua macam persoalan optimasi, yaitu maksimasi dan minimasi. Algoritma greedy akan membentuk solusi langkah per per langka langkah. h. Pada Pada setiap setiap langk langkah, ah, harus harus dibuat dibuat keputu keputusan san yang yang terbaik terbaik dalam dalam menentukan pilihan. Oleh karena itu, pada setiap langkah : –
Men Mengamb gambil il pilih ilihan an yang ang terb terbai aik k yang yang dapat apat diper iperol oleh eh saat saat itu itu tanp tanpaa memperhatikan konsekuensi konsekuensi ke depan (prinsip “take what you can get now !”)
–
Berh Berhara arap p bahw bahwaa deng dengan an memili memilih h opti optimu mum m loka lokall pada pada setiap setiap lang langka kah h akan akan berakhir dengan optimum global.
Skema umum algoritma greedy : 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 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
Elemen – elemen pada algoritma greedy adalah himpunan kandidat C, himpunan solusi S, fungsi seleksi ( selection function), fungsi kelayakan ( feasible ), dan fungsi obyektif. Sebagai contoh, algoritma greedy dapat diimplementasikan pada mesin penukaran uang. Misalnya koin yang ingin ditukar, A = 32. Sedangkan pecahan yang tersedia 1, 5, 10, 15, dan 25. Strategi greedy yang digunakan adalah pada setiap langkah, pilihlah koin dengan nilai sebesar mungkin dari himpunan koin yang tersisa dengan syarat (kendala) tidak melebihi nilai uang yang ditukarkan sehingga didapatkan : •
Langkah 1 : pilih satu buah koin 25 (Total : 25)
•
Langkah 2 : pilih satu buah koin 5 (Total : 25 + 5 = 30)
•
Langkah 3 : pilih dua buah koin 1 (Total : 25 + 5 + 1 + 1 = 32)
Sehingga didapatkan jumlah koin minimumnya ada empat. Solusi ini merupakan solusi optimal untuk penukaran koin tersebut. Pada masalah penukaran uang ini, elemen – elemen yang terlibat adalah : •
Himpunan kandidat: himpunan koin yang merepresentasikan nilai 1, 5, 10, 25, 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.
•
2.
Fungsi obyektif: jumlah koin yang digunakan minimum.
Studi Kasus
Source Code import java.io.DataInputStream; class algoritmaGreedy { public int i,j,k; algoritmaGreedy(){ } // method untuk proses algoritma greedy
void Greedy(int koin[], int hasil[],int jum[], int uang, int i) { int s [] = new int[uang]; while(jum[i] < uang) { k=(int)(Math.random()*4); s[hasil[i]] = koin[k]; if((jum[i] + s[hasil[i]]) <= uang) System.out.print(s[hasil[i]]+" "); jum[i]+=s[hasil[i]]; hasil[i]+=1; } System.out.print("}"); if (jum[i] == uang) System.out.println(" = "+hasil[i]+" koin"); else System.out.println(" = Tidak ada solusi"); } // method sorting void sorting(int data[], int n) { for(i=0;i
sorting(bin,bin.length); k=0; for(i=0;i
Output Program