Umělá inteligence I Roman Barták, KTIML
Transkript
Umělá inteligence I Roman Barták, KTIML
Umělá inteligence I Roman Barták, KTIML [email protected] http://ktiml.mff.cuni.cz/~bartak Na úvod Zatím pro nás byl model světa černou skříňkou, ke které přistupujeme pouze přes: funkci následníka test cílového stavu heuristickou funkci (vzdálenost do cíle) Dnes si ukážeme jednu z možných obecných reprezentací problémů – problém splňování podmínek (CSP) má vnitřní strukturu, kterou lze využít při řešení obecné metody pro řešení CSP kombinace prohledávání a odvozovacích technik Umělá inteligence I, Roman Barták Sudoku? Logická hádanka, jejímž cílem je doplnit chybějící čísla 1-9 do tabulky 9×9 tak, aby se čísla neopakovala v žádném řádku, sloupci ani v malých čtvercích 3×3. Trochu historie 1979: poprvé publikováno v New Yorku „Number Place“ – „Umísti číslice“ 1986: populární v Japonsku Sudoku – zkráceno z japonštiny "Súdži wa dokušin ni kagiru" “Čísla musí být jedinečná“ 2005: populární mezinárodně Umělá inteligence I, Roman Barták Začínáme se Sudoku Jak poznáme, kam které číslo patří? Využijeme informace, že každé číslo je v řádku maximálně jedenkrát. A co když to nestačí? Podíváme se do sloupců resp. zkombinujeme informaci ze sloupců a řádků. Umělá inteligence I, Roman Barták Podle www.sudoku.com Sudoku o krok dál Pokud řádky ani sloupce neposkytnout přesnou informaci, alespoň si můžeme poznamenat, kde dané číslo může ležet. Poloha čísla může být odvozena i z přítomnosti jiných čísel a z vlastnosti, že každé číslo se musí objevit alespoň jednou. Umělá inteligence I, Roman Barták Podle www.sudoku.com Sudoku obecně Na každé políčko se podíváme jako na proměnnou nabývající hodnoty z domény {1,…,9}. Mezi všemi dvojicemi proměnných v řádku, sloupci či malém čtverci je podmínka nerovnosti. Hodnoty nesplňující podmínky škrtáme. Takto zadaný problém se nazývá problém splňování omezujících podmínek. Škrtání hodnot – filtrace domén – se provádí tak dlouho, dokud se nějaká doména mění. Umělá inteligence I, Roman Barták CSP Problém splňování podmínek se skládá z: konečné popisují „atributy“ řešení, o kterých je potřeba rozhodnout například pozici dámy na šachovnici domén – konečné množiny hodnot pro proměnné popisují možnosti, které máme při rozhodování např. čísla řádků pro umístění dámy někdy se definuje jedna superdoména společná pro všechny proměnné a individuální domény se v ní vytyčí přes unární podmínky konečné množiny proměnných množiny podmínek podmínka je libovolná relace nad množinou proměnných například poziceA ≠ poziceB může být definována extenzionálně (jako množina kompatibilních n-tic) nebo intenzionálně (formulí) Umělá inteligence I, Roman Barták Příklad CSP Najděte obarvení států (červená, modrá, zelená) takové, že sousední státy nemají stejnou barvu. Reprezentace formou CSP proměnné: {WA, NT, Q, NSW, V, SA, T} superdoména: {č, m, z} podmínky: WA ≠ NT atd. Lze také popsat formou sítě podmínek (vrcholy=proměnné, hrany=podmínky) Řešení problému WA = č, NT = z, Q = č, NSW = z, V = č, SA = m, T = z Umělá inteligence I, Roman Barták Základní pojmy Stav odpovídá přiřazení hodnot do (některých) proměnných. Konzistentní stav (přiřazení) neporušuje žádnou z podmínek. V úplném stavu (přiřazení) mají všechny proměnné přiřazenu hodnotu. Cílem je najít úplný konzistentní stav (přiřazení). Někdy se k definici problému přidává objektivní funkce, tj. funkce definovaná na (některých) proměnných. Potom je optimálním cílovým stavem úplný konzistentní stav (přiřazení), který maximalizuje/minimalizuje hodnotu objektivní funkce. Umělá inteligence I, Roman Barták Jak řešit CSP? Zatím jsme se naučili prohledávací algoritmy, tak je zkusíme i pro CSP. počáteční stav: prázdné přiřazení možné akce: přiřazení hodnoty do volné proměnné takové, že neporuší žádnou podmínku cíl: úplné konzistentní přiřazení Poznámky: řešící postup je stejný pro všechny CSP řešení je vždy v hloubce n, kde n je počet proměnných můžeme bez problémů použít DFS (bez kontroly cyklů) pořadí akcí nemá žádný vliv na řešení (problém je tzv. komutativní) 〈WA=č, NT=z〉 je stejné jako 〈NT=z, WA=č〉 pro řešení CSP lze používat i jiná typy větvení než enumeraci (například půlení domén) Umělá inteligence I, Roman Barták Backtracking rekurzivní algoritmus Základní neinformovaný algoritmus pro řešení CSP postupně přiřazujeme hodnoty do volných proměnných pokud žádná hodnota přiřadit nelze, potom u poslední přiřazené proměnné zkusíme jinou hodnotu Umělá inteligence I, Roman Barták Backtracking v příkladě Takto Takto fakticky fakticky vypadá vypadá prohledávání prohledávání do do hloubky. hloubky. Skutečný backtracking Skutečný backtracking udržuje udržuje pouze pouze stavy stavy na na cestě cestě zz kořene kořene do do aktuálního aktuálního listu listu resp. resp. aktuální aktuální ohodnocení ohodnocení proměnných! proměnných! Umělá inteligence I, Roman Barták Backtracking efektivita Jak ovlivnit efektivitu prohledávání? volbou zpravidla problémově závislé volbou „správné“ hodnoty proměnné pro ohodnocení i když nakonec musíme přiřadit hodnoty do všech proměnných, může pořadí proměnných ovlivnit velikost prohledávaného prostoru úspěšné problémově nezávislé heuristiky včasnou odvozením dodatečné informace využitím detekcí slepých větví struktury problému některé problémy (např. CSP se stromovým grafem podmínek) lze vyřešit bez navracení Umělá inteligence I, Roman Barták variable ordering Nejvíce omezená proměnná Backtracking výběr proměnné tj. proměnná s nejmenším počtem možných akcí tj. proměnná s nejmenší doménou tzv. dom heuristika Proměnná s nejvíce podmínkami s volnými proměnnými tzv. deg heuristika používá se pro dodatečný výběr pokud dom heuristika neurčí jedinou proměnnou (dom+deg heuristika) V obou případech se jedná o instanci pravidla prvního neúspěchu (fail-first), které doporučuje vybrat proměnnou, jejíž ohodnocení nejspíše povede k neúspěchu. Umělá inteligence I, Roman Barták value ordering Backtracking výběr hodnoty Pří výběru hodnoty naopak preferujeme hodnotu, která nejspíše patří do řešení – pravidlo prvního úspěchu (succeed-first). Jak ji ale obecně poznáme? například hodnota, která nejméně omezí zbývající volné proměnné (nechá v problému největší flexibilitu) červená červená barva barva pro pro Q Q umožní umožní použít použít modrou modrou barvu barvu pro pro SA SA modrá modrá barva barva pro pro Q Q vyloučí vyloučí všechny všechny barvy barvy pro pro SA SA „přesnější“ hodnotu lze najít například zjištěním počtu řešení relaxovaného problému, kde je daná hodnota použita výpočtově náročné, proto se často používají problémově závislé heuristiky Umělá inteligence I, Roman Barták forward checking Kontrola dopředu Nemohli bychom „uhodnout“ dopředu, že daná cesta nevede do cíle? po přiřazení hodnoty můžeme dopředu zkontrolovat podmínky, které vedou z aktuální proměnné do volných proměnných – kontrola dopředu zkontrolovat = vyřadit hodnoty, které podmínku nesplňují po po přiřazení přiřazení červené červené do do WA WA tuto tuto barvu barvu odstraníme odstraníme ze ze sousedů, sousedů, tj. tj. NT NT aa SA SA po po přiřazení přiřazení zelené zelené do do Q Q tuto tuto barvu barvu odstraníme odstraníme ze ze sousedů, sousedů, tj. tj. NT, NT, SA, SA, NSW NSW po po přiřazení přiřazení modré modré do do VV tuto tuto barvu barvu odstraníme odstraníme ze ze sousedů, sousedů, tj. tj. NSW NSW aa SA, SA, které které má má nyní nyní prázdnou prázdnou doménu, doménu, aa proto proto se se musím musím vrátit vrátit Umělá inteligence I, Roman Barták constraint propagation Propagace podmínek Nemohli bychom z podmínek odvodit ještě více informací? pokud bychom se při kontrole dopředu podívali i na podmínky mezi dosud neohodnocenými proměnnými, zjistíme, že sousedé NT a SA nemohou být najednou modří, což jsou jediné hodnoty v jejich doménách protože se přiřazená hodnota propaguje přes všechny podmínky do dalších proměnných, hovoříme o propagaci podmínek nebo také o pohledu dopředu (look ahead) realizuje se metodou udržování konzistence podmínek Umělá inteligence I, Roman Barták arc consistency Hranová konzistence každá podmínka odfiltrujte z domén „svých“ proměnných hodnoty, které ji nesplňují často se realizuje směrově odstraněním hodnot z domény proměnné X, které nemají podporu v doméně proměnné Y z (binární) podmínky (X,Y) a naopak filtraci je třeba zavolat kdykoliv se změní doména proměnné Y filtrace se tak opakuje, dokud se zmenšují domény až do dosažení pevného bodu nebo vyprázdnění nějaké domény Umělá inteligence I, Roman Barták Algoritmus AC-3 Algoritmus Algoritmus lze lze volat volat inkrementálně inkrementálně vv rámci rámci prohledávání prohledávání -- pokud pokud se se instanciovala instanciovala proměnná proměnná XXi,i, potom potom se se fronta fronta inicializuje inicializuje všemi všemi hranami hranami (podmínkami), (podmínkami), které které do do ní ní vedou. vedou. Pokud Pokud se se změnila změnila doména doména proměnné proměnné XXi,i, potom potom je je potřeba potřeba zkontrolovat zkontrolovat všechny všechny hrany hrany (podmínky), (podmínky), které které do do ní ní vedou vedou ss výjimkou výjimkou XXjj.. × 3 Časová ), kde kde ee je je Časová složitost složitost algoritmu algoritmu O(ed O(ed3), počet počet podmínek podmínek aa dd velikost velikost domény, domény, není není optimální, optimální, protože protože se se opakovaně opakovaně testují testují stejné stejné dvojice dvojice hodnot. hodnot. Pamatováním Pamatováním si si výsledků výsledků testů testů lze lze udělat ), AC-4, AC-4, AC-3.1, AC-3.1, AC-2001 AC-2001 udělat optimálně optimálně vv O(ed O(ed22), Filtrace Filtrace domény domény proměnné proměnné XXii odstraní odstraní hodnoty, hodnoty, které které nemají nemají kompatibilní kompatibilní hodnotu hodnotu vv proměnné proměnné XXjj aa zároveň zároveň oznámí, oznámí, zda zda se se něco něco smazalo. smazalo. Pokud Pokud známe známe sémantiku sémantiku podmínky, podmínky, nemusíme nemusíme kontrolovat kontrolovat hodnotu hodnotu po po hodnotě hodnotě (např. (např. uu X<Y) X<Y) Umělá inteligence I, Roman Barták Silnější konzistence Obecně lze definovat k-konzistenci, jako zajištění, že pro konzistentní hodnoty (k-1) různých proměnných lze najít konzistentní hodnotu libovolné další proměnné hranová konzistence (AC) = 2-konzistence konzistence po cestě (PC) = 3-konzistence X1 a b ≠ ≠ X2 a b a b c X3 Je-li problém i-konzistentní ∀i=1,..,n (n je počet proměnných), potom umíme řešit bez navracení. ≠ Problém Problém je je AC AC ale ale není není PC. PC. v DFS vždy najdeme hodnotu další proměnné, která je kompatibilní s i předchůdci Bohužel, složitost k-konzistence je exponenciální v k. Umělá inteligence I, Roman Barták Globální podmínky Místo silnějších typů konzistencí se v praxi spíše používají tzv. globální podmínky, které v sobě sdružují několik jednoduchých podmínek a speciálním filtračním algoritmem zajišťují pro tuto množinu podmínek globální konzistenci. Příklad: podmínka all_different({X1,…, Xk}) a b X1 ≠ X2 nahrazuje binární nerovnosti X1 ≠ X2, X1 ≠ X3, …, Xk-1 ≠ Xk all_different({X1,…, Xk}) = {( d1,…, dk) | ∀i di∈Di & ∀i≠j di ≠ dj} filtrační algoritmus založen na párování v bipartitních grafech a b ≠ ≠ a b c X3 X1 a X2 b X3 × × c 1. 1. najde najde maximální maximální párování párování 2. 2.odstraní odstraní hrany, hrany, které které nejsou nejsou součástí součástí žádného žádného maximálního maximálního párování párování 3. 3.odstraní odstraní příslušné příslušné hodnoty hodnoty Bipartitní Bipartitní graf graf •• na na jedné jedné straně straně proměnné, proměnné, na na druhé druhé straně straně hodnoty hodnoty •• Hrana Hrana spojuje spojuje hodnotu hodnotu ss proměnnou, proměnnou, pokud pokud je je vv její její doméně doméně Umělá inteligence I, Roman Barták Finální poznámky Deklarativní přístup k řešení problémů vytvoříme model (proměnné, domény, podmínky) použijeme obecný řešič podmínek Možná rozšíření optimalizační řešeno metodou větví a mezí (branch-and-bound) měkké problémy podmínky podmínka určuje pouze preferenci, kterou je dobré respektovat Řeší se podobně jako optimalizační problémy Jiné řešící techniky lokální prohledávání (na cestě nezáleží) celočíselné programování Umělá inteligence I, Roman Barták Oblasti aplikací Bioinformatika sekvencování DNA hledání 3D struktury proteinů Plánování autonomní plánování operací kosmických lodí (Deep Space 1) Rozvrhování výroby úspory po aplikaci CSP: denně US$ 0.2-1 milión Umělá inteligence I, Roman Barták Pro zájemce Systémy pro řešení podmínek SICStus Prolog (v našich laboratořích) ECLiPSe (Open Source, http://eclipse.crosscoreop.com/) GECODE (Open Source C++, http://www.gecode.org/) … Přednáška Programování s omezujícími podmínkami LS 2/0 Zk http://kti.mff.cuni.cz/~bartak/podminky/ Umělá inteligence I, Roman Barták