Toto je starší verze dokumentu!
Metódy riešenia úloh založené na prehľadávaní stavového priestoru:
Stavový priestor je definovaný dvojicou (S,0):
S - množina všetkých stavov úlohy
Úloha je definovaná dvojicou (s0, G):
Riešenie úlohy - postupnosť operátorov
Príklady úloh: úloha 2 džbánov, hlavolam 8, úloha N dám, úloha najkratšej cesty, úloha obchodného cestujúceho
Hodnotiace kritériá:
úplnosť - nájde metóda riešenie (ak existuje)?
časová náročnosť
pamäťová náročnosť
optimálnosť - nájde metóda najlepšie riešenie?
2 skupiny - neinformované a informované metódy
Metóda slepého prehľadávania do šírky (BFS):
Zostroj frontu OPEN (bude obsahovať všetky uzly určené k expanzii) a umiestni do nej počiatočný uzol.
Ak je fronta OPEN prázdna, úloha nemá riešenie a ukončí sa prehľadávanie ako neúspešné. Inak pokračuj.
Vyber z čela fronty OPEN prvý uzel.
Ak je vybraný uzol cieľový, ukonči prehľadávanie ako úspešné a vráť cestu od koreňového uzlu k cieľovému (vracia se postupnosť stavov, alebo operátorov). Inak pokračuj.
Vybraný uzol expanduj, všetkých jeho bezprostredných naslednovníkov umiestni do fronty OPEN a vráť sa na bod 2.
Ak je počet bezprostredných nasledovníkov každého uzlu konečný, je algoritmus BFS úplny a optimálny.
Časová aj pamäťová náročnosť je exponenciálna.
Modifikácia 1 - v bode 5 uložíme do fronty OPEN všetkých nasledovníkov, ktorý v nej ešte nie sú
Metóda rovnakých cien (UCS)
Sestroj seznam OPEN (bude obsahovat všechny uzly určené k expanzi) a umísti do něj počáteční uzel včetně jeho (nulového) ohodnocení.
Je-li seznam OPEN prázdný, pak úloha nemá řešení a ukonči proto prohledávání jako neúspěšné. Jinak pokračuj.
Vyber ze seznamu OPEN uzel s nejnižším ohodnocením.
Je-li vybraný uzel uzlem cílovým, ukonči prohledávání jako úspěšné a vrať cestu od kořenového uzlu k uzlu cílovému (vrací se posloupnost stavů, nebo operátorů). Jinak pokračuj.
Vybraný uzel expanduj, všechny jeho bezprostřední následníky včetně jejich ohodnocení umísti do seznamu OPEN a vrať se na bod 2.
Ak je počet bezprostredných nasledovníkov každého uzlu konečný, je algoritmus BFS úplny a optimálny.
Časová aj pamäťová náročnosť je exponenciálna.
Modifikácie podobné ako pri BFS
Metóda slepého prehľadávania do hĺbky (DFS)
Sestroj zásobník OPEN (bude obsahovat všechny uzly určené k expanzi) a umísti do něj počáteční uzel.
Je-li zásobník OPEN prázdný, pak úloha nemá řešení a ukonči proto prohledávání jako neúspěšné. Jinak pokračuj.
Vyber z vrcholu zásobníku OPEN první uzel.
Je-li vybraný uzel uzlem cílovým, ukonči prohledávání jako úspěšné a vrať cestu od kořenového uzlu k uzlu cílovému (vrací se posloupnost stavů, nebo operátorů). Jinak pokračuj.
Vybraný uzel expanduj, všechny jeho bezprostřední následníky umísti do zásobníku OPEN a vrať se na bod 2.
nie je ani úplny ani optimálny
časová náročnosť je exponenciálna
pamäťová náročnosť je lineárna
v základnej verzii je prakticky nepoužiteľný
Modifikácia:
Metóda obmedzeného prehľadávania do hĺbky (DLS)
Sestroj zásobník OPEN a umísti do něj počáteční uzel s označením hloubky (0).
Je-li zásobník OPEN prázdný, pak úloha nemá řešení a ukonči proto prohledávání jako neúspěšné. Jinak pokračuj.
Vyber z vrcholu zásobníku OPEN první uzel.
Je-li vybraný uzel uzlem cílovým, ukonči prohledávání jako úspěšné a vrať cestu od kořenového uzlu k uzlu cílovému (vrací se posloupnost stavů, nebo operátorů). Jinak pokračuj.
Pokud je hloubka vybraného uzlu menší než zadaná maximální hloubka, tak tento uzel expanduj, všem jeho bezprostředním následníkům přiřaď hloubku o jedničku větší než je hloubka expandovaného uzlu a umísti je do zásobníku OPEN. Jinak pokračuj.
Vrať se na bod 2.
nie je úplna ani optimálna
časová náročnosť je exponenciálna
pamäťová náročnosť je lineárna
Metóda postupného zanorovania do hĺbky (IDS)
Nastav hloubku prohledávání na hodnotu 1.
Použij metodu DLS. Skončí-li tato metoda úspěchem (nalezením cesty), skonči také úspěchem a vrať nalezenou cestu. Jinak pokračuj.
Dosáhla-li hloubka prohledávání maximální hodnotu, skonči neúspěchem. Jinak inkrementuj hloubku prohledávání a vrať se na bod 2.
Metóda spätného vracania (Backtracking)
Sestroj zásobník OPEN (bude obsahovat uzly určené k expanzi) a umísti do něj počáteční uzel.
Je-li zásobník OPEN prázdný, pak úloha nemá řešení a ukonči proto prohledávání jako neúspěšné. Jinak pokračuj.
Jde-li na uzel na vršku zásobníku aplikovat první/další operátor, tak tento operátor aplikuj a pokračuj bodem 4, v opačném případě odstraň testovaný uzel z vrcholu zásobníku a vrať se na bod 2.
Je-li nový vygenerovaný uzel, tj. uzel vzniklý aplikací operátoru na uzel na vršku zásobníku, uzlem cílovým, ukonči prohledávání jako úspěšné a vrať cestu od kořenového uzlu k uzlu cílovému (vrací se posloupnost stavů, nebo operátorů). Jinak ulož nový uzel na vršek zásobníku a vrať se na bod 2.
nie je úplna ani optimálna
časová náročnosť je exponenciálna
extrémne nízka pamäťová náročnosť - v zásobníku OPEN sú len uzly aktuálnej cesty
Modifikácia:
Metóda obojsmerného prehľadávania (BS)
v úlohách, ktoré používajú inverzné operátory môžme prehľadávať statový priestor oboma smermi metódou BFS
od počiatočného stavu k cieľovému a zároveň od cieľového k počiatočnému
ak sa v každom smere prehľadáva polovičná hĺbka, klesá pamäťová zložitosť
časová zložitosť je exponenciálna
Metódy Best First Search
Sestroj seznam OPEN (bude obsahovat všechny uzly určené k expanzi) a umísti do něj počáteční uzel včetně jeho ohodnocení.
Je-li seznam OPEN prázdný, pak úloha nemá řešení a ukonči proto prohledávání jako neúspěšné. Jinak pokračuj.
Vyber ze seznamu OPEN uzel s nejlepším (nejnižším) ohodnocením.
Je-li vybraný uzel uzlem cílovým, ukonči prohledávání jako úspěšné a vrať cestu od kořenového uzlu k uzlu cílovému (vrací se posloupnost stavů, nebo operátorů). Jinak pokračuj.
Vybraný uzel expanduj, všechny jeho bezprostřední následníky, kteří nejsou jeho předky, umísti do seznamu OPEN, a to včetně jejich ohodnocení. Z uzlů, které se v seznamu OPEN vyskytují vícekrát, ponech pouze uzel s nejlepším ohodnocením, ostatní ze seznamu OPEN vyškrtni, a vrať se na bod 2.
rozdiel je v ohodnocovacej funkcii - cena cesty + heuristická funkcia (odhad ceny cesty z uzlu n do cieľového uzlu) (f(n) = g(n) + h(n))
ceny všetkých prechodov sú kladné
heuristická funkcia - čím je presnejšia, tým menšiu časť stavového priestoru potrebujeme prehľadávať
Metóda Greedy Search
ohodnocuje uzly len heuristickou funkciou - na expanziu vybera uzol s najnizsou
dobrá heuristická funkcia môže výrazne zredukovať časovú zložitosť
nie je ani úplny ani optimálny
časová náročnosť je exponenciálna
pamäťová náročnosť je lineárna
Metóda A*
najznámejšia a najpoužívanejšia na prehľadávanie stavového priestoru
na ohodnotenie uzlov sa používa vzťah f(n) = g(n) + h(n)
heuristická funkcia musí byť spodný odhad
je úplná
pre prípustné heuristické funkcie je optimálna
expanduje len uzly pre ktoré platí f(sx) ⇐ f0, f0 je cena optimálnej cesty
časová aj pamäťová zložitosť záleží od použitej heuristiky