FAV-ZCU/KIV UIR/03. Neinformované a informované metody.md

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íle
  • m - 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 funkci h
    • paměťová složitost: O(b^m), každý uzel je v paměti

Algoritmus A*

  • ohodnocovací funkce - kombinace g(n) a h(n)
    • f(n) = g(n) + h(n)
    • g(n) - cena cesty do n
    • h(n) - odhad cesty z n do cíle
    • f(n) - odhad ceny nejlevnější cesty, která vede přes n
  • A* algoritmus vyžaduje tzv. přípustnou heuristiku
    • 0 \leq h(n) \leq h^*(n), kde h^*(n) je skutečná cena cesty z n 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^*
  • 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

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í faktor
    • m - 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})