Vraťme se k základům: DFS = Depth First Search

Podobné dokumenty
Optimalizace & soft omezení: algoritmy

Hranová konzistence. Arc consistency AC. Nejprve se zabýváme binárními CSP. podmínka odpovídá hraně v grafu podmínek

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

Programování. s omezujícími podmínkami. Roman Barták. roman.bartak@mff.cuni.cz

Programování. s omezujícími podmínkami. Roman Barták. rová hranová konzistence

Algoritmizace prostorových úloh

Ú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ů

Metody lineární optimalizace Simplexová metoda. Distribuční úlohy

prochází částečná konzistentní ohodnocení dokud nenajde úplné (konzistentní) ohodnocení Základní princip prohledávání s navracení při řešení CSP:

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

u odpovědí typu A, B, C, D, E: Obsah: jako 0) CLP Constraint Logic Programming

popel, glum & nepil 16/28

3. úloha - problém batohu metodami branch & bound, dynamické programování, heuristika s testem

Automatizované řešení úloh s omezeními

Co je obsahem? O čem bude přednáška? plánování a rozvrhování. ono se to někde používá? aplikace? řešící algoritmy.

Rekurzivní algoritmy

Aproximativní algoritmy UIN009 Efektivní algoritmy 1

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

Programování. s omezujícími podmínkami. SAT a lokáln. Algoritmus GSAT. Algoritmus GSAT. Roman Barták

4EK213 Lineární modely. 10. Celočíselné programování

OPTIMALIZACE. (přehled metod)

Dynamické programování

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

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

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

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

Dynamické rozvrhování

Základy umělé inteligence

CLP(F D) program. Základní struktura CLP programu solve( Variables ) :- 1. definice proměnných a jejich domén declare_variables( Variables),

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

Obsah: CLP Constraint Logic Programming. u odpovědí typu A, B, C, D, E: jako 0)

7. Heuristické metody

Algoritmy I, složitost

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

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

Obsah: Problém osmi dam

12. Globální metody MI-PAA

Algoritmy a datové struktury

Grafové algoritmy. Programovací techniky

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

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

ROZHODOVACÍ PROCEDURY A VERIFIKACE PAVEL SURYNEK, KTIML

Algoritmizace Dynamické programování. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010

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

2.1 Podmínka typu case Cykly Cyklus s podmínkou na začátku Cyklus s podmínkou na konci... 5

ILOG (aisa:/software/ilog/solver51/doc/index.html)

Binární soubory (datové, typované)

Implementace LL(1) překladů

Vyberte oblečení tak, aby navzájem ladilo. Proměnné: shirt: {red, white}

Algoritmizace. 1. Úvod. Algoritmus

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

Plánování se stavovým prostorem

Datové struktury 2: Rozptylovací tabulky

Časová a prostorová složitost algoritmů

OPTIMALIZACE A MULTIKRITERIÁLNÍ HODNOCENÍ FUNKČNÍ ZPŮSOBILOSTI POZEMNÍCH STAVEB D24FZS

Algoritmus pro hledání nejkratší cesty orientovaným grafem

PA163 Programování s omezujícími podmínkami

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

Grafové algoritmy. Programovací techniky

TGH09 - Barvení grafů

R zné algoritmy mají r znou složitost

Heuristické řešení problémů. Seminář APS Tomáš Müller

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

Poslední nenulová číslice faktoriálu

Činnost: 1) Vyhodnotí se výraz E. 2) Jeho hodnota se uloží do proměnné V.

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

Výroková a predikátová logika - V

Paradigmata programování II Korutiny a nedeterminismus

13. Lineární programování

jednoduchá heuristika asymetrické okolí stavový prostor, kde nelze zabloudit připustit zhoršují cí tahy Pokročilé heuristiky

11. Tabu prohledávání

1 Úvod do celočíselné lineární optimalizace

Hraní her. (Teorie a algoritmy hraní her) Řešení úloh hraní her. Václav Matoušek /

3. Prohledávání grafů

NPRG030 Programování I, 2018/19 1 / :03:07

Binární vyhledávací stromy pokročilé partie

Prohledávání stavového prostoru

Úvod do teorie grafů

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

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

Algoritmy pro hraní tahových her

bfs, dfs, fronta, zásobník

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

Systém přirozené dedukce výrokové logiky

Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program

2. Řešení úloh hraní her Hraní her (Teorie a algoritmy hraní her)

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

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

Syntaktická analýza. Implementace LL(1) překladů. Šárka Vavrečková. Ústav informatiky, FPF SU Opava

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]

Obsah prezentace. Základní pojmy v teorii o grafech Úlohy a prohledávání grafů Hledání nejkratších cest

Stromy. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol.

Programovací jazyk Pascal

vhodná pro strojové dokazování (Prolog) metoda založená na vyvracení: dokazuje se nesplnitelnost formulí

Rekurze. Pavel Töpfer, 2017 Programování 1-8 1

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

Informatika navazující magisterské studium Přijímací zkouška z informatiky 2018 varianta A

2. úkol MI-PAA. Jan Jůna (junajan)

Digitální učební materiál

NPRG030 Programování I RNDr.Tomáš Holan, Ph.D. 4.patro, č

Transkript:

Prohledávání do hloubky Vraťme se k základům: DFS = Depth First Search DFS Programování s omezujícími podmínkami Roman Barták Katedra teoretické informatiky a matematické logiky roman.bartak@mff.cuni.cz http://ktiml.mff.cuni.cz/~bartak 1 2 3 4 5 6 7 8 9 Pozorování: Praktické problémy mají tak velké prostory možných ohodnocení, že není možné je celé prohledat. Je možné prohledat jen omezený prostor! Neúplná stromová prohledávání Neprohledají celý stavový prostor. negarantují dokázání neexistence řešení ani nalezení řešení (úplnost) Neúplná prohledávání někdy lze úplnost zaručit, ale při větší časové složitosti V řadě případů padů najdou řešení rychleji. Často odvozeny od úplného algoritmu (DFS) přerušení běhu (cutoff) po vyčerpání přidělených prostředků (čas, návraty, kredit, ) může být globální (pro celý strom) i lokální (pro daný podstrom nebo uzel) opakování běhu (restart) s jinak nastavenými parametry (např. s více přidělenými prostředky) pro další běh lzepoužítučící učící se techniky Omezený počet návratů (cutoff) Bounded Backtrack Search za návrat se nepočítá návrat do bodu, kde už není další alternativa omezený počet navštívených listů Při neúspěchu zvětšíme počet návratů o jedna(restart) (restart). Příklad: BBS(8) 1 2 3 4 5 6 7 8 9 počítáme počet návratů (neúspěchů) při překročení meze se prohledávání ukončí BBS

Iterative Broadening Omezený počet alternativ (šířka) v každém uzlu (cutoff). v každém uzlu se zkouší jen daný počet hodnot pozor, pořád exponenciální složitost! Při neúspěchu zvětšíme šířku o jedna (restart). Příklad: IB(2) IB Depth Bounded Search Omezená hloubka úplného prohledávání (cutoff). do dané hloubky stromu se zkouší všechny alternativy ve zbytku btk stromu se může použít jiná neúplná metoda Při neúspěchu zvětšíme hloubku o jedna (restart). Příklad: DBS(3) DBS 1 2 3 4 5 6 7 8 omezí se počet pokusů v každém uzlu (vnitřní for-cyklus) 1 2 3 4 5 6 7 8 udržujeme pořadové číslo přiřazované proměnné je-li pořadové číslo větší než daná mez, zkouší se pouze jedna alternativa BBS(0) Credit Search Omezený kredit (počet č návratů) pro prohledávání á (cutoff). kredit se dělí mezi alternativní větve prohledávání jednotkový kredit zakazuje možnost volby (hodnoty) Při neúspěchu navýšíme kredit o jedna (restart). Příklad: CS(7) 4 3 2 2 2 1 1 1 1 1 1 1 2 3 4 5 6 7 v každém uzlu se nejednotkový kredit (rovnoměrně) rozdělí mezi alternativní podstromy při jednotkovém kreditu se neberou alternativy 1 CS Prohledávání a heuristiky Při řešení reálných problémů často existuje nápověda odvozená ze zkušeností s ručním řešením problému. Heuristiky - rádce kudy se vydat při prohledávání doporučují hodnotu pro přiřazení (value ordering) často vedou přímo k řešení Co ale dělat, když heuristika neuspěje? DFS se stará se hlavně ě o konec prohledávání á (spodní část tstromu) spíše tedy opravuje poslední použité heuristiky než první předpokládá, že dříve použité heuristiky ho navedly dobře Pozorování 1: Počet porušení heuristiky na úspěšné cestě je malý. Pozorování 2: Heuristiky jsou méně spolehlivé na začátku prohledávání než na jeho konci (na konci máme více informací a méně možností).

Zotavení se z chyb heuristiky Jak můžeme udělat prohledávání efektivnější než backtracking? Backtracking je slepý pokud jde o heuristiky. Diskrepance = porušení heuristiky (je vybrána jiná hodnota) Základní principy py prohledávání s diskrepancemi: změníme pořadí prohledávaných větví podle vlastností heuristik dříve prozkoumáme větve s méně diskrepancemi je před heuristika říká jdi doleva (Harvey & Ginsberg, IJCAI 1995) Limited Discrepancy Search Omezený maximální počet diskrepancí na cestě (cutoff) cesty s diskrepancemi na začátku jsou prozkoumány dříve Při neúspěchu navýšíme počet povolených diskrepancí o jedna (restart). tj. nejprve jdeme tak, jak doporučuje heuristika potom jdeme po cestách s maximálně jednou diskrepancí Příklad: LDS(1), heuristika doporučuje vydat se levou větví LDS dříve prozkoumáme větve s dřívějšími diskrepancemi je před heuristika říká jdi doleva 6 5 4 3 2 1 Poznámka pro nebinární domény: nedoporučené hodnoty se berou jako jedna diskrepance (zde) každá další nedoporučená č áhodnota se bere jako navýšení diskrepance (tj. třetí hodnota = dvě diskrepance) (Harvey & Ginsberg, IJCAI 1995) Algoritmus LDS procedure LDS-PROBE(Unlabelled,Labelled,Constraints,D) if Unlabelled = {} then return Labelled select X in Unlabelled Values X D X - {values inconsistent with Labelled using Constraints} if Values X = {} then return fail elseselect HV in Values X using heuristic if D>0 then for each value V from Values X -{HV} do R LDS-PROBE(Unlabelled-{X}, Labelled {X/V}, Constraints, D-1) end if return LDS-PROBE(Unlabelled-{X}, Labelled {X/HV}, Constraints, D) end if end LDS-PROBE procedure LDS(Variables,Constraints) for D=0 to Variables do % D určuje max. počet povolených diskrepancí R LDS-PROBE(Variables,{},Constraints,D) return fail end LDS (Korf, AAAI 1996) Improved LDS LDS v každé další iteraci prochází i větve z předchozí iterace, tj. opakuje již provedený výpočet a navíc se v rámci iterace musí vracet do již prošlých částí. ILDS: Daný počet diskrepancí na cestě (cutoff) cesty s diskrepancemi na konci prozkoumány dříve Při neúspěchu navýšíme počet diskrepancí o jedna (restart) Příklad: ILDS(1), heuristika doporučuje vydat se levou větví 1 2 3 4 5 ILDS

(Korf, AAAI 1996) Improved LDS LDS v každé další iteraci prochází i větve z předchozí iterace, tj. opakuje již provedený výpočet a navíc se v rámci iterace musí vracet do již prošlých částí. ILDS: Daný počet diskrepancí na cestě (cutoff) cesty s diskrepancemi na konci prozkoumány dříve Při neúspěchu navýšíme počet diskrepancí o jedna (restart) Příklad: ILDS(1), heuristika doporučuje vydat se levou větví 1 2 3 4 5 ILDS (Korf, AAAI 1996) Algoritmus ILDS procedure ILDS-PROBE(Unlabelled, Labelled, Constraints, D) if Unlabelled = {} then return Labelled select X in Unlabelled Values X D X - {values inconsistent with Labelled using Constraints} if Values X = {} then return fail elseselect HV in Values X using heuristic if D< Unlabelled then R ILDS-PROBE(Unlabelled-{X}, Labelled {X/HV}, Constraints, D) if D>0 then for each value V from Values X -{HV} do R ILDS-PROBE(Unlabelled-{X}, Labelled {X/V}, Constraints, D-1) Rozdíl oproti LDS end if end ILDS-PROBE procedure ILDS(Variables,Constraints) for D=0 to Variables do % D určuje max. počet povolených diskrepancí R ILDS-PROBE(Variables,{},Constraints,D) return fail end LDS (Walsh, IJCAI 1997) Depth-Bounded Discr. Search DDS ILDS bere cesty s diskrepancemi na konci dříve. DDS: Diskrepance povoleny pouze do dané hloubky (cutoff) v této hloubce musí být vždy diskrepance čímž se zabrání procházení větví z předchozí iterace hloubka zároveň omezuje počet diskrepancí cesty s diskrepancemi na začátku prozkoumány dříve Při neúspěchu navýšíme hloubku o jedna (restart) Příklad: DDS(3), heuristika doporučuje vydat se levou větví Enumerace ano či ne? Dosud jsme předpokládali, že prohledávací algoritmus dělá tzv. labelling, tj. přiřazování hodnot proměnným. přiřadíme hodnotu,,propagujeme p a v případě p neúspěchu zkusíme přiřadit další hodnotu proto se tato technika nazývá enumerace propagace se využije pouze po přiřazení hodnoty Příklad: 0 1 2 X,Y,Z in 0,,N-1 (N je konstanta) Z X=Y, X=Z, Z=(Y+1) mod N problém je AC, ale nemá žádné řešení enumerace bude zkoušet všechny hodnoty pro n=10 7 běží 45 s. (na 1.7 GHz P4) X Y 1 2 3 4 Šlo by labelling udělat lépe?

Další větvící strategie Enumerace vlastně řeší disjunkce tvaru X=0 X=1 X=N-1 pokud přiřazení neexistuje, musí vyzkoušet všechny hodnoty Můžeme využít propagaci i pokud zjistíme, že hodnota není v řešení! příslušnou suš hodnotu otuprostě z domény smažeme, e, což vyvolá propagaci, která dále ořeže domény řešíme disjunkce tvaru X=H X H jedná se o tzv. step labelling lli (bývá implicitní/default it lt strategií) t příklad z předchozího slajdu vyřeší za 22 s. pouze vyzkoušením a zamítnutím hodnoty 0 pro X Proč tak dlouho? V každém cyklu AC algoritmu se odstraní právě jedna hodnota. Další běžné větvení je půlení domény (bisection/domain splitting) řešíme disjunkce tvaru X H X>H, kde H je hodnota uprostřed domény Řešící techniky v kostce Problémy s omezujícími podmínkami můžeme řešit: lokálním prohledáváním kombinací prohledávání do hloubky a hranové konzistence Poznámky ke konzistenčním technikám: Hranová konzistence slouží k prořezání prohledávaného stromu. Obecně ě silnější ě konzistence odstraní více větví ě stromu, které nevedou k řešení. Silnější konzistence od PC jsou ale výpočtově ě drahé! Optimalizace podmínek Dosud jsme hledali libovolné řešení splňující všechny podmínky. Často je potřeba najít optimální řešení, kde kvalita je definována objektivní funkcí. Definice: i Problém optimálního splňování podmínek (Constraint Satisfaction Optimisation Problem - CSOP) se skládá z CSP problému P a objektivní funkce f mapující řešení P na čísla. Řešením š í CSOP je řešení š í problému P minimalizující i í / maximalizující hodnotu funkce f. Pro řešení CSOP obecně potřebujeme procházet všechna řešení, tj. používají se metody schopné poskytnout všechna řešení CSP. Metoda větví a mezí Metoda větví a mezí (branch and bound) d)je nejběžnější ější optimalizační technika založená na ořezávání větví, ve kterých se nenachází řešení. Používá heuristickou funkci h odhadující objektivní funkci. korektní heuristika pro minimalizaci aci splňuje h(x) f(x) [korektní heuristika pro maximalizaci splňuje f(x) h(x)] lepší je heuristika bližší k objektivní funkci Při prohledávání stromu řešení je podstrom uříznut, pokud: vpodstromuneexistuje žádné řešení v podstromu není optimální řešení mez h(x), kde mez je maximální hodnota přípustného řešení Jak získáme mez? například hodnota dosud nejlepšího řešení

BB a splňování podmínek S objektivní funkcí pracujeme jako s podmínkou optimalizujeme hodnotu proměnné v, kde v = f(x) první řešení získáme bez omezení proměnné v po dalších řešeních požadujeme, aby byla lepší (v < Bound) opakujeme, dokud nalézáme lepší řešení Algoritmus Branch & Bound procedure BB-Min(Variables, V, Constraints) Bound sup NewSolution fail repeat Solution NewSolution NewSolution Solve(Variables,Constraints {V<Bound}) Bound value of V in NewSolution (if any) until NewSolution = fail return Solution end BB-Min Heuristika h je ukryta v propagaci p podmínky v = f(x). () Efektivita řešícího algoritmu je závislá na: dobré heuristice (propagace přes objektivní funkci) včasném nalezení dobrého řešení můžeme pomoci přesnější počáteční mezí Nalezení optimálního řešení může být rychlé Poznámky k BB dlouho trvá důkaz optimálnosti (musí se projít zbylá řešení) Většinou nepotřebujeme optimální řešení, stačí dobré řešení BB můžeme ukončit po dosažení stanovené meze Zrychlení BB získáme zpřesňováním dolní a horní meze půlením. repeat TempBound (UBound+LBound) / 2 NewSolution Solve(Variables,Constraints {V TempBound}) if NewSolution=fail then LBound TempBound+1 else UBound TempBound until LBound = UBound