Přidání minimax algoritmu do UIR a úprava souborů

This commit is contained in:
Filip Znachor 2024-05-14 16:13:00 +02:00
parent adf0e32b33
commit 1b3b69906c
2 changed files with 20 additions and 91 deletions

View file

@ -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

View file

@ -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})$