prednaska Neinformovane prohledavani
Transkript
Neinformované metody prohledávánı́ stavového prostoru Michal Pěchouček Gerstner Laboratory Agent Technology Group, Czech Technical University in Prague http://labe.felk.cvut.cz/~ tkrajnik/kui2/data/K333/1.pdf pÚvodnı́ poznámka o umělé inteligenci Umělá inteligence, jako věda o poznánı́ lidského uvažovánı́ a povahy lidských znalostı́ pomocı́ modelovánı́ těchto na počı́tači, se dělı́ do 3 základnı́ch větvı́: symbolický funkcionalismus – škola umělé inteligence, která je založena na modelovánı́ inteligence pomocı́ modelovánı́ manipulace se symboly a jejich representace přı́klad: znalostnı́ systémy, automatické dokazovánı́, plánovánı́ konecionismus – škola umělé inteligence, která je založena na modelovánı́ inteligence pomocı́ velkého počtu stejných, fixně svázaných a interagujı́cı́ch výpočetnı́ch jednotek přı́klad: neuronové sı́tě behavioralismus – který je založen na předpokladu že kombinacı́ velkého počtu specializovaných, ale neinteligentnı́ch procesů (černých krabiček) lze dosáhnout inteligentnı́ho chovánı́ přı́klad: inteligentnı́ robotika hybridnı́ přı́stupy: multi-agentnı́ přı́stupy, genetické algoritmy, artificial life, ... /Úvod pÚvodnı́ poznámka o umělé inteligenci Symbolický funkcionlismus je založen na modelovánı́ dvou základnı́ch aspektů inteligentnı́ho uvažovánı́: znalostı́ uvažovánı́ Obojı́ lze modelovat na různých úrovnı́ch obecnosti. Silné metody umožňujı́ obecné modely uvažovánı́, zatı́mco slabé metody jsou specifické :: Zjednodušená úloha umělé inteligence podle symbolického funkcionalismu tedy znı́: jak reprezentovat ty správné znalosti a naprogramovat takové uvažovacı́ mechanismy, které obohatı́ soubor znalostı́ o nové hypotézy. /Úvod pÚvodnı́ poznámka o umělé inteligenci Mějme dva extrémnı́ přı́pady implementace umělé inteligence podle symbolického funkcionalismu: silný – znalosti jsou reprezentovány pomocı́ systému predikátové logiky a uvažovánı́ je reprezentováno výpočetnı́m modelem dedukce slabý – znalosti jsou reprezentovány jako množina výroků a uvažovánı́ je reprezentováno pomocı́ souboru if-then pravidel V obojı́m přı́padě je množina nových znalostı́ (ať už vytvořených nebo hypotetických) veliká a je potřeba ji inteligentně vytvářet a prohledávat. Strategie prohledávánı́ je součástı́ modelu uvažovánı́. Prostor nových znalostı́ se nazývá stavový prostor. Při řešenı́ problémů se skládá stavový prostor z meziřešenı́ či pomocných hypotéz. Některá meziřešenı́ jsou klasfikovaná jako cı́lová řešenı́. /Stavový prostor pStavový prostor Řešenı́ problémů, jako jeden z projevů inteligentnı́ uvažovánı́, je chápáno jako problém naleznı́ (z počátečnı́ho stavu s0) takového stavu sn, který splňuje vlastnosti požadovaného řešenı́ – goal(sn). Takovéto stavy nazýváme cı́lové – sgoal . V některých přı́padech se definuje řešenı́ problému jako problém nalezeni cesty z počátečnı́ho uzlu do uzlu cı́lového. Zde neprohledáváme prostor uzlů ale prostor cest. Problém prohledávánı́ stavového prostoru je tedy definován pomocı́ počátečnı́ho stavu - s0 vlastnostı́ cı́lových stavů – goal(sn) množiny stavových operátorů, objektivnı́ funkce, ohodnocenı́ ceny použitı́ stavových operátoru Přı́klady: 8-queens problem, cryptaritmetic, šachy, 8-puzzle, dokazovánı́ v matema-tice, porouzměnı́ přirozenému jazyku, plánovánı́ a rozvrhovánı́, robotická navigace, Situace se vážně komplikuje v přı́padě, že se jedná o dynamicky se měnı́cı́ stavový prostor – napřı́klad, přı́ řešenı́ problému v dynamickém prostředı́ nebo hře s kompetitvnı́m oponentem. /Stavový prostor p8-puzzle /Stavový prostor pThe 8 queen problem /Stavový prostor pCryptoarithmetic forty + ten + ten --------sixty solution: 19786 + 850 + 850 --------31486 e.g. f=2, o=9, r=7, etc. /Stavový prostor pTravelling Salesman /Stavový prostor pProhledávánı́ Stavového Prostoru Stejně jako při modelovánı́ umělé inteligence tak při prohledávánı́ stavového prostoru řešı́me problémy s reprezentacı́ stavového prostoru — implementace stavových operátorů (fun-kce expand), zabráněnı́ cyklům, ... algoritmu prohledávánı́ — rozhodnutı́, který operátor expandovat jako prvnı́, odhady, heuristiky co požadujeme od úspěšného algoritmu? je zaručeno, že algoritmus najde řešenı́, prohledá celý stavový prostor? – úplnost ukončı́ se algoritmus? najde algoritmus vždy optimálnı́ řešenı́? – optimalita jaká je komplexita prohledávánı́? – časová and paměťová náročnost /Stavový prostor pProhledávánı́ Stavového Prostoru /Stavový prostor pProhledávánı́ Stavového Prostoru /Stavový prostor pProhledávánı́ Stavového Prostoru /Stavový prostor pProhledávánı́ Stavového Prostoru /Stavový prostor pProhledávánı́ Stavového Prostoru /Stavový prostor pStrategie neinformovaného prohledávánı́ stavového prostoru dopředné řetězenı́ – forward chaining prohledává prostor od počátku k cı́li, aplikuje stavové operátory za účelem nalezenı́ nových stavů, process iterativně pokračuje než je nalezeno řešenı́ zpětné řetězenı́ – backward chaining prohledává prostor od cı́le k počátku hledá stavové operátory, které generujı́ aktuálnı́ stavy podmı́nky těchto operátorů generujı́ nové cı́le process pokračuje až do stavu, který popisuje daný problém oboustranné prohledávánı́ – prohledává stavový prostor z obou stran /Stavový prostor pStrategie neinformovaného prohledávánı́ stavového prostoru algoritmy prohledávánı́ se dělı́ také podle toho v jakém pořadı́ jsou aplikovány aplikovatelné stavové operátory prohledávánı́ do hloubky vždy aplikuje stavový operátor na co nejčerstvěji rozbalený stav, v přı́padě selhánı́ aplikuje backtracking prohledávánı́ do šı́řky nejprve prohledá všechny stavy, které jsou stejně daleko od počátečnı́ho stavu před tı́m než expanduje o dalšı́ úroveň datové struktury pro prohledávánı́ stavového prostoru: 1. stavový prostor ve formě orientovaného grafu 2. seznamy, které se použı́vajı́ pro prohledávánı́ stavového prostoru : open list – seznam otevřených stavů, sloužı́ k řı́zenı́ stavové expanze closed list – seznam prohledaných uzlů, sloužı́ k zabráněnı́ zacyklenı́ /BFS pProhledávánı́ do šı́řky – Breadth First Search (BFS) /BFS pProhledávánı́ do šı́řky – Breadth First Search (BFS) /BFS pProhledávánı́ do šı́řky – Breadth First Search (BFS) begin _open <= [Start] while (_open =/= []) do begin X <= first(_open) _open <= _open - [X] if X = GOAL then return(SUCCESS) else begin E <= expand(X) _open <= _open + E end end return(failure) end. /BFS pProhledávánı́ do šı́řky – Breadth First Search (BFS) /BFS pVsuvka - analýza algoritmů function SUM(_seq) _sum <= 0 for i : 1 to length(_seq) _sum = _sum + _seq return _sum /BFS pVsuvka - analýza algoritmů function SUM(_seq) _sum <= 0 for i : 1 to length(_seq) _sum = _sum + _seq return _sum doba trvánı́ algoritmu? /BFS pVsuvka - analýza algoritmů function SUM(_seq) _sum <= 0 for i : 1 to length(_seq) _sum = _sum + _seq return _sum doba trvánı́ algoritmu? − pro |seq| = n, T (n) = 2n + 2 /BFS pVsuvka - analýza algoritmů function SUM(_seq) _sum <= 0 for i : 1 to length(_seq) _sum = _sum + _seq return _sum doba trvánı́ algoritmu? − pro |seq| = n, T (n) = 2n + 2 − pro různá n můžem pracovat s T (n)avg a T (n)worst asymptotická analýza algortimu? /BFS pVsuvka - analýza algoritmů function SUM(_seq) _sum <= 0 for i : 1 to length(_seq) _sum = _sum + _seq return _sum doba trvánı́ algoritmu? − pro |seq| = n, T (n) = 2n + 2 − pro různá n můžem pracovat s T (n)avg a T (n)worst asymptotická analýza algortimu? − T (n) ≈ O(f (n)) if T (n) ≤ kf (n) forall n /BFS pVsuvka - analýza algoritmů function SUM(_seq) _sum <= 0 for i : 1 to length(_seq) _sum = _sum + _seq return _sum doba trvánı́ algoritmu? − pro |seq| = n, T (n) = 2n + 2 − pro různá n můžem pracovat s T (n)avg a T (n)worst asymptotická analýza algortimu? − T (n) ≈ O(f (n)) if T (n) ≤ kf (n) forall n classes of problems: − P problémy – O(n), O(log n) − NP problémy – nondeterministické P problémy − NP-úplné problémy – třı́da NP problémů, které nejsou P a majı́ exp. náročnost /BFS pVlastnosti BFS /BFS pVlastnosti BFS úplné: /BFS pVlastnosti BFS úplné: ANO (je-li b konečné) /BFS pVlastnosti BFS úplné: ANO (je-li b konečné) čas: /BFS pVlastnosti BFS úplné: ANO (je-li b konečné) čas: 1 + b + b2 + b3 + ... + bd = O(bd+1) – tzn. exponenciálně podle d /BFS pVlastnosti BFS úplné: ANO (je-li b konečné) čas: 1 + b + b2 + b3 + ... + bd = O(bd+1) – tzn. exponenciálně podle d paměť: /BFS pVlastnosti BFS úplné: ANO (je-li b konečné) čas: 1 + b + b2 + b3 + ... + bd = O(bd+1) – tzn. exponenciálně podle d paměť: O(bd) /BFS pVlastnosti BFS úplné: ANO (je-li b konečné) čas: 1 + b + b2 + b3 + ... + bd = O(bd+1) – tzn. exponenciálně podle d paměť: O(bd) optimálnı́: /BFS pVlastnosti BFS úplné: ANO (je-li b konečné) čas: 1 + b + b2 + b3 + ... + bd = O(bd+1) – tzn. exponenciálně podle d paměť: O(bd) optimálnı́: ano, optimalizuje-li se hloubka /DFS pProhledávánı́ do hloubky – Depth First Search (DFS) /DFS pProhledávánı́ do hloubky – Depth First Search (DFS) /DFS pProhledávánı́ do hloubky – Depth First Search (DFS) /DFS pProhledávánı́ do hloubky – Depth First Search (DFS) /DFS pProhledávánı́ do hloubky – Depth First Search (DFS) /DFS pProhledávánı́ do hloubky – Depth First Search (DFS) begin _open <= [Start] while (_open =/= []) do begin X <= first(_open) _open <= _open - [X] if X = GOAL then return(SUCCESS) else begin E <= expand(X) _open <= _open + E end end return(failure) end. /DFS pProhledávánı́ do hloubky – Depth First Search (DFS) begin _open <= [Start] while (_open =/= []) do begin X <= first(_open) _open <= _open - [X] if X = GOAL then return(SUCCESS) else begin E <= expand(X) _open <= E + _open end end return(failure) end. /DFS pProhledávánı́ do hloubky – Depth First Search (DFS) begin _open <= [Start], _closed <= [] while (_open =/= []) do begin X <= first(_open) _closed <= _closed + [X], _open <= _open - [X] if X = GOAL then return(SUCCESS) else begin E <= expand(X) E <= E - _closed _open <= _open + E end end return(failure) end. /DFS pVlastnosti DFS /DFS pVlastnosti DFS úplné: /DFS pVlastnosti DFS úplné: NE (nenı́-li b konečné, nebo existujı́-li smyčky) /DFS pVlastnosti DFS úplné: NE (nenı́-li b konečné, nebo existujı́-li smyčky) čas: /DFS pVlastnosti DFS úplné: NE (nenı́-li b konečné, nebo existujı́-li smyčky) čas: 1 + b + b2 + b3 + ... + bd = O(bd+1) – tzn. exponenciálně podle d /DFS pVlastnosti DFS úplné: NE (nenı́-li b konečné, nebo existujı́-li smyčky) čas: 1 + b + b2 + b3 + ... + bd = O(bd+1) – tzn. exponenciálně podle d paměť: /DFS pVlastnosti DFS úplné: NE (nenı́-li b konečné, nebo existujı́-li smyčky) čas: 1 + b + b2 + b3 + ... + bd = O(bd+1) – tzn. exponenciálně podle d paměť: O(bd) /DFS pVlastnosti DFS úplné: NE (nenı́-li b konečné, nebo existujı́-li smyčky) čas: 1 + b + b2 + b3 + ... + bd = O(bd+1) – tzn. exponenciálně podle d paměť: O(bd) optimálnı́: /DFS pVlastnosti DFS úplné: NE (nenı́-li b konečné, nebo existujı́-li smyčky) čas: 1 + b + b2 + b3 + ... + bd = O(bd+1) – tzn. exponenciálně podle d paměť: O(bd) optimálnı́: ne /IDDFS pAlternativnı́ strategie DLDS (Depth-limited) search: prohledávánı́ do hloubky s omezenou hloubkou prohledávánı́ IDDFS (Iterative deepening) search: prohledávánı́ do hloubky s iterativnı́ se zvyšujı́cı́ hloubkou prohledávánı́ Algorithm: 1. 2. 3. depth_bound=1 DFS with a depth_bound if success then end else depth_bound = depth_bound + 1 and go to the step 2. /IDDFS pAlgoritmus IDDFS prohledávánı́ /IDDFS pAlgoritmus IDDFS prohledávánı́ /IDDFS pAlgoritmus IDDFS prohledávánı́ /IDDFS pAlgoritmus IDDFS prohledávánı́ /IDDFS pVlastnosti IDDFS /IDDFS pVlastnosti IDDFS úplné: /IDDFS pVlastnosti IDDFS úplné: ANO (je-li b konečné) /IDDFS pVlastnosti IDDFS úplné: ANO (je-li b konečné) čas: /IDDFS pVlastnosti IDDFS úplné: ANO (je-li b konečné) čas: d1 + (d − 1)b + (d − 2)b2 + (d − 3)b3 + ... + bd < dbd = O(bd) /IDDFS pVlastnosti IDDFS úplné: ANO (je-li b konečné) čas: d1 + (d − 1)b + (d − 2)b2 + (d − 3)b3 + ... + bd < dbd = O(bd) paměť: /IDDFS pVlastnosti IDDFS úplné: ANO (je-li b konečné) čas: d1 + (d − 1)b + (d − 2)b2 + (d − 3)b3 + ... + bd < dbd = O(bd) paměť: O(bd) /IDDFS pVlastnosti IDDFS úplné: ANO (je-li b konečné) čas: d1 + (d − 1)b + (d − 2)b2 + (d − 3)b3 + ... + bd < dbd = O(bd) paměť: O(bd) optimálnı́: /IDDFS pVlastnosti IDDFS úplné: ANO (je-li b konečné) čas: d1 + (d − 1)b + (d − 2)b2 + (d − 3)b3 + ... + bd < dbd = O(bd) paměť: O(bd) optimálnı́: ano, optimalizuje-li se hloubka /IDDFS pVlastnosti IDDFS úplné: ANO (je-li b konečné) čas: d1 + (d − 1)b + (d − 2)b2 + (d − 3)b3 + ... + bd < dbd = O(bd) paměť: O(bd) optimálnı́: ano, optimalizuje-li se hloubka provnánı́: pro b = 10 a d = 5 v nejhoršı́m přı́padě: − N (ids) = 50 + 400 + 3, 000 + 20, 000 + 100, 000 = 123, 450 − N (bfs) = 10 + 100 + 1, 000 + 10, 000 + 100, 000 = 111, 100 /IDDFS pAlternativnı́ strategie Bidirectional search /IDDFS pPorovnánı́ Strategiı́ kritérium/algoritmus BFS DFS Dlim IDDFS BiDir bn bn ano ano čas paměť optimalita úplnost bn bn ne ne bn bl ne ne bn bn ano ano d b2 d b2 ano ano /IDDFS
Podobné dokumenty
prednaska Dvouhracove hry
adversariálnı́ prohledávánı́ (adversarial search) stavového prostoru (hranı́ her), implementuje
inteligencı́ rozhodovánı́ v komutativnı́m prostředı́, kde dva nebo vı́ce agentů majı́ konflikt...
Tomas Krajnik - Research outputs Journals and Magazines Books
• M. Saska, V. Vonásek, T. Krajnı́k, and L. Přeučil. Coordination and Navigation of Heterogeneous UAVsUGVs Teams Localized by a Hawk-Eye Approach. In Proceedings of 2012 IEEE/RSJ International C...
Bakal´arsk´y a magistersk´y program Otevren´a informatika
2.2.5 A4B38NVS: Návrh vestavěných systémů . . . . . . . . . . . . . . . . . . .
2.2.6 A4B35PSR: Programovánı́ systémů reálného času . . . . . . . . . . . . . .
2.2.7 A4B32PKS: Počı́tač...
CPU RAM I/O BUS
– přijı́majı́cı́ karta
• každá sit’ová karta má jedinečnou hardwarovou adresu (na světě!) - hexadecimálnı́ čı́slo s 12 ciframi
tj. celkem 1612 = 248 > 2 1014
např. 00 00 c0 0f 30 40
• p...
Bakaláˇrská práce Implementace inteligentn´ıch bot˚u pro
Obrázek 3.3: Parametry jednoho z cı́lů v programu GDBEdit
znovu; RecalcRate - rozsah doby v sekundách, za kterou bude znovu vyhodnocena relevance (náhodná hodnota v tomto rozsahu); InterruptPr...
Tecnicall 4/2009
ČVUT v Praze na stánku při MSV Brno 2009 reprezentující svou alma mater
V konstrukci VMS jsou využívány
jak elektrické, tak pneumatické
a hydraulické pohony, které jsou
ovládány programovatelnými
a...
Detekce tautologie Bc. Jan Schindler
• Program by měl být primárně založen na algoritmech použitých v nástroji na minimalizaci logických funkcı́, Espresso [2].
• Výsledný program by měl tvořit zapouzdřený celek, který ...
KYBERNETIKA A UMEL´A INTELIGENCE 1.´Uvod do kybernetiky a
K čemu je tento předmět
− K zı́skánı́ všeobecného přehledu o problémech a technikách kybernetiky a UI a pochopenı́
jejich povahy.
− Uvede základnı́ pojmy a koncepty často a v různých s...