Probl´ emy s omezuj´ıc´ımi podm´ınkami
Aleˇs Hor´ak
E-mail: hales@fi.muni.cz http://nlp.fi.muni.cz/uui/
Obsah:
Pr˚ubˇeˇzn´a p´ısemn´a pr´ace
Probl´emy s omezuj´ıc´ımi podm´ınkami CLP – Constraint Logic Programming
Pr˚ubˇeˇzn´a p´ısemn´a pr´ace
Pr˚ ubˇ eˇzn´ a p´ısemn´ a pr´ ace
d´elka pro vypracov´an´ı:25 minut nejsoupovolenyˇz´adn´emateri´aly u odpovˇed´ı typu A, B, C, D, E:
• pouze jedna odpovˇed’ jenejspr´avnˇejˇs´ı
,
• za tuto nejspr´avnˇejˇs´ı je 8 bod˚u
• za ˇz´adnou odpovˇed je0 bod˚u
• za libovolnou jinou, pˇr´ıpadnˇe za nejasn´e oznaˇcen´ı odpovˇedi jem´ınus 3 body celkov´e hodnocen´ı0 aˇz 32 bod˚u (celkov´e z´aporn´e hodnocen´ı se bere jako 0)
´
Pr˚ubˇeˇzn´a p´ısemn´a pr´ace
Pr˚ ubˇ eˇzn´ a p´ısemn´ a pr´ ace
d´elka pro vypracov´an´ı:25 minut
14:02 – 14:27
nejsoupovolenyˇz´adn´emateri´aly u odpovˇed´ı typu A, B, C, D, E:
• pouze jedna odpovˇed’ jenejspr´avnˇejˇs´ı
,
• za tuto nejspr´avnˇejˇs´ı je 8 bod˚u
• za ˇz´adnou odpovˇed je0 bod˚u
• za libovolnou jinou, pˇr´ıpadnˇe za nejasn´e oznaˇcen´ı odpovˇedi jem´ınus 3 body celkov´e hodnocen´ı0 aˇz 32 bod˚u (celkov´e z´aporn´e hodnocen´ı se bere jako 0)
Pr˚ubˇeˇzn´a p´ısemn´a pr´ace
Pr˚ ubˇ eˇzn´ a p´ısemn´ a pr´ ace
d´elka pro vypracov´an´ı:25 minut
14:04 – 14:29
nejsoupovolenyˇz´adn´emateri´aly u odpovˇed´ı typu A, B, C, D, E:
• pouze jedna odpovˇed’ jenejspr´avnˇejˇs´ı
,
• za tuto nejspr´avnˇejˇs´ı je 8 bod˚u
• za ˇz´adnou odpovˇed je0 bod˚u
• za libovolnou jinou, pˇr´ıpadnˇe za nejasn´e oznaˇcen´ı odpovˇedi jem´ınus 3 body celkov´e hodnocen´ı0 aˇz 32 bod˚u (celkov´e z´aporn´e hodnocen´ı se bere jako 0)
´
Pr˚ubˇeˇzn´a p´ısemn´a pr´ace
Pr˚ ubˇ eˇzn´ a p´ısemn´ a pr´ ace
d´elka pro vypracov´an´ı:25 minut
14:06 – 14:31
nejsoupovolenyˇz´adn´emateri´aly u odpovˇed´ı typu A, B, C, D, E:
• pouze jedna odpovˇed’ jenejspr´avnˇejˇs´ı
,
• za tuto nejspr´avnˇejˇs´ı je 8 bod˚u
• za ˇz´adnou odpovˇed je0 bod˚u
• za libovolnou jinou, pˇr´ıpadnˇe za nejasn´e oznaˇcen´ı odpovˇedi jem´ınus 3 body celkov´e hodnocen´ı0 aˇz 32 bod˚u (celkov´e z´aporn´e hodnocen´ı se bere jako 0)
Pr˚ubˇeˇzn´a p´ısemn´a pr´ace
Pr˚ ubˇ eˇzn´ a p´ısemn´ a pr´ ace
d´elka pro vypracov´an´ı:25 minut
14:08 – 14:33
nejsoupovolenyˇz´adn´emateri´aly u odpovˇed´ı typu A, B, C, D, E:
• pouze jedna odpovˇed’ jenejspr´avnˇejˇs´ı
,
• za tuto nejspr´avnˇejˇs´ı je 8 bod˚u
• za ˇz´adnou odpovˇed je0 bod˚u
• za libovolnou jinou, pˇr´ıpadnˇe za nejasn´e oznaˇcen´ı odpovˇedi jem´ınus 3 body celkov´e hodnocen´ı0 aˇz 32 bod˚u (celkov´e z´aporn´e hodnocen´ı se bere jako 0)
´
Pr˚ubˇeˇzn´a p´ısemn´a pr´ace
Pr˚ ubˇ eˇzn´ a p´ısemn´ a pr´ ace
d´elka pro vypracov´an´ı:25 minut
14:10 – 14:35
nejsoupovolenyˇz´adn´emateri´aly u odpovˇed´ı typu A, B, C, D, E:
• pouze jedna odpovˇed’ jenejspr´avnˇejˇs´ı
,
• za tuto nejspr´avnˇejˇs´ı je 8 bod˚u
• za ˇz´adnou odpovˇed je0 bod˚u
• za libovolnou jinou, pˇr´ıpadnˇe za nejasn´e oznaˇcen´ı odpovˇedi jem´ınus 3 body celkov´e hodnocen´ı0 aˇz 32 bod˚u (celkov´e z´aporn´e hodnocen´ı se bere jako 0)
Probl´emy s omezuj´ıc´ımi podm´ınkami
Probl´ emy s omezuj´ıc´ımi podm´ınkami
standardn´ı probl´emˇreˇsen´y prohled´av´an´ım stavov´eho prostoru →stavje
“ˇcern´a skˇr´ıˇnka” – pouzec´ılov´a podm´ınka apˇrechodov´a funkce
´
Probl´emy s omezuj´ıc´ımi podm´ınkami
Probl´ emy s omezuj´ıc´ımi podm´ınkami
standardn´ı probl´emˇreˇsen´y prohled´av´an´ım stavov´eho prostoru →stavje
“ˇcern´a skˇr´ıˇnka” – pouzec´ılov´a podm´ınka apˇrechodov´a funkce probl´em s omezuj´ıc´ımi podm´ınkami, Constraint Satisfaction Problem, CSP:
• n-ticepromˇenn´ychX1,X2, . . . ,Xns hodnotami zdom´enD1,D2, . . . ,Dn, Di6= ∅
• mnoˇzinaomezen´ıC1,C2, . . . ,Cmnad promˇenn´ymi Xi
Probl´emy s omezuj´ıc´ımi podm´ınkami
Probl´ emy s omezuj´ıc´ımi podm´ınkami
standardn´ı probl´emˇreˇsen´y prohled´av´an´ım stavov´eho prostoru →stavje
“ˇcern´a skˇr´ıˇnka” – pouzec´ılov´a podm´ınka apˇrechodov´a funkce probl´em s omezuj´ıc´ımi podm´ınkami, Constraint Satisfaction Problem, CSP:
• n-ticepromˇenn´ychX1,X2, . . . ,Xns hodnotami zdom´enD1,D2, . . . ,Dn, Di6= ∅
• mnoˇzinaomezen´ıC1,C2, . . . ,Cmnad promˇenn´ymi Xi
• stav=pˇriˇrazen´ı hodnotpromˇenn´ym {Xi= vi,Xj = vj, . . .}
– konzistentn´ı pˇriˇrazen´ı neporuˇsuje ˇz´adn´e z omezen´ı Ci
– ´upln´e pˇriˇrazen´ı zmiˇnuje kaˇzdou promˇennou Xi
• ˇreˇsen´ı=´upln´e konzistentn´ı pˇriˇrazen´ı hodnotpromˇenn´ym nˇekdy je jeˇstˇe potˇreba maximalizovat c´ılovou funkci
´
Probl´emy s omezuj´ıc´ımi podm´ınkami
Probl´ emy s omezuj´ıc´ımi podm´ınkami
standardn´ı probl´emˇreˇsen´y prohled´av´an´ım stavov´eho prostoru →stavje
“ˇcern´a skˇr´ıˇnka” – pouzec´ılov´a podm´ınka apˇrechodov´a funkce probl´em s omezuj´ıc´ımi podm´ınkami, Constraint Satisfaction Problem, CSP:
• n-ticepromˇenn´ychX1,X2, . . . ,Xns hodnotami zdom´enD1,D2, . . . ,Dn, Di6= ∅
• mnoˇzinaomezen´ıC1,C2, . . . ,Cmnad promˇenn´ymi Xi
• stav=pˇriˇrazen´ı hodnotpromˇenn´ym {Xi= vi,Xj = vj, . . .}
– konzistentn´ı pˇriˇrazen´ı neporuˇsuje ˇz´adn´e z omezen´ı Ci
– ´upln´e pˇriˇrazen´ı zmiˇnuje kaˇzdou promˇennou Xi
• ˇreˇsen´ı=´upln´e konzistentn´ı pˇriˇrazen´ı hodnotpromˇenn´ym nˇekdy je jeˇstˇe potˇreba maximalizovat c´ılovou funkci v´yhody:
• jednoduch´yform´aln´ı jazykpro specifikaci probl´emu
• m˚uˇze vyuˇz´ıvatobecn´e heuristiky(ne jen specifick´e pro dan´y probl´em)
Probl´emy s omezuj´ıc´ımi podm´ınkami Pˇr´ıklad – obarven´ı mapy
Pˇr´ıklad – obarven´ı mapy
Western Australia
Northern Territory
South Australia
Queensland
New South Wales
Victoria
Tasmania
Promˇenn´e WA, NT , Q, NSW , V , SA, T Dom´eny Di = {ˇcerven´a,zelen´a,modr´a}
Omezen´ı – soused´ıc´ı oblasti mus´ı m´ıt r˚uznou barvu tj. pro kaˇzd´e dvˇe soused´ıc´ı: WA 6= NT nebo
(WA, NT ) ∈ {(ˇcerven´a,zelen´a), (ˇcerven´a,modr´a), (zelen´a,modr´a), . . .}
´
Probl´emy s omezuj´ıc´ımi podm´ınkami Pˇr´ıklad – obarven´ı mapy
Pˇr´ıklad – obarven´ı mapy – pokraˇ c.
Western Australia
Northern Territory
South Australia
Queensland
New South Wales
Victoria
Tasmania
Reˇsen´ıˇ – konzistentn´ı pˇriˇrazen´ı vˇsem promˇenn´ym:
{WA =ˇcerven´a,NT =zelen´a,Q=ˇcerven´a,NSW =zelen´a,V =ˇcerven´a, SA=modr´a,T =zelen´a}
Probl´emy s omezuj´ıc´ımi podm´ınkami Varianty CSP podle hodnot promˇenn´ych
Varianty CSP podle hodnot promˇ enn´ ych
diskr´etn´ı hodnoty promˇenn´ych– kaˇzd´a promˇenn´a m´a jednu konkr´etn´ı hodnotu
• koneˇcn´e dom´eny
– napˇr. Booleovsk´e (vˇcetnˇe NP-´upln´ych probl´em˚u splnitelnosti) – v´yˇctov´e
• nekoneˇcn´e dom´eny– ˇc´ısla, ˇretˇezce, . . .
– napˇr. rozvrh prac´ı – promˇenn´e = poˇc´ateˇcn´ı/koncov´y den kaˇzd´eho ´ukolu – vyˇzaduje jazyk omezen´ı, napˇr. StartJob1+ 5 ≤ StartJob3
– ˇc´ıseln´e line´arn´ıprobl´emy jsou ˇreˇsiteln´e, neline´arn´ı obecn´e ˇreˇsen´ı nemaj´ı
´
Probl´emy s omezuj´ıc´ımi podm´ınkami Varianty CSP podle hodnot promˇenn´ych
Varianty CSP podle hodnot promˇ enn´ ych
diskr´etn´ı hodnoty promˇenn´ych– kaˇzd´a promˇenn´a m´a jednu konkr´etn´ı hodnotu
• koneˇcn´e dom´eny
– napˇr. Booleovsk´e (vˇcetnˇe NP-´upln´ych probl´em˚u splnitelnosti) – v´yˇctov´e
• nekoneˇcn´e dom´eny– ˇc´ısla, ˇretˇezce, . . .
– napˇr. rozvrh prac´ı – promˇenn´e = poˇc´ateˇcn´ı/koncov´y den kaˇzd´eho ´ukolu – vyˇzaduje jazyk omezen´ı, napˇr. StartJob1+ 5 ≤ StartJob3
– ˇc´ıseln´e line´arn´ıprobl´emy jsou ˇreˇsiteln´e, neline´arn´ı obecn´e ˇreˇsen´ı nemaj´ı
spojit´e hodnoty promˇenn´ych
• ˇcast´e u re´aln´ych probl´em˚u
• napˇr. poˇc´ateˇcn´ı/koncov´y ˇcas mˇeˇren´ı na Hubbleovˇe teleskopu (z´avis´ı na astronomick´ych, precedenˇcn´ıch a technick´ych omezen´ıch)
• line´arn´ı omezen´ıˇreˇsen´e pomoc´ıLine´arn´ıho programov´an´ı(omezen´ı = line´arn´ı (ne)rovnice tvoˇr´ıc´ı konvexn´ı oblast) → jsou ˇreˇsiteln´e v polynomi´aln´ım ˇcase
Probl´emy s omezuj´ıc´ımi podm´ınkami Varianty omezen´ı
Varianty omezen´ı
un´arn´ıomezen´ı zahrnuje jedinou promˇennou napˇr. SA 6=zelen´a
bin´arn´ıomezen´ı zahrnuj´ı dvˇe promˇenn´e napˇr. SA 6= WA
omezen´ıvyˇsˇs´ıho ˇr´adu zahrnuj´ı 3 a v´ıce promˇenn´ych
napˇr. kryptoaritmetick´e omezen´ı na sloupce u algebrogramu
preferenˇcn´ıomezen´ı (soft constraints), napˇr. ‘ˇcerven´aje lepˇs´ı neˇzzelen´a’
moˇzno reprezentovat pomoc´ıceny pˇriˇrazen´ıu konkr´etn´ı hodnoty a konkr´etn´ı promˇenn´e → hled´a seoptimalizovan´e ˇreˇsen´ıvzhledem k cenˇe
´
Probl´emy s omezuj´ıc´ımi podm´ınkami Graf omezen´ı
Graf omezen´ı
Pro bin´arn´ıomezen´ı:uzly = promˇenn´e,hrany = reprezentuj´ı jednotliv´a omezen´ı
Pro n-´arn´ıomezen´ı:hypergraf: uzly = promˇenn´e, uzly = omezen´ı, hrany = pouˇzit´ı promˇenn´e v omezen´ı
Western Australia
Northern Territory
South Australia
Queensland
New South Wales
Victoria
Tasmania
Victoria
WA
NT
SA
Q
NSW
V
T
Algoritmy pro ˇreˇsen´ı CSP vyuˇz´ıvaj´ı t´eto grafov´e reprezentace omezen´ı
CLP – Constraint Logic Programming
CLP – Constraint Logic Programming
:-use module(library(clpfd)). % clpq, clpr
?− X in 1..5, Y in 2..8, X+Y #= T.
X in 1..5, Y in 2..8, T in 3..13.
´
CLP – Constraint Logic Programming
CLP – Constraint Logic Programming
:-use module(library(clpfd)). % clpq, clpr
?− X in 1..5, Y in 2..8, X+Y #= T.
X in 1..5, Y in 2..8, T in 3..13.
?X in +Min..+Max
?X in +Domain . . .
A in 1..3 \/8..15 \/5..9 \/100.
+VarList ins +Domain
fd dom(?Var,?Domain) zjiˇstˇen´ı dom´eny promˇenn´e
CLP – Constraint Logic Programming
CLP – Constraint Logic Programming
:-use module(library(clpfd)). % clpq, clpr
?− X in 1..5, Y in 2..8, X+Y #= T.
X in 1..5, Y in 2..8, T in 3..13.
?X in +Min..+Max
?X in +Domain . . .
A in 1..3 \/8..15 \/5..9 \/100.
+VarList ins +Domain
fd dom(?Var,?Domain) zjiˇstˇen´ı dom´eny promˇenn´e
aritmetick´a omezen´ı . . .
– rel. oper´atory #=, #\=, #<, #=<, #>, #>=
– sum(Variables,RelOp,Suma) v´yrokov´a omezen´ı . . .
#\ negace, #/\ konjunkce, #\/ disjunkce, #<==>
ekvivalence kombinatorick´a omezen´ı . . .
all distinct(List), global cardinality(List, KeyCounts)
´
CLP – Constraint Logic Programming
CLP – Constraint Logic Programming
:-use module(library(clpfd)). % clpq, clpr
?− X in 1..5, Y in 2..8, X+Y #= T.
X in 1..5, Y in 2..8, T in 3..13.
?− X in 1..5, Y in 2..8, X+Y #= T,labeling([],[X,Y,T]).
T = 3, X = 1, Y = 2.
?X in +Min..+Max
?X in +Domain . . .
A in 1..3 \/8..15 \/5..9 \/100.
+VarList ins +Domain
fd dom(?Var,?Domain) zjiˇstˇen´ı dom´eny promˇenn´e
aritmetick´a omezen´ı . . .
– rel. oper´atory #=, #\=, #<, #=<, #>, #>=
– sum(Variables,RelOp,Suma) v´yrokov´a omezen´ı . . .
#\ negace, #/\ konjunkce, #\/ disjunkce, #<==>
ekvivalence kombinatorick´a omezen´ı . . .
all distinct(List), global cardinality(List, KeyCounts)
CLP – Constraint Logic Programming
CLP – Constraint Logic Programming – pokraˇ c.
?− X #< 4,[X,Y] ins 0..5.
X in 0..3, Y in 0..5.
´
CLP – Constraint Logic Programming
CLP – Constraint Logic Programming – pokraˇ c.
?− X #< 4,[X,Y] ins 0..5.
X in 0..3, Y in 0..5.
?− X #< 4,indomain(X).
ERROR: Arguments are not sufficiently instantiated
CLP – Constraint Logic Programming
CLP – Constraint Logic Programming – pokraˇ c.
?− X #< 4,[X,Y] ins 0..5.
X in 0..3, Y in 0..5.
?− X #< 4,indomain(X).
ERROR: Arguments are not sufficiently instantiated
?− X #> 3,X #< 6,indomain(X).
X = 4 ? ; X = 5 ? ; false
´
CLP – Constraint Logic Programming
CLP – Constraint Logic Programming – pokraˇ c.
?− X #< 4,[X,Y] ins 0..5.
X in 0..3, Y in 0..5.
?− X #< 4,indomain(X).
ERROR: Arguments are not sufficiently instantiated
?− X #> 3,X #< 6,indomain(X).
X = 4 ? ; X = 5 ? ; false
?− X in 4..sup, X #\= 17,fd dom(X,F).
F = 4..16\/18..sup, X in 4..16\/18..sup.
CLP – Constraint Logic Programming Pˇr´ıklad – algebrogram
Pˇr´ıklad – algebrogram
S E N D + M O R E --- M O N E Y
´
CLP – Constraint Logic Programming Pˇr´ıklad – algebrogram
Pˇr´ıklad – algebrogram
S E N D + M O R E --- M O N E Y
Promˇenn´e Dom´eny Omezen´ı
CLP – Constraint Logic Programming Pˇr´ıklad – algebrogram
Pˇr´ıklad – algebrogram
S E N D + M O R E --- M O N E Y
Promˇenn´e {S, E , N, D, M, O, R, Y } Dom´eny
Omezen´ı
´
CLP – Constraint Logic Programming Pˇr´ıklad – algebrogram
Pˇr´ıklad – algebrogram
S E N D + M O R E --- M O N E Y
Promˇenn´e {S, E , N, D, M, O, R, Y } Dom´eny Di = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
Omezen´ı
CLP – Constraint Logic Programming Pˇr´ıklad – algebrogram
Pˇr´ıklad – algebrogram
S E N D + M O R E --- M O N E Y
Promˇenn´e {S, E , N, D, M, O, R, Y } Dom´eny Di = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
Omezen´ı – S >0, M > 0
– S 6= E 6= N 6= D 6= M 6= O 6= R 6= Y – 1000 ∗ S + 100 ∗ E + 10 ∗ N + D + 1000 ∗ M +
100 ∗ O + 10 ∗ R + E =
10000 ∗ M + 1000 ∗ O + 100 ∗ N + 10 ∗ E + Y
´
CLP – Constraint Logic Programming Pˇr´ıklad – algebrogram
Pˇr´ıklad – algebrogram
S E N D + M O R E --- M O N E Y
Promˇenn´e {S, E , N, D, M, O, R, Y } Dom´eny Di = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
Omezen´ı – S >0, M > 0
– S 6= E 6= N 6= D 6= M 6= O 6= R 6= Y – 1000 ∗ S + 100 ∗ E + 10 ∗ N + D + 1000 ∗ M +
100 ∗ O + 10 ∗ R + E =
10000 ∗ M + 1000 ∗ O + 100 ∗ N + 10 ∗ E + Y moremoney([S,E,N,D,M,O,R,Y], Type) :-[S,E,N,D,M,O,R,Y] ins 0..9,
S #> 0,M #> 0,
all distinct([S,E,N,D,M,O,R,Y]), sum(S,E,N,D,M,O,R,Y),
labeling(Type, [S,E,N,D,M,O,R,Y]).
sum(S,E,N,D,M,O,R,Y) :- 1000∗S + 100∗E + 10∗N + D + 1000∗M + 100∗O + 10∗R + E
#= 10000∗M + 1000∗O + 100∗N + 10∗E + Y.
CLP – Constraint Logic Programming Pˇr´ıklad – algebrogram
Pˇr´ıklad – algebrogram
S E N D + M O R E --- M O N E Y
Promˇenn´e {S, E , N, D, M, O, R, Y } Dom´eny Di = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
Omezen´ı – S >0, M > 0
– S 6= E 6= N 6= D 6= M 6= O 6= R 6= Y – 1000 ∗ S + 100 ∗ E + 10 ∗ N + D + 1000 ∗ M +
100 ∗ O + 10 ∗ R + E =
10000 ∗ M + 1000 ∗ O + 100 ∗ N + 10 ∗ E + Y moremoney([S,E,N,D,M,O,R,Y], Type) :-[S,E,N,D,M,O,R,Y] ins 0..9,
S #> 0,M #> 0,
all distinct([S,E,N,D,M,O,R,Y]), sum(S,E,N,D,M,O,R,Y),
labeling(Type, [S,E,N,D,M,O,R,Y]).
sum(S,E,N,D,M,O,R,Y) :- 1000∗S + 100∗E + 10∗N + D + 1000∗M + 100∗O + 10∗R + E
#= 10000∗M + 1000∗O + 100∗N + 10∗E + Y.
?−moremoney([S,E,N,D,M,O,R,Y],[]).% Type=[] ... Type = [leftmost,step,up,all]
S = 9,E = 5,N = 6,D = 7,M = 1,O = 0,R = 8,Y = 2.
´
CLP – Constraint Logic Programming Reˇsen´ı probl´ˇ em˚u s omezuj´ıc´ımi podm´ınkami
Inkrement´ aln´ı formulace CSP
CSP je moˇzn´e pˇrev´est nastandardn´ı prohled´av´an´ıtakto:
stav – pˇriˇrazen´ı hodnot promˇenn´ym poˇc´ateˇcn´ı stav – pr´azdn´e pˇriˇrazen´ı {}
pˇrechodov´a funkce – pˇriˇrazen´ı hodnoty libovoln´e dosud nenastaven´e promˇenn´e tak, aby v´ysledn´e pˇriˇrazen´ı bylo konzistentn´ı
c´ılov´a podm´ınka – aktu´aln´ı pˇriˇrazen´ı je ´upln´e cena cesty – konstantn´ı (napˇr. 1) pro kaˇzd´y krok
CLP – Constraint Logic Programming Reˇsen´ı probl´ˇ em˚u s omezuj´ıc´ımi podm´ınkami
Inkrement´ aln´ı formulace CSP
CSP je moˇzn´e pˇrev´est nastandardn´ı prohled´av´an´ıtakto:
stav – pˇriˇrazen´ı hodnot promˇenn´ym poˇc´ateˇcn´ı stav – pr´azdn´e pˇriˇrazen´ı {}
pˇrechodov´a funkce – pˇriˇrazen´ı hodnoty libovoln´e dosud nenastaven´e promˇenn´e tak, aby v´ysledn´e pˇriˇrazen´ı bylo konzistentn´ı
c´ılov´a podm´ınka – aktu´aln´ı pˇriˇrazen´ı je ´upln´e cena cesty – konstantn´ı (napˇr. 1) pro kaˇzd´y krok
1. plat´ı beze zmˇeny provˇsechny CSP!
2. prohled´av´ac´ı strom dosahuje hloubkyn (poˇcet promˇenn´ych) a ˇreˇsen´ı se nach´az´ı v t´eto hloubce (d = n) ⇒ je vhodn´e pouˇz´ıt prohled´av´an´ı do hloubky
´
CLP – Constraint Logic Programming Prohled´av´an´ı s navracen´ım
Prohled´ av´ an´ı s navracen´ım
pˇriˇrazen´ı promˇenn´ym jsoukomutativn´ı
tj. [1. WA =ˇcerven´a, 2. NT =zelen´a] je tot´eˇz jako [1. NT =zelen´a, 2. WA =ˇcerven´a]
staˇc´ı uvaˇzovat pouzepˇriˇrazen´ı jedin´e promˇenn´ev kaˇzd´em kroku ⇒ poˇcet list˚u dn
prohled´av´an´ı do hloubky pro CSP – tzv.prohled´av´an´ı s navracen´ım (backtracking search)
prohled´av´an´ı s navracen´ımje z´akladn´ıneinformovan´a strategie pro ˇreˇsen´ı probl´em˚u s omezuj´ıc´ımi podm´ınkami
schopn´y vyˇreˇsit napˇr. probl´em n-dam pro n ≈ 25 (naivn´ı ˇreˇsen´ı 1069, vlastn´ı sloupce 1025)
CLP – Constraint Logic Programming Pˇr´ıklad – probl´em N dam
Pˇr´ıklad – probl´ em N dam
queens(N,L,Type):- length(L,N), L ins 1..N, constr all(L), labeling(Type,L).
constr all([]).
constr all([X|Xs]):- constr between(X,Xs,1), constr all(Xs).
constr between( ,[], ).
constr between(X,[Y|Ys],N):- no threat(X,Y,N), N1 is N+1,
constr between(X,Ys,N1).
no threat(X,Y,J):- X #\= Y,X+J #\= Y,X−J #\= Y.
´
CLP – Constraint Logic Programming Pˇr´ıklad – probl´em N dam
Pˇr´ıklad – probl´ em N dam
queens(N,L,Type):- length(L,N), L ins 1..N, constr all(L), labeling(Type,L).
constr all([]).
constr all([X|Xs]):- constr between(X,Xs,1), constr all(Xs).
constr between( ,[], ).
constr between(X,[Y|Ys],N):- no threat(X,Y,N), N1 is N+1,
constr between(X,Ys,N1).
no threat(X,Y,J):- X #\= Y,X+J #\= Y,X−J #\= Y.
1. definice promˇenn´ych a dom´en 2. definice omezen´ı
3. hled´an´ı ˇreˇsen´ı
CLP – Constraint Logic Programming Pˇr´ıklad – probl´em N dam
Pˇr´ıklad – probl´ em N dam
queens(N,L,Type):- length(L,N), L ins 1..N, constr all(L), labeling(Type,L).
constr all([]).
constr all([X|Xs]):- constr between(X,Xs,1), constr all(Xs).
constr between( ,[], ).
constr between(X,[Y|Ys],N):- no threat(X,Y,N), N1 is N+1,
constr between(X,Ys,N1).
no threat(X,Y,J):- X #\= Y,X+J #\= Y,X−J #\= Y.
?− queens(4, L, [ff]).
L = [2,4,1,3] ? ; L = [3,1,4,2] ? ; false
1. definice promˇenn´ych a dom´en 2. definice omezen´ı
3. hled´an´ı ˇreˇsen´ı
´
CLP – Constraint Logic Programming Ovlivnˇen´ı efektivity prohled´av´an´ı s navracen´ım
Ovlivnˇ en´ı efektivity prohled´ av´ an´ı s navracen´ım
Obecn´e metodyovlivnˇen´ı efektivity:
– Kter´a promˇenn´adostane hodnotu v tomto kroku?
– V jak´em poˇrad´ızkouˇset pˇriˇrazen´ı hodnotkonkr´etn´ı promˇenn´e?
– M˚uˇzeme pˇredˇcasnˇe detekovatnutn´y ne´uspˇech v dalˇs´ıch kroc´ıch?
CLP – Constraint Logic Programming Ovlivnˇen´ı efektivity prohled´av´an´ı s navracen´ım
Ovlivnˇ en´ı efektivity prohled´ av´ an´ı s navracen´ım
Obecn´e metodyovlivnˇen´ı efektivity:
– Kter´a promˇenn´adostane hodnotu v tomto kroku?
– V jak´em poˇrad´ızkouˇset pˇriˇrazen´ı hodnotkonkr´etn´ı promˇenn´e?
– M˚uˇzeme pˇredˇcasnˇe detekovatnutn´y ne´uspˇech v dalˇs´ıch kroc´ıch?
pouˇz´ıvan´e strategie:
nejomezenˇejˇs´ı promˇenn´a → vybrat promˇennou s nejm´enˇe moˇzn´ymi hodnotami
´
CLP – Constraint Logic Programming Ovlivnˇen´ı efektivity prohled´av´an´ı s navracen´ım
Ovlivnˇ en´ı efektivity prohled´ av´ an´ı s navracen´ım
Obecn´e metodyovlivnˇen´ı efektivity:
– Kter´a promˇenn´adostane hodnotu v tomto kroku?
– V jak´em poˇrad´ızkouˇset pˇriˇrazen´ı hodnotkonkr´etn´ı promˇenn´e?
– M˚uˇzeme pˇredˇcasnˇe detekovatnutn´y ne´uspˇech v dalˇs´ıch kroc´ıch?
pouˇz´ıvan´e strategie:
nejomezenˇejˇs´ı promˇenn´a → vybrat promˇennou s nejm´enˇe moˇzn´ymi hodnotami
nejv´ıce omezuj´ıc´ı promˇenn´a → vybrat promˇennou s nejv´ıce omezen´ımi na zb´yvaj´ıc´ı promˇenn´e
CLP – Constraint Logic Programming Ovlivnˇen´ı efektivity prohled´av´an´ı s navracen´ım
Ovlivnˇ en´ı efektivity prohled´ av´ an´ı s navracen´ım
Obecn´e metodyovlivnˇen´ı efektivity:
– Kter´a promˇenn´adostane hodnotu v tomto kroku?
– V jak´em poˇrad´ızkouˇset pˇriˇrazen´ı hodnotkonkr´etn´ı promˇenn´e?
– M˚uˇzeme pˇredˇcasnˇe detekovatnutn´y ne´uspˇech v dalˇs´ıch kroc´ıch?
pouˇz´ıvan´e strategie:
nejomezenˇejˇs´ı promˇenn´a → vybrat promˇennou s nejm´enˇe moˇzn´ymi hodnotami
nejv´ıce omezuj´ıc´ı promˇenn´a → vybrat promˇennou s nejv´ıce omezen´ımi na zb´yvaj´ıc´ı promˇenn´e
nejm´enˇe omezuj´ıc´ı hodnota → pro danou promˇennou – hodnota, kter´a zruˇs´ı nejm´ıˇn hodnot zb´yvaj´ıc´ıch promˇenn´ych
umoˇzˇnuje1 hodnotuproSA
umoˇzˇnuje0 hodnotproSA
´
CLP – Constraint Logic Programming Ovlivnˇen´ı efektivity prohled´av´an´ı s navracen´ım
Ovlivnˇ en´ı efektivity prohled´ av´ an´ı s navracen´ım
Obecn´e metodyovlivnˇen´ı efektivity:
– Kter´a promˇenn´adostane hodnotu v tomto kroku?
– V jak´em poˇrad´ızkouˇset pˇriˇrazen´ı hodnotkonkr´etn´ı promˇenn´e?
– M˚uˇzeme pˇredˇcasnˇe detekovatnutn´y ne´uspˇech v dalˇs´ıch kroc´ıch?
pouˇz´ıvan´e strategie:
nejomezenˇejˇs´ı promˇenn´a → vybrat promˇennou s nejm´enˇe moˇzn´ymi hodnotami
nejv´ıce omezuj´ıc´ı promˇenn´a → vybrat promˇennou s nejv´ıce omezen´ımi na zb´yvaj´ıc´ı promˇenn´e
nejm´enˇe omezuj´ıc´ı hodnota → pro danou promˇennou – hodnota, kter´a zruˇs´ı nejm´ıˇn hodnot zb´yvaj´ıc´ıch promˇenn´ych
dopˇredn´a kontrola → udrˇzovat seznam moˇzn´ych hodnot pro zb´yvaj´ıc´ı promˇenn´e
propagace omezen´ı → nav´ıc kontrolovat moˇzn´e nekonzistence mezi zb´yvaj´ıc´ımi promˇenn´ymi
CLP – Constraint Logic Programming Ovlivnˇen´ı efektivity v CLP
Ovlivnˇ en´ı efektivity v CLP
V Prologu (CLP) moˇznosti ovlivnˇen´ı efektivity – labeling(Typ, ...):
?− constraints(Vars,Cost),
labeling([ff,bisect,down,min(Cost)],Vars).
v´ybˇer promˇenn´e – leftmost, min, max, ff, . . . dˇelen´ı dom´eny – step, enum, bisect
prohled´av´an´ı dom´eny – up, down
uspoˇr´ad´an´ı ˇreˇsen´ı – bez uspoˇr´ad´an´ı nebo min(X), max(X), . . .
´
CLP – Constraint Logic Programming Syst´emy pro ˇreˇsen´ı omezuj´ıc´ıch podm´ınek
Syst´ emy pro ˇreˇsen´ı omezuj´ıc´ıch podm´ınek
Prolog – SWI, CHIP, ECLiPSe, SICStus Prolog, Prolog IV, GNU Prolog, IF/Prolog
C/C++ – CHIP++, ILOG Solver, Gecode Java – JCK, JCL, Koalog
LISP – Screamer
Python – logilab-constraint www.logilab.org/852 Mozart – www.mozart-oz.org, jazyk Oz