3.6 KiB
3.6 KiB
Ř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 stavuy_{j}
Posloupnost stavů
x_{i} = s_{0}, s_{1}, \dots, s_{t} = y_{j}
- pro přechod mezi jednotlivými
s_{i}
slouží operátoryr_{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
aY
- procházení stromu řešení
- deterministické
- náhodné
- heuristické
Předpoklady
- existuje konečná množina stavů
S = \{s_{i}\}
, ve kterých se může úloha nacházet - existuje alespoň jeden výchozí (počáteční) stav úlohy
s_{0} \in S
- existuje konečná množina cílových (požadovaných) stavů úlohy
G = \{g_{j}\}
, přičemžG \subseteq S
- existuje konečná množina elementárních operátorů
R = \{r_{l}\}
, které převádějí úlohu ze tavus_{p}
do stavus_{q}
Stavový prostor - definován dvojice (S, R)
Konkrétní řešení úlohy
- definováno trojicí
(s_{0}, s_{j}, R_{K_{0}j})
naS
R_{K_{0}j}
- kompoziční operátor pro převod úlohy zs_{0}
dos_{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ý, žes_{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á hloubkud+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