Sabtu, 03 Desember 2016

ALGORITMA GREEDY




Algoritma Greedy merupakan algoritma yang digunakan untuk memecahkan suatu masalah dengan membuat optimasi disetiap langkah (local optimization) dengan harapan dapat menemukan global optimal (global optimization) dengan waktu yang beralasan. Algortima Greedy  ini berkaitan dengan masalah pengoptimisasian (optimization problem). Dalam Algoritma Greedy ada 2 macam persoalan optimasi : minimasi (minimization) dan maksimasi (maksimization).

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 koin)
     32 = 5 + 5 + 5 + 5 + 10 + 1 + 1    (7 koin)
     32 = 10 + 10 + 10 + 1 + 1        (5 koin)
     … dst       
Minimum: 32 = 25 + 5 + 1 + 1       (4 koin)
Greedy = rakus, tamak, loba, …
Prinsip greedy: “take what you can get now!”.
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 optimm).
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.
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
    Langkah 1: pilih 1 buah koin 25  (Total = 25)
    Langkah 2: pilih 1 buah koin 5    (Total = 25 + 5 = 30)
    Langkah 3: pilih 2 buah koin 1    (Total = 25+5+1+1= 32) 
Solusi: Jumlah koin minimum = 4     (solusi optimal!)
Elemen-elemen algoritma greedy:
    1. Himpunan kandidat, C.
    2. Himpunan solusi, S
    3. Fungsi seleksi (selection function)
    4. Fungsi kelayakan (feasible)
    5. Fungsi obyektif
Dengan kata lain:
Algoritma greedy melibatkan pencarian sebuah himpunan bagian, S, dari himpunan kandidat, C;  yang dalam hal ini, S harus memenuhi beberapa kriteria yang ditentukan, yaitu menyatakan suatu solusi dan S dioptimisasi oleh fungsi obyektif.
Pada masalah penukaran uang:
  • ·        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.
  • ·        Fungsi obyektif: jumlah koin yang digunakan minimum.
Skema umum algoritma greedy:
  • ·        Pada akhir setiap lelaran, solusi yang terbentuk adalah optimum lokal.
  • ·        Pada akhir kalang while-do diperoleh optimum global.
Warning: Optimum global belum tentu merupakan solusi optimum (terbaik), tetapi sub-optimum atau pseudo-optimum.
Alasan:
1.      Algoritma greedy tidak beroperasi secara menyeluruh terhadap semua alternatif solusi yang ada (sebagaimana pada metode exhaustive search). 
2.      Terdapat beberapa fungsi SELEKSI yang berbeda, sehingga kita harus memilih fungsi yang tepat jika kita ingin algoritma menghasilkan solusi optiamal.
Jadi, pada sebagian masalah algoritma greedy tidak selalu berhasil memberikan solusi yang optimal.
Jika jawaban terbaik mutlak tidak diperlukan, maka algoritma greedy sering berguna untuk menghasilkan solusi hampiran (approximation),  daripada menggunakan algoritma yang lebih rumit untuk menghasilkan solusi yang eksak.  Bila algoritma greedy optimum, maka keoptimalannya itu dapat dibuktikan secara matematis.
Contoh:
1.      Masalah penukaran uang
Nilai uang yang ditukar: A
 Himpunan koin (multiset):  {d1, d2, …, dn}.
Himpunan solusi: X = {x1, x2, …, xn},  xi = 1 jika di dipilih, xi = 0 jika di tidak dipilih.


 Penyelesaian dengan algoritma greedy
Strategi greedy:  Pada setiap langkah, pilih koin dengan nilai  terbesar dari himpunan koin yang tersisa.


·        Agar pemilihan koin berikutnya optimal, maka perlu mengurutkan himpunan koin dalam urutan yang menurun (noninceasing order).
·        Jika himpunan koin sudah terurut menurun, maka kompleksitas algoritma greedy = O(n).
·        Sayangnya, algoritma greedy untuk masalah penukaran uang ini tidak selalu menghasilkan solusi optimal (lihat contoh sebelumnya).  


2. Minimisasi Waktu di dalam Sistem (Penjadwalan)

  Persoalan: Sebuah server (dapat berupa processor, pompa, kasir di bank, dll) mempunai n pelanggan (customer, client) yang harus dilayani. Waktu pelayanan untuk setiap pelanggan i adalah ti.

    Minimumkan total waktu di dalam sistem:  
   
    T = ∑ n=i sampai ke n (waktu di dalam sistem)

·         Ekivalen dengan meminimumkan waktu rata-rata pelanggan di dalam sistem.
Contoh 3:  Tiga pelanggan dengan
    t1 = 5,    t2 = 10,     t3 = 3,

Enam urutan pelayanan yang mungkin:
============================================
Urutan        T  
============================================                                                
1, 2, 3:    5 + (5 + 10) + (5 + 10 + 3 ) = 38
1, 3, 2:     5 + (5 + 3) + (5 + 3 + 10) = 31
2, 1, 3:    10 + (10 + 5) + (10 + 5 + 3) = 43
2, 3, 1:    10 + (10 + 3) + (10 + 3 + 5) = 41
3, 1, 2:    3 + (3 + 5) + (3 + 5 + 10) = 29 ← (optimal)
3, 2, 1:    3 + (3 + 10) + (3 + 10 + 5) = 34
Penyelesaian dengan algoritma greedy
Strategi greedy: Pada setiap langkah, pilih pelanggan yang membutuhkan waktu pelayanan terkecil di antara pelanggan lain yang belum dilayani.

·         Agar proses pemilihan pelanggan berikutnya optimal, urutkan pelanggan berdasarkan waktu pelayanan dalam urutan yang menaik.
·         Jika pelanggan sudah terurut, kompleksitas algoritma greedy = O(n).




·         Algoritma greedy untuk penjadwalan pelanggan akan selalu menghasilkan solusi optimum.
·         Teorema. Jika t1t2 ≤ … ≤ tn maka pengurutan  ij = j,  1 ≤ j n      meminimumkan
       

untuk semua kemungkinan permutasi ij.



Penarapan Algoritma Greedy

Penarapan yang akan dibahas yaitu penarapan pada vending machine
Flowchart untuk vending machine ditunjukkan pada Gambar 1


Algoritma adalah metode efektif dari perintah–perintah yang telah didefinisikan dengan baik untuk menghitung sebuah fungsi. Dimulai dari sebuah kondisi awal dan input awal, intruksi–intruksi tersebut menjelaskan sebuah komputasi yang bila dieksekusi atau diproses lewat sejumlah urutan kondisi terbatas dapat terdefinisi dengan baik dan menghasilkan keluaran (output). Dalam hal ini digunakan algoritma Greedy untuk menyelesaikan masalah bertahap (langkah per langkah) dimana pada setiap langkah akan diambil pilihan terbaik (optimum lokal) dengan mengharapkan hasil akhirnya optimum global. Untuk skema umum algoritma Greedy seperti diperlihatkan pada Gambar 2.



Untuk elemen–elemen algoritma Greedy pada vending machine adalah sebagai berikut.
(a) Himpunan kandidat, C. Himpunan kandidat berisi elemen–elemen pembentuk solusi permasalahan. Pada vending machine himpunan kandidatnya adalah himpunan uang logam dengan nilai Rp 100,00; Rp 200,00; Rp 500,00; dan Rp 1.000,00; dan uang kertas dengan nilai Rp 2.000,00; Rp 5.000,00; dan Rp 10.000,00, (b) Himpunan solusi, S. Himpunan solusi berisi kandidat–kandidat terpilih dari solusi permasalahan. Himpunan solusi pada vending machine yaitu memunculkan uang kembalian berupa uang logam yang jumlahnya diminimalkan, (c) Fungsi seleksi (selection function). Fungsi seleksi akan digunakan pada setiap langkah untuk memilih kandidat terbaik dimana kandidat yang sudah dipilih tidak akan dipertimbangkan pada langkah selanjutnya. Fungsi seleksi yang dilakukan vending machine yaitu dengan memilih nilai uang logam terbesar pada himpunan kandidatnya, (d) Fungsi kelayakan (feasible). Fungsi ini digunakan untuk memeriksa apakah suatu kandidat yang dipilih sudah memberikan solusi yang layak, yaitu kandidat tersebut bersama – sama himpunan solusi yang terbentuk tidak melanggar kendala yang ada. Apabila kandidat yang sudah dipilih layak, maka dimasukkan pada kandidat solusi. Jika sebaliknya, maka kandidat tersebut dihapus atau dibuang. Pada vending machine fungsi ini akan memeriksa apakah uang kembalian yang dikeluarkan vending machine tidak melebihi jumlah uang yang harus diterima dan (e) Fungsi obyektif. Fungsi ini akan memaksimalkan atau meminimalkan solusi. Pada permasalahan vending machine fungsi ini akan meminimalkan keluarnya uang logam sebagai uang kembalian.
Skema algoritma Greedy untuk vending machine seperti diperlihatkan pada Gambar 3. Misalkan uang kembalian adalah R






HASIL DAN PEMBAHASAN

Vending machine (mesin penjual otomatis) adalah mesin yang dirancang untuk mengeluarkan barang yang diinginkan secara otomatis tanpa perantara manusia dengan cara memasukkan uang kertas maupun uang logam terlebih dahulu. Program vending machine yang disajikan memiliki kemiripan cara kerja sebagaimana cara kerja dengan vending machine umumnya. Perbedaannya adalah pada uang pengembaliannya.. Uang kembalian yang diperoleh konsumen hanya berupa uang logam saja.
Dalam pembuatan sistem vending machine digunakan Visual Basic dengan menerapkan algoritma Greedy pada proses uang kembalian. Berikut ini tampilan program yang menggunakan Visual Basic. Tampilan awal saat program dijalankan adalah seperti diperlihatkan oleh Gambar 4. Setelah di jalankan maka tampilan halaman utama program vending machine ini seperti ditunjukkan pada Gambar 5.






Tampilan awal saat program vending machine di run



Terima Kasih

Daftar Pustaka
1. https://docs.google.com/presentation/d/11wGEFT8DiW7BmaLT0luH-H46ctPL4oNs2XWgcc_OQHQ/edit#slide=id.g1194021294_2_242
2. http://journal.unnes.ac.id/nju/index.php/sji/article/view/4608



 

Tidak ada komentar:

Posting Komentar