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).
( 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).
untuk semua kemungkinan permutasi ij.
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).
·
Teorema. Jika t1 ≤ t2
≤ … ≤ 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
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