Náhodný výběr (Random Shooting)
Princip algoritmu
Tento algoritmus se nesnaží o žádné "chytré" rozhodování. Funguje čistě na principu náhody (metoda Monte Carlo).
- Určíme si počet pokusů (např. 100 nebo 1000 iterací).
- V každém pokusu projdeme seznam předmětů a u každého si "hodíme mincí" (náhodně rozhodneme s pravděpodobností 50:50), zda ho dáme do batohu.
- Zkontrolujeme, zda se vygenerovaná kombinace vejde do batohu.
- Pokud ano a má větší cenu než dosud nejlepší nalezená, uložíme si ji.
Klíčové vlastnosti
- Nejistota: Algoritmus nezaručuje nalezení optimálního řešení. Může se stát, že nejlepší kombinaci prostě "netrefí".
- Rychlost: Velmi rychlý. Počet operací závisí čistě na počtu iterací, který si sami zvolíme.
- Kvalita: Čím více pokusů, tím větší šance na lepší výsledek. U malých problémů (málo předmětů) často najde optimum, u velkých selhává.
- Použití: Hodí se tam, kde je prostor možností tak obrovský, že nelze použít hrubou sílu, a kde stačí "dostatečně dobré" řešení.
Příklad kódu (JavaScript)
javascript
for (let i = 0; i < pocet_iteraci; i++) {
// Vygeneruj náhodnou kombinaci
// Pokud je validní a lepší -> ulož
}