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