System Init
0%
LOADING_ASSETSv2.0.26
blogs/algoritma-greedy-dalam-ngambil-gorengan
//Khay
Read in English

Algoritma Greedy dalam Ngambil Gorengan

MathAlgorithmFood

Kemaren sore gue lagi nongkrong di warkop sama anak-anak kosan. Pas banget si mang warkop baru aja ngangkat sepiring penuh gorengan campur: bakwan, tempe, tahu isi, sama pisang goreng yang masih panas mengepul.

Kalo lu perhatiin baik-baik, momen berebut gorengan ini sebenernya adalah eksperimen sosial yang sempurna buat ngebuktiin cara kerja Algoritma Greedy.

Dalam ilmu komputer, Algoritma Greedy itu adalah pendekatan di mana lu ngambil pilihan yang paling menguntungkan (local optimum) di setiap langkahnya, dengan harapan pilihan-pilihan itu bakal nuntun lu ke solusi keseluruhan yang paling optimal (global optimum). Intinya, lu serakah. Lu liat untung gede di depan mata, langsung lu sikat tanpa mikir efek jangka panjangnya.

Temen gue, sebut aja si A, adalah penganut kuat algoritma ini. Begitu piring ditaroh, tangan dia langsung nyomot dua bakwan paling gede dan paling garing yang ada di tumpukan atas. Secara sekilas, ini keputusan yang brilian. Dia dapet value maksimal di iterasi pertama. The best local optimum.

Tapi masalahnya, dia lupa kalo kapasitas perut dia (knapsack capacity) itu terbatas, dan dia juga lupa kalo gorengan itu bukan satu-satunya resource yang ada di meja. Pas dia lagi asik ngunyah bakwan kedua, mang warkop ngeluarin sambel kacang spesial yang super enak. Nah, ternyata sambel kacang ini lebih cocok dimakan pake tahu isi, bukan bakwan.

Kapasitas perut si A udah mau penuh karena bakwan itu berat banget ngenyanginnya. Pas dia mau ngambil tahu isi buat dicelupin ke sambel, ternyata tahu isinya udah ludes diambil sama si B yang pake algoritma Dynamic Programming.

Si B ini tipe orang yang sabar. Dia ga langsung nyomot yang paling gede di awal. Dia nge-scan dulu keseluruhan resource yang ada di meja, nginget-nginget jam keluar sambel kacang dari pengalamannya selama ini, terus dia ngekalkulasi kombinasi optimal. Dia milih ngambil tahu isi duluan yang ukurannya lebih kecil, nyisain space di perutnya, dan pas sambelnya keluar, dia dapet kombinasi kenikmatan yang jauh lebih gede (global optimum) dibanding si A.

Ini kelemahan fatal dari Algoritma Greedy. Dia cepet banget buat ngambil keputusan (O(n) atau O(n log n) kalo lu sorting dulu), tapi dia sering banget terjebak di local optimum dan buta sama skenario yang lebih besar.

Di idup nyata, kita sering banget kayak si A. Lu liat lowongan kerja gajinya gede di perusahaan yang toxic, lu langsung sikat (greedy). Pas udah masuk, mental lu ancur dan lu ga punya waktu buat upskilling. Di sisi lain, ada orang yang milih gaji lebih kecil tapi environment kerjanya ngedukung dia buat belajar teknologi baru. Dua tahun kemudian, orang yang kedua ini malah bisa loncat ke perusahaan unicorn dengan gaji tiga kali lipat.

Algoritma Greedy itu ga sepenuhnya salah. Buat masalah-masalah tertentu kayak nyari rute terpendek pake Dijkstra atau ngembaliin duit kembalian pake koin paling gede duluan, dia emang solusi yang paling cepet dan akurat. Tapi buat hal-hal yang kompleks kayak karir, nyari pasangan, atau milih gorengan, lu butuh horizon waktu yang lebih luas.

Jangan gampang silau sama reward instan di depan mata. Kadang lu harus ngelepasin bakwan paling garing hari ini buat dapetin tahu isi plus sambel kacang yang jauh lebih memuaskan nanti.

Pikirin kombinasi optimalnya, atur space lu, dan jangan sampe lu nyesel cuma gara-gara keputusan emosional lima detik.

  • Khay