• Nie Znaleziono Wyników

Obsah: CLP Constraint Logic Programming. Úvod do umělé inteligence 6/12 1 / 17

N/A
N/A
Protected

Academic year: 2022

Share "Obsah: CLP Constraint Logic Programming. Úvod do umělé inteligence 6/12 1 / 17"

Copied!
45
0
0

Pełen tekst

(1)

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

(2)

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)

´

(3)

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)

(4)

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)

´

(5)

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)

(6)

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)

´

(7)

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)

(8)

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

´

(9)

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

(10)

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

´

(11)

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

uˇze vyuˇz´ıvatobecn´e heuristiky(ne jen specifick´e pro dan´y probl´em)

(12)

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), . . .}

´

(13)

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}

(14)

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´ı

´

(15)

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

(16)

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

´

(17)

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´ı

(18)

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.

´

(19)

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

(20)

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) yrokov´a omezen´ı . . .

#\ negace, #/\ konjunkce, #\/ disjunkce, #<==>

ekvivalence kombinatorick´a omezen´ı . . .

all distinct(List), global cardinality(List, KeyCounts)

´

(21)

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) yrokov´a omezen´ı . . .

#\ negace, #/\ konjunkce, #\/ disjunkce, #<==>

ekvivalence kombinatorick´a omezen´ı . . .

all distinct(List), global cardinality(List, KeyCounts)

(22)

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.

´

(23)

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

(24)

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

´

(25)

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.

(26)

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

´

(27)

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´ı

(28)

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´ı

´

(29)

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´ı

(30)

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

´

(31)

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.

(32)

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.

´

(33)

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

(34)

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

´

(35)

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)

(36)

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.

´

(37)

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´ı

(38)

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´ı

´

(39)

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?

(40)

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

´

(41)

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

(42)

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

´

(43)

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

(44)

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), . . .

´

(45)

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

Cytaty

Powiązane dokumenty

uˇcen´ı je potˇrebn´e pro nezn´am´e prostˇred´ı (a l´ın´e analytiky ,) uˇc´ıc´ı se agent – v´ykonnostn´ı komponenta a komponenta uˇcen´ı metoda uˇcen´ı

I Zaveden´ı n´ ahodn´ e veliˇ ciny slouˇ z´ı zejm´ ena ke zkr´ acen´ı a zpˇrehlednˇ en´ı z´ apisu pravdˇ epodobnost´ı... Tato funkce m´ a n´

A certain level “freedom” when defining the constants and variables, no need to preserve the characteristic structure of the functional programming (associated with the order of

zdravotn´ıch sestr ´ach - person ´aln´ı obsazen´ı, vzd ˇel ´an´ı, pˇresˇcasy, nevykonan ´a zdravotn´ı p ´eˇce.. pacientech - spokojenost se zdravotn´ı p

Na r ˚uzn ´ych syst ´emech propojen ´ych s´ıt´ı Client-server model. Speci ´aln´ı pˇr´ıpad distribuovan ´eho poˇc´ıt ´an´ı V´ıce

subdialog – slouˇ z´ı k vyvol´ an´ı dialogu ˇreˇs´ıc´ıho d´ılˇ c´ı probl´ em, napˇr. zad´

” b´yt prvkem mnoˇziny “ n´ am pˇrirozenˇe pod´ av´ a i zp˚ usob porovn´ av´ an´ı mnoˇzin mezi

The rough idea of Watson’s examples is to take a normal locally compact non-collectionwise Hausdorff space of the form D ∪ I, where D is a closed discrete set and I is a set of