diff --git a/KIV UIR/02. Řešení úloh.md b/KIV UIR/02. Řešení úloh.md deleted file mode 100644 index 765690b..0000000 --- a/KIV UIR/02. Řešení úloh.md +++ /dev/null @@ -1,91 +0,0 @@ -# Řešení úloh - -**Úloha** -- dvě množina stavů - - $X = \{x_{1}, x_{2}, \dots, x_{k}\}$ ... množina výchozích stavů - - $Y = \{y_{1}, y_{2}, \dots, y_{m}\}$ ... množina cílových stavů -- zobrazení $X \to Y$ - -**Řešením úlohy** -- postup (posloupnost operací), kterým převedeme úlohu z některého výchozího stavu $x_{i}$ do definovaného cílového stavu $y_{j}$ - -**Posloupnost stavů** -- $x_{i} = s_{0}, s_{1}, \dots, s_{t} = y_{j}$ -- pro přechod mezi jednotlivými $s_{i}$ slouží operátory $r_{i}$ popisující elementární operace - -**Operátory** -- $\text{R} = \{r_{1}, r_{2}, \dots, r_{l}\}$ -- úlohu vyjádříme jako $x_{i} \to^{R_{Kij}} y_{j}$ - -**Definice úlohy** -- trojice $(X, Y, R)$ -- vždy známe dvě složky a třetí určujeme - - $(X, ?, R)$ ... deduktivní - - $(?, Y, R)$ ... abduktivní - - $(X, Y, ?)$ ... induktivní - -## Hledání řešení úlohy - -Hledáme takové sestavení operátorů $R$, které vyhovuje zadaným množinám stavů $X$ a $Y$ a je v nějakém (obvykle daném) smyslu optimální. - -**Postup** -- metodou pokusů a omylů vytváříme strom řešení úlohy -- současným prohledáváním hledáme takový kompoziční operátor $R_{Kij}$ (sestavení operátorů), který vyhovuje množinám stavů $X$ a $Y$ -+ procházení stromu řešení - - deterministické - - náhodné - - heuristické - -**Předpoklady** -1. existuje konečná **množina stavů** $S = \{s_{i}\}$, ve kterých se může úloha nacházet -2. existuje alespoň jeden **výchozí** (**počáteční**) **stav** úlohy $s_{0} \in S$ -3. existuje konečná množina **cílových** (**požadovaných**) **stavů** úlohy $G = \{g_{j}\}$, přičemž $G \subseteq S$ -4. existuje konečná množina **elementárních operátorů** $R = \{r_{l}\}$, které převádějí úlohu ze tavu $s_{p}$ do stavu $s_{q}$ - -**Stavový prostor** - definován dvojice $(S, R)$ - -**Konkrétní řešení úlohy** -- definováno trojicí $(s_{0}, s_{j}, R_{K_{0}j})$ na $S$ -- $R_{K_{0}j}$ - kompoziční operátor pro převod úlohy z $s_{0}$ do $s_{j} = g_{_{k}}$ - -**Řešení úlohy ve stavovém prostoru** -- kompoziční operátor $R_{K_{0}j} = r_{1}r_{2}r_{3}\dots r_{r-1}r_{r}$ takový, že - - $s_{1} \leftarrow r_{1} (s_{0})$ - - $s_{2} \leftarrow r_{1} (s_{1}) = r_{2}(r_{1}(s_{0}))$ - - ... - - $s_{r} \leftarrow r_{r} (s_{r-1}) = r_{r}(r_{r-1}(\dots r_{1}(s_{0}))$ - -## Reprezentace úlohy stromovým grafem - -**Pojmy** -- **uzly grafu** - stavy úlohy -- **hrany grafu** - přechody mezi stavy -- **bezprostřední následovník** - uzly, které mají stejného rodiče -- **expanze uzlu** - nalezení všech bezprostředních následovníků uzlu -- **hloubka uzlu** - počet hran do něj vedoucích z uzlu $s_{0}$ - -**Strom řešení úlohy** -- jediný uzel bez bezprostředního předchůdce - **kořen** -- u každého uzlu určujeme rekurzivně jeho hloubku - - kořen - 0 - - následovník uzlu s hloubkou $d$ má hloubku $d+1$ -- uzly bez bezprostředního následovníka jsou - - cílovými stavy úlohy - - stavy bez aplikovatelných operátorů - - stavy, o kterých jsme rozhodli, že je nemá smysl rozvíjet -- orientovaná hrana - přechod ze starého do nového stavu (aplikace operátoru) - -**Nalezení řešení úlohy** -- nalezení cesty spojující kořen s listem, který reprezentuje cílový stav úlohy - -## Produkční systém - -**Složky** -- **databáze úlohy** - fakta -- **báze znalostí** - produkční pravidla - - podmínka -> akce -- **řídíci mechanizmus** - - provádí volbu, které pravidlo bude použito - - vybírá fakta z databáze, která budou dosazena do podmínky - - ukončuje výpočet, pokud je splněna cílová podmínka -- **množina cílů**, které mají být splněny diff --git a/KIV UIR/03. Neinformované a informované metody.md b/KIV UIR/03. Neinformované a informované metody.md index c521412..7014983 100644 --- a/KIV UIR/03. Neinformované a informované metody.md +++ b/KIV UIR/03. Neinformované a informované metody.md @@ -73,3 +73,23 @@ - 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})$