Hladový algoritmus: Porovnání verzí
Smazaný obsah Přidaný obsah
upřesnění |
m Oprava odkazu |
||
Řádek 1: | Řádek 1: | ||
'''Hladový algoritmus''' ({{Vjazyce2|en|'''greedy search'''}}) je jedním z možných způsobů řešení [[optimalizace|optimalizačních]] úloh v [[ |
'''Hladový algoritmus''' ({{Vjazyce2|en|'''greedy search'''}}) je jedním z možných způsobů řešení [[optimalizace (matematika)|optimalizačních]] úloh v [[Matematika|matematice]] a [[Informatika (počítačová věda)|informatice]]. V každém svém kroku vybírá ''lokální'' minimum, přičemž existuje šance, že takto nalezne minimum ''globální''. Hladový algoritmus se uplatní v případě, kdy je třeba z [[množina|množiny]] určitých objektů vybrat takovou podmnožinu, která splňuje jistou předem danou vlastnost a navíc má minimální (případně maximální) ohodnocení. ''Ohodnocení'' je obvykle [[reálné číslo]] ''w'', přiřazené každému objektu dané množiny, ohodnocení množiny ''A'' je definováno jako <math>\mathit{w(A)} = \sum_{a \in A} w(a)</math>. |
||
== Algoritmus == |
== Algoritmus == |
Verze z 5. 1. 2009, 11:38
Hladový algoritmus (anglicky greedy search) je jedním z možných způsobů řešení optimalizačních úloh v matematice a informatice. V každém svém kroku vybírá lokální minimum, přičemž existuje šance, že takto nalezne minimum globální. Hladový algoritmus se uplatní v případě, kdy je třeba z množiny určitých objektů vybrat takovou podmnožinu, která splňuje jistou předem danou vlastnost a navíc má minimální (případně maximální) ohodnocení. Ohodnocení je obvykle reálné číslo w, přiřazené každému objektu dané množiny, ohodnocení množiny A je definováno jako .
Algoritmus
- všechny prvky původní množiny setřídíme do posloupnosti podle rostoucí nebo klesající váhy podle toho, zda chceme výsledek minimalizovat nebo maximalizovat
- položíme
- postupně procházíme posloupnost a vytváříme množiny
- splňuje-li množina danou podmínku, položíme
- jinak
- projdeme-li takto celou původní množinu, obsahuje množina prvky, splňující danou vlastnost, a to takové, že součet jejich ohodnocení je minimální (maximální)
Příklady
Hladové algoritmy se uplatňují například v následujích úlohách:
- hledání minimální kostry grafu — Kruskalův algoritmus, Jarníkův algoritmus a Borůvkův algoritmus
- problém obchodního cestujícího
- problém batohu: máme dáno n předmětů. Pro každý předmět máme dánu hmotnost W[i] a cenu P[i]. Je dána kapacita C. Úkolem je najít takovou podmnožinu množiny úkolů, pro niž platí a zároveň je celková cena batohu je co největší (x je vektor; je-li x[i] = 1, pak i-tý předmět do dané podmnožiny patří, je-li x[i] = 0, pak do ní nepatří). Pro řešení této úlohy pomocí hladového algoritmu stačí setřídit předměty podle rostoucího poměru cena/hmotnost, podmínka na množinu je, že součet hmotností předmětů musí být menší nebo roven C.