Přidání minimax algoritmu do UIR a úprava souborů
This commit is contained in:
parent
adf0e32b33
commit
1b3b69906c
2 changed files with 20 additions and 91 deletions
|
@ -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
|
|
|
@ -73,3 +73,23 @@
|
||||||
- optimální
|
- optimální
|
||||||
- časová složitost: $O((b^*)^d)$, exponenciálné v délce řešení $d$
|
- č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
|
- 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})$
|
||||||
|
|
Loading…
Reference in a new issue