A Greedy Search algoritmus egy olyan problémamegoldó megközelítés, amely minden lépésnél mindig az elérhető legjobb lehetőséget választja anélkül, hogy figyelembe veszi a döntés hosszú távú hatását. Bár nem garantálja a globálisan optimális megoldás megtalálását, ez a módszer gyakran gyorsan működik, és egyszerűen megvalósítható.
Hogyan működik
- Inicializálás: Kezdje üres vagy kezdeti megoldással.
- Helyi optimális választás: Minden lépésben válassza ki a helyileg optimális választást a célfüggvény vagy a meghatározott kritériumok alapján.
- Választás alkalmazása: Alkalmazza az optimális választást az aktuális megoldásra.
- Ismételje meg: Ismételje meg a 2–4. lépéseket, amíg nem lehet jobb helyi választást tenni.
Példa: Knapsack Problem
Tekintsük a Knapsack Problem, ahol van egy hátizsákunk maximális súllyal és egy listánk a súlyokkal és értékekkel. A cél az, hogy olyan elemeket válasszunk ki, amelyek maximalizálják a hátizsák összértékét. A Greedy Search megközelítés erre a problémára az, hogy a tételeket a legmagasabb érték-súly arány alapján választják ki.
Kódpélda C++ nyelven
Ebben a példában a Greedy Search megközelítést használjuk a Knapsack Problem. A cikkeket a csökkenő érték-tömeg arány alapján rendezzük, és a legmagasabb arányú tételeket választjuk ki, amelyek még beleférnek a hátizsák súlyhatárába.