prednaska Neinformovane prohledavani

Transkript

prednaska Neinformovane prohledavani
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

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

Více

Tomas Krajnik - Research outputs Journals and Magazines Books

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

Více

Bakal´arsk´y a magistersk´y program Otevren´a informatika

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č...

Více

CPU RAM I/O BUS

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

Více

Bakaláˇrská práce Implementace inteligentn´ıch bot˚u pro

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

Více

Tecnicall 4/2009

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

Více

Detekce tautologie Bc. Jan Schindler

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ý ...

Více

KYBERNETIKA A UMEL´A INTELIGENCE 1.´Uvod do kybernetiky a

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

Více