Algoritmus Greedy Search je přístup k řešení problémů, který vždy v každém kroku vybere nejlepší dostupnou možnost, aniž by zvažoval dlouhodobý dopad rozhodnutí. I když nezaručuje nalezení globálně optimálního řešení, tato metoda často funguje rychle a snadno se implementuje.
Jak to funguje
- Inicializace: Začněte s prázdným nebo počátečním řešením.
- Místní optimální volba: V každém kroku vyberte lokálně optimální volbu na základě cílové funkce nebo definovaných kritérií.
- Použít volbu: Aplikujte optimální volbu na aktuální řešení.
- Opakujte: Opakujte kroky 2 až 4, dokud nebude možné provést lepší místní volbu.
Příklad: Knapsack Problem
Vezměme si Knapsack Problem, kde máme batoh s maximální hmotností a seznam položek s hmotností a hodnotami. Cílem je vybrat položky tak, abyste maximalizovali celkovou hodnotu v batohu. Přístup Greedy Search pro tento problém spočívá ve výběru položek na základě nejvyššího poměru hodnoty k hmotnosti.
Příklad kódu v C++
V tomto příkladu používáme přístup Greedy Search k vyřešení Knapsack Problem. Položky třídíme na základě sestupného poměru hodnoty k hmotnosti a vybíráme položky s nejvyšším poměrem, které se ještě vejdou do váhového limitu batohu.