Algoritma Greedy Team Fasilkom
Definisi Algoritma greedy merupakan metode yang paling populer untuk memecahkan persoalan optimasi Persoalan optimasi (optimization problems): persoalan yang menuntut pencarian solusi optimum Solusi optimum (terbaik) adalah solusi yang bernilai minimum atau maksimum dari sekumpulan alternatif solusi yang mungkin.
Definisi Elemen persoalan optimasi: kendala (constraints) fungsi objektif(atau fungsi optiamsi) Solusi yang memenuhi semua kendala disebut solusi layak (feasible solution). Solusi layak yang mengoptimumkan fungsi optimasi disebut solusi optimum.
contoh Memilih beberapa jenis investasi (penanaman modal) Contoh masalah sehari-hari yang menggunakan prinsip greedy: Memilih beberapa jenis investasi (penanaman modal) Mencari jalur tersingkat dari Bandung ke Surabaya Memilih jurusan di Perguruan Tinggi Bermain kartu remi
Penukaran Uang Misal pada suatu negara kita tersedia mata uang : dolar (100 sen), kuarter (25 sen), dim(10 sen), nikel(5 sen) dan peni(1 sen) Masalah : Bagaimana menentukan algoritma untuk memeberikan uang kembalian dari suatu pembayaran di super market dengan menggunakan sejumlah koin yang tersedia sekecil mungkin 100 25 10 5 1
Penukaran Uang Masalah : Ada seorang konsumen yan mempunyai uang kembalian sebesar 2.89 $ (289 sen) berapa coin yang harus di berikan oleh kasir ? Solusi : Kasir semestinya memberikan kembalian dengan 10 coin : 2 $ ,3 kuarter, 1 dim, 4 peni Urutan pemberian adalah di mulai dari yang terbesar 100 25 10 5 1
File Lain
Algoritma Function TukarKoin(n):himp koin /*Buat kembalian n unit dengan kemungkinan jmlh koin paling sedikit kontan C adalah jenis koin*/ Const C={100,25,10,5,1} /*kandidat yg di pilih*/ S atau {} /* S =himp solusi*/ S0 /* s jumlah dari item S*/ While sn do x item terbesar dr C, dengan s+xn if tidak ada item then return “solusi tidak ada” SS {koin bernilai x} ss+x Return S
Algoritma Algoritma ini rakus/tamak karena setiap langkahnya harus memilih koin terbesar yang dapat di temukan, tanpa memikirkan konsekwensi ke depannya.
Karakteristik AG Himpunan kandidat. Himpunan solusi Berisi elemen-elemen pembentuk solusi. Himpunan solusi Berisi kandidat-kandidat yang terpilih sebagai solusi persoalan. Fungsi seleksi (selection function) Memilih kandidat yang paling memungkinkan mencapai solusi optimal. Kandidat yang sudah dipilih pada suatu langkah tidak pernah dipertimbangkan lagi pada langkah selanjutnya. Fungsi kelayakan (feasible) Memeriksa apakah suatu kandidat yang telah dipilih dapat memberikan solusi yang layak, yakni kandidat tersebut bersama-sama dengan himpunan solusi yang sudah terbentuk tidak melanggar kendala (constraints) yang ada. Kandidat yang layak dimasukkan ke dalam himpunan solusi, sedangkan kandidat yang tidak layak dibuang dan tidak pernah dipertimbangkan lagi. Fungsi obyektif, yaitu fungsi yang memaksimumkan atau meminimumkan nilai solusi (misalnya panjang lintasan, keuntungan, dan lain-lain).
Algoritma Greedy procedure greedy(input C: himpunan_kandidat; output S : himpunan_solusi) { menentukan solusi optimum dari persoalan optimasi dengan algoritma greedy Masukan: himpunan kandidat C Keluaran: himpunan solusi S } Deklarasi x : kandidat; Algoritma: S{} { inisialisasi S dengan kosong } while (belum SOLUSI(S)) and (C {} ) do xSELEKSI(C); { pilih sebuah kandidat dari C} C C - {x} { elemen himpunan kandidat berkurang satu } if LAYAK(S {x}) then SS {x} endif endwhile {SOLUSI(S) sudah diperoleh or C = {} }
algoritma greedy tidak beroperasi secara menyeluruh terhadap semua alternatif solusi yang ada (sebagaimana pada metode exhaustive search). pemilihan fungsi SELEKSI: Mungkin saja terdapat beberapa fungsi SELEKSI yang berbeda, sehingga kita harus memilih fungsi yang tepat jika kita ingin algoritma bekerja dengan benar dan menghasilkan solusi yang benar-benar optimum
BUATLAH PROGRAM-NYA MENGGUNAKAN JAVA BUATLAH PROGRAM-NYA MENGGUNAKAN JAVA? Input Jumlah Koin = Nilai Koin [1] = Nilai Koin[2] = …… Nilai Koin [N] = Input Total Uang yang akan DITUKAR : Solusi Greedy Jumlah Koin [1] = Jumlah Koin[2] = …… Jumlah Koin [N] = TOTAL KOIN : TUGAS KELOMPOK min. 3 max 4 orang DAN HITUNG LANGKAHNYA… DIKUMPULKAN MINGGU DEPAN …
Implementasi MST (Minimum Spanning Tree) (Pohon Rentang Minimum) KnapSack MST (Minimum Spanning Tree) (Pohon Rentang Minimum) Algoritma Kruskal Algoritma Prim Shortest Path (Jalur Terpendek) Dijkstra