3.8 KiB
3.8 KiB
Neinformované metody
Tyto metody nemají žádné informace o pozici cíle a znají pouze počáteční stav, cílový stav a přechodovou funkci.
Složitost záleží na:
b
- faktor větveníd
- hloubka cílem
- maximální hloubka větve
Prohledávání do hloubky (DFS)
- prohledá vždy nejlevější a nejhlubší neexpandovaný uzel
- vlastnosti
- neúplný (nekonečná větev, cykly)
- není optimální
- časová složitost
O(b^m)
- prostorová složitost
O(bm)
, lineární
- možné přidat limit
- po dané hloubce nepokračuje dále
- řeší problém nekonečné větve
Prohledávání do šířky (BFS)
- prohledá vždy nejlevější neexpandovaný uzel s nejmenší hloubkou
- vlastnosti
- úplný (pro konečné b)
- optimální podle délky cesty, neoptimální podle obecné ceny
- časová složitost
O(b^{d+1})
- prostorová složitost
O(b^{d+1})
(každý uzel v paměti)
Prohledávání s postupným prohlubováním (Iterating deepening DFS)
- prohledávání do hloubky s postupně se zvyšující limitem
- procházíme jako DFS, ale jen do hloubky dané limitem
- vlastnosti
- úplný (pro konečné b)
- optimální (pro
g(n)
rovnoměrně neklesající funkce hloubky) - časová složitost:
O(b^d)
- paměťová složitost:
O(bd)
- kombinace výhod DFS a BFS
- nízké paměťové nároky
- optimálnost, úplnost
Informované metody
Heuristické hledání nejlepší cesty (Best-first Search)
- použití ohodnocovací funkce
f(n)
pro každý uzel- výpočet jeho přínosu
- seznam uzlů udržujeme uspořádaný (vzestupně) vzhledem k
f(n)
- použití heuristické funkce
h(n)
pro každý uzeů- odhad vzdálenosti daného uzlu od cíle
- čím menší
h(n)
, tím blíže k cíli,h(\text{Goal}) = 0
Hladové heuristické hledání (Greedy Best-first Search)
f(n) = h(n)
- např. vzdálenost vzdušnou čarou
- v každém kroku expanduji prvně uzel, který se zdá být nejblíže k cíli
- vlastnosti
- obecně neúplný (nekonečný prostor, cykly)
- není optimální
- časová složitost:
O(b^m)
, záleží na funkcih
- paměťová složitost:
O(b^m)
, každý uzel je v paměti
Algoritmus A*
- ohodnocovací funkce - kombinace
g(n)
ah(n)
f(n) = g(n) + h(n)
g(n)
- cena cesty don
h(n)
- odhad cesty zn
do cílef(n)
- odhad ceny nejlevnější cesty, která vede přesn
- A* algoritmus vyžaduje tzv. přípustnou heuristiku
0 \leq h(n) \leq h^*(n)
, kdeh^*(n)
je skutečná cena cesty zn
do cíle- odhad (např. přímá vzdálenost) musí být vždy menší nebo roven ceně libovolné možné cesty do cíle
- expanduje uzly podle
f(n) = g(n) + h(n)
- expanduje všechny uzly s
f(n) < C^*
- expanduje některé uzly s
f(n) = C^*
- neexpanduje žádné uzly s
f(n) > C^*
- expanduje všechny uzly s
- vlastnosti
- úplný (pokud není nekonečno uzlů s
f < C^*
) - optimální
- časová složitost:
O((b^*)^d)
, exponenciálné v délce řešeníd
- paměťová složitost:
O((b^*)^d)
, každý uzel v paměti
- úplný (pokud není nekonečno uzlů s
Minimax
- principem algoritmu je procházení herního stromu a snaha o minimalizaci maximálních možných ztrát
b
- větvící faktorm
- hloubka
- zjišťuje se nejlepší tah proti nejlepšímu tahu protivníka
- vlastnosti
- úplný pouze pro konečné stromy
- optimální proti optimálnímu oponentovi
- časová složitost:
O(b^m)
- prostorová složitost:
O(bm)
, prohledávání do hloubky
Alfa-Beta prořezávání
- odřízne expanzi některých uzlů
- jedná se o efektivnější variantu minimaxu
- nezaručuje však efektivitu
- vlastnosti
- prořezávání neovlivní výsledek - stále stejný
- dobré uspořádání tahů ovlivní efektivitu
- nejlepší uspořádání - čas. složitost
O(b^{m/2})