Neinformované metody prohledávání stavového prostoru Michal Pěchouček, Milan Rollo. Department of Cybernetics Czech Technical University in Prague

Podobné dokumenty
Neinformované metody prohledávání stavového prostoru. Gerstner Laboratory Agent Technology Group, Czech Technical University in Prague

"Agent Hledač" (3. přednáška)

Úloha ve stavovém prostoru SP je <s 0, C>, kde s 0 je počáteční stav C je množina požadovaných cílových stavů

Heuristiky, best-first search, A* search.

Heuristiky, best-first search, A* search.

Heuristiky, best-first search, A* search.

Umělá inteligence I. Roman Barták, KTIML.

Základy umělé inteligence

Heuristiky, best-first search, A* search

Heuristiky, best-first search, A* search

Obsah: Problém osmi dam

State Space Search Step Run Editace úloh Task1 Task2 Init Clear Node Goal Add Shift Remove Add Node Goal Node Shift Remove, Add Node

Heuristiky, best-first search, A* search

Heuristiky, best-first search, A* search

Algoritmizace prostorových úloh

! Kyberne(ka!a!umělá!inteligence! 8.!Hraní!dvouhráčových!her,!adversariální! prohledávání!stavového!prostoru!!!!

bfs, dfs, fronta, zásobník, prioritní fronta, halda

Umělá inteligence I. Roman Barták, KTIML.

Umělá inteligence. UI (AI) - součást informatiky s průniky mimo obor Stručná historie UI. Letošní cena nadace Vize Joseph Weizenbaum

Metody návrhu algoritmů, příklady. IB111 Programování a algoritmizace

bfs, dfs, fronta, zásobník, prioritní fronta, halda

Heuristiky, best-first search, A* search

Hledáme efektivní řešení úloh na grafu

PROBLÉM OSMI DAM II. Problém osmi dam. Obsah:

ALGORITMY A DATOVÉ STRUKTURY

PROHLEDÁVÁNÍ GRAFŮ. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

1. Prohledávání stavového prostoru

bfs, dfs, fronta, zásobník

Grafové algoritmy. Programovací techniky

Matice sousednosti NG

Hry a UI historie. von Neumann, 1944 algoritmy perfektní hry Zuse, Wiener, Shannon, přibližné vyhodnocování

Řešení: PŘENESVĚŽ (N, A, B, C) = přenes N disků z A na B pomocí C

10. Složitost a výkon

Základy umělé inteligence

Optimalizace & soft omezení: algoritmy

TGH05 - aplikace DFS, průchod do šířky

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.

1. Prohledávání stavového prostoru

Grafové algoritmy. Programovací techniky

Stromy, haldy, prioritní fronty

Logika a logické programování

TGH05 - aplikace DFS, průchod do šířky

Úvod do teorie grafů

Plánování se stavovým prostorem

Moderní systémy pro získávání znalostí z informací a dat

Základní datové struktury III: Stromy, haldy

Umělá inteligence a rozpoznávání

Aproximativní algoritmy UIN009 Efektivní algoritmy 1

NP-ÚPLNÉ PROBLÉMY. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

Základy informatiky. 07 Teorie grafů. Kačmařík/Szturcová/Děrgel/Rapant

Datové struktury 2: Rozptylovací tabulky

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12.

Třídy složitosti P a NP, NP-úplnost

Zdůvodněte, proč funkce n lg(n) roste alespoň stejně rychle nebo rychleji než než funkce lg(n!). Symbolem lg značíme logaritmus o základu 2.

Expertní systémy. 1. Úvod k expertním systémům. Cíl kapitoly:

Seminář z umělé inteligence. Otakar Trunda

TGH06 - Hledání nejkratší cesty

Algoritmy a datové struktury

Pravidlové znalostní systémy

popel, glum & nepil 16/28

Expe xp rtn t í n í sys s t ys é t my m PSY 481

Plánování: reprezentace problému

Hanojská věž. T2: prohledávání stavového prostoru. zadání [1 1 1] řešení [3 3 3] dva možné první tahy: [1 1 2] [1 1 3]

Algoritmy na ohodnoceném grafu

Algoritmus Minimax. Tomáš Kühr. Projektový seminář 1

Prohledávání do šířky a do hloubky. Jan Hnilica Počítačové modelování 15

Složitost 1.1 Opera ní a pam ová složitost 1.2 Opera ní složitost v pr rném, nejhorším a nejlepším p ípad 1.3 Asymptotická složitost

Amortizovaná složitost. Prioritní fronty, haldy (binární, d- regulární, binomiální, Fibonacciho), operace nad nimi a jejich složitost

Department of Cybernetics Czech Technical University in Prague. pechouc/kui/games.pdf

Obsah: Hry vs. Prohledávání stavového prostoru Algoritmus Minimax. Nedeterministické hry Hry s nepřesnými znalostmi

TGH06 - Hledání nejkratší cesty

Paralelní grafové algoritmy

Dijkstrův algoritmus

ORIENTOVANÉ GRAFY, REPREZENTACE GRAFŮ

Vzdálenost uzlů v neorientovaném grafu

Usuzování za neurčitosti

Lineární diskriminační funkce. Perceptronový algoritmus.

Obsah: Hry vs. Prohledávání stavového prostoru Algoritmus Minimax. Nedeterministické hry Hry s nepřesnými znalostmi

Evoluční výpočetní techniky (EVT)

Obsah: Hry vs. Prohledávání stavového prostoru Algoritmus Minimax. Nedeterministické hry Hry s nepřesnými znalostmi. 72 studentů

Hry a UI historie. Obsah: Hry vs. Prohledávání stavového prostoru Algoritmus Minimax. Nedeterministické hry Hry s nepřesnými znalostmi

Prohledávání do šířky = algoritmus vlny

ŘEŠITEL HRY GRIDDLERS

TGH07 - Chytré stromové datové struktury

Stromy. Strom: souvislý graf bez kružnic využití: počítačová grafika seznam objektů efektivní vyhledávání výpočetní stromy rozhodovací stromy

NEJKRATŠÍ CESTY I. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

Evoluční algoritmy. Podmínka zastavení počet iterací kvalita nejlepšího jedince v populaci změna kvality nejlepšího jedince mezi iteracemi

Obsah: Hry vs. Prohledávání stavového prostoru Algoritmus Minimax. Nedeterministické hry Hry s nepřesnými znalostmi

Reprezentace znalostí - úvod

MATEMATICKÁ TEORIE ROZHODOVÁNÍ

Genetické programování

Obsah: Hry vs. Prohledávání stavového prostoru Algoritmus Minimax. Nedeterministické hry Hry s nepřesnými znalostmi

Maturitní témata. IKT, školní rok 2017/18. 1 Struktura osobního počítače. 2 Operační systém. 3 Uživatelský software.

Základní datové struktury

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

Algoritmy I, složitost

Počítačové šachy. Otakar Trunda

Předmět: Algoritmizace praktické aplikace

Plánování v prostoru plánů

UNIVERZITA PARDUBICE

Transkript:

Neinformované metody prohledávání stavového prostoru Michal Pěchouček, Milan Rollo Department of Cybernetics Czech Technical University in Prague http://cw.felk.cvut.cz/doku.php/courses/a3b33kui/start

ppoužitá literatura pro umělou inteligenci :: Artificial Intelligence: A Modern Approach (Third Edition) by Stuart Russell and Peter Norvig, 2007 Prentice Hall. http://aima.cs.berkeley.edu/

ṕuvodní poznámka o umělé inteligenci Umělá inteligence jako: Přístup ke zkoumání a chápání inteligence Přístup ke psaní algoritmů s prvky umělé inteligence (která nemusí být nezbytně lidská): Pro podporu rozhodování, optimalizaci rozhodovacích procesů, autonomii v rozhodování /Koncepty UI

ṕuvodní 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ěĺı do 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, příklad: znalostní systémy, automatické dokazování, plánování konekcionismus š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ě robotický funkcionalismus (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í a další přístupy: multi-agentní přístupy, genetické algoritmy, artificial life,... /Koncepty UI

ṕuvodní poznámka o umělé inteligenci Silná umělá inteligence (podle Bretana): inteligence, která navozuje mentální stavy identické s mentálními stavy provázejícími lidské porozumění (extrémní definice) /Koncepty UI

ṕuvodní poznámka o umělé inteligenci Silná umělá inteligence (podle Bretana): inteligence, která navozuje mentální stavy identické s mentálními stavy provázejícími lidské porozumění (extrémní definice) Slabá umělá inteligence (podle Turinga): inteligence, která svými projevy není rozeznatelná od inteligence lidské /Koncepty UI

ṕuvodní poznámka o umělé inteligenci Silná umělá inteligence (podle Bretana): inteligence, která navozuje mentální stavy identické s mentálními stavy provázejícími lidské porozumění (extrémní definice) Slabá umělá inteligence (podle Turinga): inteligence, která svými projevy není rozeznatelná od inteligence lidské Střední (middling) umělá inteligence (podle Smithe): inteligence, která je založena na modelech znalostí a mechanismech uvažování identickými s modely a mechanismy používaných při projevech lidské inteligenci /Koncepty UI

ṕuvodní poznámka o umělé inteligenci Silná umělá inteligence (podle Bretana): inteligence, která navozuje mentální stavy identické s mentálními stavy provázejícími lidské porozumění (extrémní definice) Slabá umělá inteligence (podle Turinga): inteligence, která svými projevy není rozeznatelná od inteligence lidské Střední (middling) umělá inteligence (podle Smithe): inteligence, která je založena na modelech znalostí a mechanismech uvažování identickými s modely a mechanismy používaných při projevech lidské inteligenci Turingův test - test na přítomnost slabé umělé inteligence. Turingův stroj - příklad abstraktního stroje, pomocí něhož lze modelovat libovolný algoritmus, počítačový program. /Koncepty UI

ṕuvodní 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 napropgramovat takové uvažovací mechanismy, které obohatí soubor znalostí o nové hypotézy. /Koncepty UI

ṕuvodní 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 obou případech 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í. /Koncepty UI

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 s 0 ) takového stavu s n, který splňuje vlastnosti požadovaného řešení goal(s n ). Takovéto stavy nazýváme cílové s goal. V některých případech se definuje řešení problému jako problém nalezení 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 - s 0 vlastností cílových stavů goal(s n ) množiny stavových operátorů, objektivní funkce, ohodnocení ceny použití stavových operátoru Příklady: problém 8-královen, kryptoaritmetika, šachy, lišák (hra 8-puzzle), dokazování v matematice, porozumě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ři řešení problému v dynamickém prostředí nebo hře s kompetitivním oponentem. /Stavový prostor

ppříklad: Hra Lišák 7 2 4 1 2 5 6 3 4 5 8 3 1 6 7 8 Start State Goal State /Stavový prostor

ppříklad: 8-královen Částečné řešení problému 8-mi královen /Stavový prostor

ppříklad: Kryptoaritmetika forty solution: 19786 e.g. f=1, o=9, r=7, etc. + ten + 850 + ten + 850 --------- --------- sixty 21486 /Stavový prostor

ppříklad: Obchodní cestující 71 Oradea Neamt Arad 118 75 Zerind 140 Timisoara 151 Sibiu 99 Fagaras 80 Rimnicu Vilcea 87 Iasi 92 Vaslui 111 Lugoj 97 Pitesti 211 142 70 75 Dobreta Mehadia 120 98 146 101 85 Urziceni 138 Bucharest 90 Craiova Giurgiu Hirsova 86 Eforie /Stavový prostor

psearch: Prohledávání Stavového Prostoru Stejně jako při modelování umělé inteligence tak i při prohledávání stavového prostoru řešíme problémy s reprezentací stavového prostoru implementace stavových operátorů (funkce 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 náročnost prohledávání? časová a 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 proces pokračuje až do stavu, který popisuje daný problém /Stavový prostor

pstrategie neinformovaného prohledávání stavového prostoru Alternativní strategie Obousměrné prohledávání (Bidirectional search), prohledává stavový prostor z obou stran /Stavový prostor

pstrategie neinformovaného prohledávání stavového prostoru Algoritmy prohledávání se děĺı 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ň Při prohledávání stavového prostoru pracujeme s: 1. dynamicky se generovaným stavovým prostorem ve formě orientovaného grafu 2. s datovými strukturami: 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í /Stavový prostor

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. znak <> znamená nerovno, operátor - znamená odebrání prvku/prvků ze seznamu a operátor + znamená přiřazení prvku/prvků na konec seznamu /BFS

pvsuvka - analýza algoritmů function SUM(seq) sum <= 0 for i : 1 to length(seq) sum = sum + seq(i) return sum doba trvání algoritmu? (zjednodušení: doba trvání úměrná počtu operací) /BFS

pvsuvka - analýza algoritmů function SUM(seq) sum <= 0 for i : 1 to length(seq) sum = sum + seq(i) return sum doba trvání algoritmu? (zjednodušení: doba trvání úměrná počtu operací) pro length(seq) = n, T (n) = 2n + 2 pro různá n můžeme pracovat s T (n) avg a T (n) worst /BFS

pvsuvka - analýza algoritmů function SUM(seq) sum <= 0 for i : 1 to length(seq) sum = sum + seq(i) return sum doba trvání algoritmu? (zjednodušení: doba trvání úměrná počtu operací) pro length(seq) = n, T (n) = 2n + 2 pro různá n můžeme pracovat s T (n) avg a T (n) worst asymptotická analýza algoritmu? T (n) O(f(n)) if T (n) kf(n) + c n /BFS

pvsuvka - analýza algoritmů třídy problémů: P problémy - (např.: O(n a ),O(log n)) NP problémy - nedeterministické P problémy, na deterministickém Turingově stroji exponenciální složitost NP těžké - nejtěžší ze třídy NP, tj. každý problém z NP lze převést na řešení NP-těžkého problému NP-úplné problémy - třída NP problémů, které jsou NP těžké a v NP /BFS

pvlastnosti BFS Mějme b maximální faktor větvení (největší počet hran jdoucích z libovolného uzlu) daného stromu, d - nejmenší hloubka stromu, kde se nachází řešení a m maximální hloubka stromu - může být. /BFS

pvlastnosti BFS Mějme b maximální faktor větvení (největší počet hran jdoucích z libovolného uzlu) daného stromu, d - nejmenší hloubka stromu, kde se nachází řešení a m maximální hloubka stromu - může být. úplné? /BFS

pvlastnosti BFS Mějme b maximální faktor větvení (největší počet hran jdoucích z libovolného uzlu) daného stromu, d - nejmenší hloubka stromu, kde se nachází řešení a m maximální hloubka stromu - může být. úplné: ANO (je-li b konečné) /BFS

pvlastnosti BFS Mějme b maximální faktor větvení (největší počet hran jdoucích z libovolného uzlu) daného stromu, d - nejmenší hloubka stromu, kde se nachází řešení a m maximální hloubka stromu - může být. úplné: ANO (je-li b konečné) čas? /BFS

pvlastnosti BFS Mějme b maximální faktor větvení (největší počet hran jdoucích z libovolného uzlu) daného stromu, d - nejmenší hloubka stromu, kde se nachází řešení a m maximální hloubka stromu - může být. úplné: ANO (je-li b konečné) čas: 1 + b + b 2 + b 3 +... + b d + b(b d 1) = O(b d+1 ) podle algoritmu uvedeného na slidu 25, počítá se počet expandovaných uzlů (maximální počet uzlů na open seznamu), platí jen v případě, že m > d (jinak je O(b d )). /BFS

pvlastnosti BFS Mějme b maximální faktor větvení (největší počet hran jdoucích z libovolného uzlu) daného stromu, d - nejmenší hloubka stromu, kde se nachází řešení a m maximální hloubka stromu - může být. úplné: ANO (je-li b konečné) čas: 1 + b + b 2 + b 3 +... + b d = O(b d ) lze implementovat v případě, že se testuje je-li expandovaný uzel řešení ihned po expanzi (viz algoritmus na následujícím slidu) z tohoto algoritmu vycházíme při studování komplexit v následujícím výkladu. /BFS

pvlastnosti BFS begin if Start = GOAL then return(success) while (_open <> []) do begin X := first(open) open := open - [X] else begin E := expand(x) if for any Y in E: Y = GOAL then return(success) else open := open + E end end return(failure) end. /BFS

pvlastnosti BFS Mějme b maximální faktor větvení (největší počet hran jdoucích z libovolného uzlu) daného stromu, d - nejmenší hloubka stromu, kde se nachází řešení a m maximální hloubka stromu - může být. úplné: ANO (je-li b konečné) čas: 1 + b + b 2 + b 3 +... + b d = O(b d ) paměť? /BFS

pvlastnosti BFS Mějme b maximální faktor větvení (největší počet hran jdoucích z libovolného uzlu) daného stromu, d - nejmenší hloubka stromu, kde se nachází řešení a m maximální hloubka stromu - může být. úplné: ANO (je-li b konečné) čas: 1 + b + b 2 + b 3 +... + b d = O(b d ) paměť: O(b d ) /BFS

pvlastnosti BFS Mějme b maximální faktor větvení (největší počet hran jdoucích z libovolného uzlu) daného stromu, d - nejmenší hloubka stromu, kde se nachází řešení a m maximální hloubka stromu - může být. úplné: ANO (je-li b konečné) čas: 1 + b + b 2 + b 3 +... + b d = O(b d ) paměť: O(b d ) optimální? /BFS

pvlastnosti BFS Mějme b maximální faktor větvení (největší počet hran jdoucích z libovolného uzlu) daného stromu, d - nejmenší hloubka stromu, kde se nachází řešení a m maximální hloubka stromu - může být. úplné: ANO (je-li b konečné) čas: 1 + b + b 2 + b 3 +... + b d = O(b d ) paměť: O(b d ) optimální: ano, optimalizuje-li se hloubka /BFS

pvlastnosti BFS Mějme b maximální faktor větvení (největší počet hran jdoucích z libovolného uzlu) daného stromu, d - nejmenší hloubka stromu, kde se nachází řešení a m maximální hloubka stromu - může být. úplné: ANO (je-li b konečné) čas: 1 + b + b 2 + b 3 +... + b d = O(b d ) paměť: O(b d ) optimální: ano, optimalizuje-li se hloubka Prostor je největší problém - lehce lze generovat 100MB/sec /BFS

pprohledávání do šířky Breadth First Search (BFS) /BFS

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

pvlastnosti DFS Algoritmus, který neřeší možnost zacyklení: 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

pvlastnosti DFS Algoritmus, který zabraňuje zacyklení za použití sezamu closed: 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 := E + open end end return(failure) end. /DFS

pvlastnosti DFS Mějme b maximální faktor větvení (největší počet hran jdoucích z libovolného uzlu) daného stromu, d - nejmenší hloubka stromu, kde se nachází řešení a m maximální hloubka stromu - může být. /DFS

pvlastnosti DFS Mějme b maximální faktor větvení (největší počet hran jdoucích z libovolného uzlu) daného stromu, d - nejmenší hloubka stromu, kde se nachází řešení a m maximální hloubka stromu - může být. úplné? /DFS

pvlastnosti DFS Mějme b maximální faktor větvení (největší počet hran jdoucích z libovolného uzlu) daného stromu, d - nejmenší hloubka stromu, kde se nachází řešení a m maximální hloubka stromu - může být. úplné: NE (i když je b konečné, z důvodu možné existence smyček) /DFS

pvlastnosti DFS Mějme b maximální faktor větvení (největší počet hran jdoucích z libovolného uzlu) daného stromu, d - nejmenší hloubka stromu, kde se nachází řešení a m maximální hloubka stromu - může být. úplné: NE (i když je b konečné, z důvodu možné existence smyček) čas? /DFS

pvlastnosti DFS Mějme b maximální faktor větvení (největší počet hran jdoucích z libovolného uzlu) daného stromu, d - nejmenší hloubka stromu, kde se nachází řešení a m maximální hloubka stromu - může být. úplné: NE (i když je b konečné, z důvodu možné existence smyček) čas: b m tzn. exponenciálně podle m, problémy, je-li m výrazně větší než d. /DFS

pvlastnosti DFS Mějme b maximální faktor větvení (největší počet hran jdoucích z libovolného uzlu) daného stromu, d - nejmenší hloubka stromu, kde se nachází řešení a m maximální hloubka stromu - může být. úplné: NE (i když je b konečné, z důvodu možné existence smyček) čas: b m tzn. exponenciálně podle m, problémy, je-li m výrazně větší než d. paměť? /DFS

pvlastnosti DFS Mějme b maximální faktor větvení (největší počet hran jdoucích z libovolného uzlu) daného stromu, d - nejmenší hloubka stromu, kde se nachází řešení a m maximální hloubka stromu - může být. úplné: NE (i když je b konečné, z důvodu možné existence smyček) čas: b m tzn. exponenciálně podle m, problémy, je-li m výrazně větší než d. paměť: O(bm) /DFS

pvlastnosti DFS Mějme b maximální faktor větvení (největší počet hran jdoucích z libovolného uzlu) daného stromu, d - nejmenší hloubka stromu, kde se nachází řešení a m maximální hloubka stromu - může být. úplné: NE (i když je b konečné, z důvodu možné existence smyček) čas: b m tzn. exponenciálně podle m, problémy, je-li m výrazně větší než d. paměť: O(bm) optimální? /DFS

pvlastnosti DFS Mějme b maximální faktor větvení (největší počet hran jdoucích z libovolného uzlu) daného stromu, d - nejmenší hloubka stromu, kde se nachází řešení a m maximální hloubka stromu - může být. úplné: NE (i když je b konečné, z důvodu možné existence smyček) čas: b m tzn. exponenciálně podle m, problémy, je-li m výrazně větší než d. paměť: O(bm) optimální: ne /DFS

palternativní strategie DL-DFS (Depth-limited) search: prohledávání do hloubky s omezenou hloubkou prohledávání l ID-DFS (Iterative deepening) search: prohledávání do hloubky s iterativní se zvyšující hloubkou prohledávání l Algoritmus: 1. l = 1 2. proveď DL-DFS s hloubkou l 3. if řešení nalezeno konec jinak l = l + 1 a jdi na 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

palgoritmus ID-DFS prohledávání úplné? /IDDFS

palgoritmus ID-DFS prohledávání úplné: ANO (je-li b konečné) /IDDFS

palgoritmus ID-DFS prohledávání úplné: ANO (je-li b konečné) čas? /IDDFS

palgoritmus ID-DFS prohledávání úplné: ANO (je-li b konečné) čas: d + 1 + (d)b + (d 1)b 2 + (d 2)b 3 +... + b d < db d = O(b d ) předpokládáme-li, že každé jedno prohledávání je realizováno algoritmem o komplexitě O(b l ) /IDDFS

palgoritmus ID-DFS prohledávání úplné: ANO (je-li b konečné) čas: d + 1 + (d)b + (d 1)b 2 + (d 2)b 3 +... + b d < db d = O(b d ) paměť? /IDDFS

palgoritmus ID-DFS prohledávání úplné: ANO (je-li b konečné) čas: d + 1 + (d)b + (d 1)b 2 + (d 2)b 3 +... + b d < db d = O(b d ) paměť: O(bd) /IDDFS

palgoritmus ID-DFS prohledávání úplné: ANO (je-li b konečné) čas: d + 1 + (d)b + (d 1)b 2 + (d 2)b 3 +... + b d < db d = O(b d ) paměť: O(bd) optimální? /IDDFS

palgoritmus ID-DFS prohledávání úplné: ANO (je-li b konečné) čas: d + 1 + (d)b + (d 1)b 2 + (d 2)b 3 +... + b d < db d = O(b d ) paměť: O(bd) optimální: ano, optimalizuje-li se hloubka /IDDFS

palgoritmus ID-DFS prohledávání úplné: ANO (je-li b konečné) čas: d + 1 + (d)b + (d 1)b 2 + (d 2)b 3 +... + b d < db d = O(b d ) paměť: O(bd) optimální: ano, optimalizuje-li se hloubka :: porovnání: pro b = 10 a d = 5 v nejhorším případě: /IDDFS

palgoritmus ID-DFS prohledávání úplné: ANO (je-li b konečné) čas: d + 1 + (d)b + (d 1)b 2 + (d 2)b 3 +... + b d < db d = O(b d ) paměť: O(bd) optimální: ano, optimalizuje-li se hloubka :: porovnání: pro b = 10 a d = 5 je počet expandovaných uzlů nejhorším případě: N(id-dfs) = 6 + 50 + 400 + 3, 000 + 20, 000 + 100, 000 = 123, 456 N(bfs) = 1 + 10 + 100 + 1, 000 + 10, 000 + 100, 000 = 111, 111 ID-DFS expanduje pouze o cca 11% uzlů, což se díky výrazným úsporám paměti vyplatí. /IDDFS

pporovnání Strategíı kritérium/algoritmus BFS DFS DL-DFS ID-DFS BiDir čas b d b m b l b d b d 2 paměť b d bm bl bd b d 2 optimalita ano ne ne ano ano úplnost ano ne ano (pro l d) ano ano kde b je faktor větvení, d je hloubka ve které se nachází nejmělčí řešení, m je maximální hloubka stromu, l je mez prohledávání. /IDDFS