Wykład 3: Skończone dziedziny więzowe

63
1 Wykład 3: Skończone dziedziny Wykład 3: Skończone dziedziny więzowe więzowe

description

Wykład 3: Skończone dziedziny więzowe. Skończone dziedziny więzowe. Problem spełnialności więzów Solwer nawracający zgodność łukowa i węzłowa zgodność graniczna zgodność uogólniona Optymalizacja dla arytm. csp. Skończone dziedziny więzowe. Ważna klasa dziedzin więzowych - PowerPoint PPT Presentation

Transcript of Wykład 3: Skończone dziedziny więzowe

Page 1: Wykład 3: Skończone dziedziny więzowe

1

Wykład 3: Skończone dziedziny Wykład 3: Skończone dziedziny więzowewięzowe

Page 2: Wykład 3: Skończone dziedziny więzowe

2

Skończone dziedziny więzoweSkończone dziedziny więzowe

Problem spełnialności więzów Solwer nawracający zgodność łukowa i węzłowa zgodność graniczna zgodność uogólniona Optymalizacja dla arytm. csp

Page 3: Wykład 3: Skończone dziedziny więzowe

3

Skończone dziedziny więzoweSkończone dziedziny więzowe

Ważna klasa dziedzin więzowych Używana do modelowania problemów

związanych z przydziałem prac, wyborem tras, planowaniem

Najbardziej użyteczna dla przemysłu dziedzina więzowa

Page 4: Wykład 3: Skończone dziedziny więzowe

4

Problem spełnialności więzówProblem spełnialności więzów

Problem spełnialności więzów składa się (CSP) : Z więzu C nad zmiennymi x1,..., Xn Dziedziny D która przypisuje zmiennej xi zbiór

możliwych wartości d(xi) Rozumiemy go jako więz jako więz

C x D x xn D xn 1 1( ) ( )

Page 5: Wykład 3: Skończone dziedziny więzowe

5

Kolorowanie mapKolorowanie map

Klasycznym CSP jest problem takiego kolorowania mapy, że sąsiadujące obszary mają różne kolory

WA

NT

SA

Q

NSW

V

T

Czy można pokolorować mapę Australii 3-ma kolorami?

WA NT WA SA NT SA

NT Q SA Q SA NSW

SA V Q NSW NSW V

D WA D NT D SA D Q

D NSW D V D T

red yellow blue

( ) ( ) ( ) ( )

( ) ( ) ( )

{ , , }

Page 6: Wykład 3: Skończone dziedziny więzowe

6

4 hetmany4 hetmany

Umieść 4 hetmany na szachownicy 4 x 4 tak, by się wzajemnie nie szachowały

Q1 Q2 Q3 Q4

1

2

3

4

Cztery zmienne Q1, Q2, Q3, Q4 rząd hetmana w każdej kolumnie. Dziedziną każdej zmiennej jest {1,2,3,4}

Jedyne rozwiązanie! -->

Page 7: Wykład 3: Skończone dziedziny więzowe

7

4 hetmany4 hetmany

Więzy:

Q Q Q Q Q Q

Q Q Q Q Q Q

Q Q Q Q Q Q

Q Q Q Q Q Q

Q Q Q Q Q Q

Q Q Q Q Q Q

1 2 1 3 1 4

2 3 2 4 3 4

1 2 1 1 3 2 1 4 3

2 3 1 2 4 2 3 4 1

1 2 1 1 3 2 1 4 3

2 3 1 2 4 2 3 4 1

Nie w jednym rzędzie

Inne przekątne (góra)

Inne przekątne (dół)

Page 8: Wykład 3: Skończone dziedziny więzowe

8

Plecak przemytnikaPlecak przemytnika

Przemytnik z plecakiem o pojemności 9, musi wybrać rzeczy zapewniające zysk co najmniej 30

27

310

415

papierosy

perfumy

whiskey

rozmiarzyskrzecz

4 3 2 9 15 10 7 30W P C W P C

Jaka powinna być dziedzina zmiennych?

Page 9: Wykład 3: Skończone dziedziny więzowe

9

Prosty solwer nawracającyProsty solwer nawracający

Najprostszy sposób rozwiązania csp to przejrzeć wszystkie możliwe rozwiązania

solver nawracający: wylicza po kolei wartości dla każdej zmiennej Sprawdza, czy jakiś więz bazowy staje się fałszywy

Zakładamy, że satisfiable(c) zwraca false gdy więz bazowy c bez zmiennych jest niespełnialny

Page 10: Wykład 3: Skończone dziedziny więzowe

10

Częściowo spełnialnyCzęściowo spełnialny

Sprawdź, czy więz jest niespełnialny z powodu więzu bazowego bez zmiennych

Partial_satisfiablePartial_satisfiable(c) For each primitive constraint c in C

If vars(c) is empty If satisfiable(c) = false return false

Return true

Page 11: Wykład 3: Skończone dziedziny więzowe

11

Solwer nawracającySolwer nawracający

Back_solveBack_solve(c,D) If vars(c) is empty return partial_satisfiablepartial_satisfiable(c) Choose x in vars(c) For each value d in D(x)

Let c1 be c with x replaced by d If partial_satisfiable(partial_satisfiable(c1) then

If back_solveback_solve(c1,D) then return true Return false

Page 12: Wykład 3: Skończone dziedziny więzowe

12

Solwer nawracającySolwer nawracającyX Y Y Z D X D Y D Z ( ) ( ) ( ) { , }1 2

X Y Y Z

Choose var X domain {1,2}

X 1

1 Y Y ZWybierz zm. Y dziedzina {1,2}

Y 1

1 1 1 Z

Częściowo spełn.Częściowo spełn. false

Y 2

1 2 2 Z

Wybierz zm. Z dziedzina {1,2}

Z 1

1 2 2 1 Brak zmiennych, zatem false

Z 2

1 2 2 2

Brak zmiennych, i false

Zmienna X dziedzina {1,2}

X 2

2 Y Y ZWybierz zm. Y dziedzina {1,2}

2 1 1 Z 2 2 2 Z

Page 13: Wykład 3: Skończone dziedziny więzowe

13

Zgodność węzłowa i łukowaZgodność węzłowa i łukowa

Postawowa idea: znajdź CSP równoważny oryginalnemu, ale z mniejszymi dziedzinami

W danym momence analizuj 1 więz bazowy c zgodność węzłowa: (vars(c)={x}) usuń każdą

wartość z dziedziny x, która falsyfikuje c. zgodność łukowa: (vars(c)={x,y}) usuń każdą

wartość z d(x) dla której nie ma wartości w d(y) spełniającej c i vice versa

Page 14: Wykład 3: Skończone dziedziny więzowe

14

Zgodność węzłowaZgodność węzłowa

Więz bazowy c jest zgodny węzłowo z dziedziną D jeśli |vars(c)| !=1 lub Jeżeli vars(c) = {x} wtedy dla każdego d w d(x) przypisanie d do X jest rozwiązaniem c

CSP jest zgodny węzłowo, jeżeli każdy więz bazowy jest zgodny węzłowo

Page 15: Wykład 3: Skończone dziedziny więzowe

15

Przykłady na zgodność Przykłady na zgodność węzłowąwęzłową

CSP nie jest zgodny węzłowo (zob. Z)X Y Y Z Z

D X D Y D Z

2

1 2 3 4( ) ( ) ( ) { , , , }

Poniższy CSP jest zgodny węzłowo

X Y Y Z Z

D X D Y D Z

2

1 2 3 4 1 2( ) ( ) { , , , }, ( ) { , }

Kolorowanie mapy i 4-hetmany to CSP zgodne węzłowo.

Page 16: Wykład 3: Skończone dziedziny więzowe

16

Osiąganie zgodności węzłowejOsiąganie zgodności węzłowej

Node_consistentNode_consistent(c,d) For each prim. constraint c in C

D := node_consistent_primitivenode_consistent_primitive(c, D) Return D

Node_consistent_primitiveNode_consistent_primitive(c, D) If |vars(c)| =1 then

Let {x} = vars(c)

Return DD x d D x x d c( ): { ( )|{ } } is a solution of

Page 17: Wykład 3: Skończone dziedziny więzowe

17

Zgodność łukowaZgodność łukowa

Więz bazowy c jest zgodny łukowo z dziedziną D jeśli |vars{c}| != 2 lub

Vars(c) = {x,y}, dla każdego d w d(x) istnieje e w d(y) Podobnie dla y

Więz jest zgodny łukowo, jeżeli wszystkie jego więzy bazowe są zgodne łukowo

{ , }x d y e c is a solution of

Page 18: Wykład 3: Skończone dziedziny więzowe

18

Przykłady na zgodność Przykłady na zgodność łukowąłukową

Ten CSP jest zgodny węzłowo, ale nie łukowoX Y Y Z Z

D X D Y D Z

2

1 2 3 4 1 2( ) ( ) { , , , }, ( ) { , }

Np.wartość 4 dla X oraz X < Y.

Następujące CSP jest spójne łukowo

X Y Y Z Z

D X D Y D Z

2

( ) ( ) ( )

Kolorowanie map i 4-hetmaty to CSP spójne łukowo

Page 19: Wykład 3: Skończone dziedziny więzowe

19

Osiąganie spójności łukowejOsiąganie spójności łukowej

Arc_consistent_primitiveArc_consistent_primitive(c, D) If |vars(c)| = 2 then

Return D Usuń wartości, które nie stanowią zgodnych

łuków z c

D x d D x e D y

x d y e c

( ): { ( )| ( ),

{ , } }

exists

is a soln of

D y e D y d D x

x d y e c

( ): { ( )| ( ),

{ , } }

exists

is a soln of

Page 20: Wykład 3: Skończone dziedziny więzowe

20

Osiąganie spójności łukowejOsiąganie spójności łukowej

Arc_consistentArc_consistent(c,d) Repeat

W := d For each prim. Constraint c in C

D := arc_consistent_primitivearc_consistent_primitive(c,d) Until W = D Return D

Page 21: Wykład 3: Skończone dziedziny więzowe

21

Używanie zgodności w. i ł.Używanie zgodności w. i ł.

Możemy zbudować solwer więzowy korzystając ze spójności

Dwa istotne rodzaje dziedzin Dziedzina ,,fałszywa’’: pewna zmienna ma pustą

dziedzinę Dziedzina ,,wartościująca’’: każda zmienna ma

jednopunktową dziedzinę Rozszerzamy satisfiable do CSP z dziedziną

wartosciującą

Page 22: Wykład 3: Skończone dziedziny więzowe

22

Solwer zgodnościowySolwer zgodnościowy

D := node_consistentnode_consistent(C,D) D := arc_consistentarc_consistent(C,D) if D is a false domain

return false if D is a valuation domain

return satisfiable(C,D) return unknown

Page 23: Wykład 3: Skończone dziedziny więzowe

23

Solwer zgodnościowySolwer zgodnościowyKolorowanie Australii z więzami

WA NT WA SA NT SA

NT Q SA Q SA NSW

SA V Q NSW NSW V

greenNTredWA

WA NT SA Q NSW V T

zgodność

węzłowa

Page 24: Wykład 3: Skończone dziedziny więzowe

24

PrzykładPrzykładKolorowanie Austalii: z więzami

WA NT WA SA NT SA

NT Q SA Q SA NSW

SA V Q NSW NSW V

greenNTredWA

WA NT SA Q NSW V T

zgodność

łukowa

Page 25: Wykład 3: Skończone dziedziny więzowe

25

PrzykładPrzykładKolorowanie Australii: z więzami

VNSWNSWQVSA

NSWSAQSAQNT

SANTSAWANTWA

greenNTredWA

WA NT SA Q NSW V T

zgodność

łukowa

Page 26: Wykład 3: Skończone dziedziny więzowe

26

PrzykładPrzykładKolorowanie Australii: z więzami

WA NT WA SA NT SA

NT Q SA Q SA NSW

SA V Q NSW NSW V

greenNTredWA

WA NT SA Q NSW V T

zgodność

łukowa

Odpowiedź:

unknown

Page 27: Wykład 3: Skończone dziedziny więzowe

27

zgodnościowy solwer zgodnościowy solwer nawracającynawracający

Możemy połączyć zgodność z solwerem nawracającym

Ze spójności korzysta się przed uruchomieniem solwera i za każdym razem gdy wybrana zostanie wartość dla zmiennej.

Page 28: Wykład 3: Skończone dziedziny więzowe

28

Przykład: solwer n-zPrzykład: solwer n-z

Żadnej możliwej

wartości dlaQ3!

Q1 Q2 Q3 Q4

1

2

3

4

Nie możnaprzypisać

żadnej wartościdla Q3

Musimy zatem wybrać

inną wartość dla Q2.

Page 29: Wykład 3: Skończone dziedziny więzowe

29

Przykład: solwer n-zPrzykład: solwer n-zQ1 Q2 Q3 Q4

1

2

3

4

We cannot find any

possible valuefor Q4 inthis case!

Backtracking…

Find another value for Q3?

No!

backtracking,

Find anothervalue of Q2?

No!

nawracanie,

Znajdź innąwart. dla Q2

Q2=2

Page 30: Wykład 3: Skończone dziedziny więzowe

30

Przykład: solwer n-zPrzykład: solwer n-zQ1 Q2 Q3 Q4

1

2

3

4

Page 31: Wykład 3: Skończone dziedziny więzowe

31

Przykład: solwer n-zPrzykład: solwer n-zQ1 Q2 Q3 Q4

1

2

3

4

Page 32: Wykład 3: Skończone dziedziny więzowe

32

zgodność: przykładzgodność: przykładKolorowanie Australii: z więzami

greenNTredWA

WA NT SA Q NSW V T

Wyliczanie z

nawracaniem

Wybierz zmienną z dziedziną większą niż 1, T

Dodaj więz T red Zastosuj zgodność

Answer: true

Page 33: Wykład 3: Skończone dziedziny więzowe

33

Zgodność granicznaZgodność graniczna

A co z więzami bazowymi z więcej niż jedną zmienną?

zgodność hiperłukowa: zozszerzenie spójności łukowej do dowolnej liczby zmiennech

Niestety problem ten jest NP-trudny Jak to rozwiązać?

Page 34: Wykład 3: Skończone dziedziny więzowe

34

zgodność granicznazgodność graniczna

Arytmetyczne CSP: więzy są całkowite zasięg: [l..u] przedstawia zbiór liczb

całkowitych {l, l+1, ..., u} pomysł: użyj zgodności dla liczb

rzeczywistych i zajmuj się jedynie końcami dziedzin każdej zmiennej

min(D,x) definiujemy jako najmniejszy element dziedziny, podobnie max(D,x)

Page 35: Wykład 3: Skończone dziedziny więzowe

35

zgodność granicznazgodność graniczna

Więz bazowy c jest zgodny granicznie z dziedziną D jeśli dla każdej zmiennej x w vars(c) istnieją rzeczywiste d1, ..., dk dla pozostałych zmiennych

x1, ..., xk takie, że

jest rozwiązaniem c i podobnie dla

Arytmetyczne CSP jest zgodne granicznie, jeżeli wszystkie jego więzy są z.g.

{ min( , ), , }x D x x d xk dk 1 1

{ max( , )}x D x

Page 36: Wykład 3: Skończone dziedziny więzowe

36

zgodność graniczna. Przykładzgodność graniczna. Przykład

X Y Z

D X D Y D Z

3 5

2 7 0 2 1 2( ) [ .. ], ( ) [ .. ], ( ) [ .. ]

Nie jest zgodny granicznie, gdy Z=2, to X-3Y=10

Dziedzina poniżej jest spójna granicznie

D X D Y D Z( ) [ .. ], ( ) [ .. ], ( ) [ .. ] 2 7 0 2 0 1

Porównaj z dziedziną spójną hiperłukowo

D X D Y D Z( ) { , , }, ( ) { , , }, ( ) { , } 3 5 6 0 1 2 0 1

Page 37: Wykład 3: Skończone dziedziny więzowe

37

Osiąganie zgodności granicznejOsiąganie zgodności granicznej

Dla danej bieżącej dziedziny D chcemy tak zmodyfikować jej punkty graniczne, by osiągnąć zgodność

zrobią to reguły propagacji

Page 38: Wykład 3: Skończone dziedziny więzowe

38

Osiąganie zgodności granicznejOsiąganie zgodności granicznej

Rozważmy więz bazowy X = Y + Z równoważny trzem następującym postaciom

X Y Z Y X Z Z X Y

Wnioskowanie o wartościach minimalnej i maksymalnej:

X D Y D Z X D Y D Z

Y D X D Z Y D X D Z

Z D X D Y Z D X D Y

min( , ) min( , ) max( , ) max( , )

min( , ) max( , ) max( , ) min( , )

min( , ) max( , ) max( , ) min( , )

Reguły propagacji dla więzu X = Y + Z

Page 39: Wykład 3: Skończone dziedziny więzowe

39

Osiąganie zgodności granicznejOsiąganie zgodności granicznejX Y Z

D X D Y D Z

( ) [ .. ], ( ) [ .. ], ( ) [ .. ]4 8 0 3 2 2

Powyższe reguły wymuszają:

( ) ( )

( ) ( )

( ) ( )

0 2 2 5 3 2

4 2 2 6 8 2

4 3 1 8 8 0

X

Y

Z

Zatem można zredukować dziedzinę do

D X D Y D Z( ) [ .. ], ( ) [ .. ], ( ) [ .. ] 4 5 2 3 2 2

Page 40: Wykład 3: Skończone dziedziny więzowe

40

Więcej reguł propagacjiWięcej reguł propagacji4 3 2 9

9

4

3

4

2

49

3

4

3

2

39

2

4

2

3

2

W P C

W D P D C

P D W D C

C D W D P

min( , ) min( , )

min( , ) min( , )

min( , ) min( , )

Dla zadanej dziedziny początkowej:D W D P D C( ) [ .. ], ( ) [ .. ], ( ) [ .. ] 0 9 0 9 0 9

Otrzymujemy, że

nowa dziedzina:

W P C 9

4

9

3

9

2, ,

D W D P D C( ) [ .. ], ( ) [ .. ], ( ) [ .. ] 0 2 0 3 0 4

Page 41: Wykład 3: Skończone dziedziny więzowe

41

NierównościNierówności

Takie nierówności dają słabe reguły propagacji, jedynie wówczas, gdy jedna ze stron ma ustaloną wartość równą minimalnej bądź maksymalnej wartości tej drugiej.

Y Z

]2..2[)(],4..3[)( prop]2..2[)(],4..2[)(

propagacji bez]3..3[)(],4..2[)(

propagacji bez]3..2[)(],4..2[)(

ZDYDZDYD

ZDYD

ZDYD

Page 42: Wykład 3: Skończone dziedziny więzowe

42

MnożenieMnożenie X Y Z

Proste, gdy wszyskie zmienne są dodatnieX D Y D Z X D Y D Z

Y D X D Z Y D X D Z

Z D X D Y Z D X D Y

min( , ) min( , ) max( , ) max( , )

min( , ) / max( , ) max( , ) / min( , )

min( , ) / max( , ) max( , ) / min( , )

Ale co ze zmiennymi, które mogą być 0 jub mniej?

Przykładowo:

staje się:

D X D Y D Z( ) [ .. ], ( ) [ .. ], ( ) [ .. ] 4 8 1 2 1 3

D X D Y D Z( ) [ .. ], ( ) [ .. ], ( ) [ .. ] 4 6 2 2 2 3

Page 43: Wykład 3: Skończone dziedziny więzowe

43

MnożenieMnożenie X Y Z

Oblicz ograniczenia na X analizując wartości ekstremalne

X D Y D Z D Y D Z

D Y D Z D Y D Z

minimum{min( , ) min( , ), min( , ) max( , )

max( , ) min( , ), max( , ) max( , )}

Podobnie dla górnych ograniczeń X używając maksimum

Nie działa dla Y i Z? Jeśli min(D,Z) <0 i max(D,Z)>0 to nie można ograniczyć przedziały Y

X Y Z X Y d Z d { , , / } 4 4

(używamy wartości rzeczywistych (e.g. 4/d)

Page 44: Wykład 3: Skończone dziedziny więzowe

44

MnożenieMnożenie X Y Z

Możemy czekać, aż do momentu gdy zasięg Z będzie dodatni lub ujemny i wówczas użyć reguł

Y D X D Z D X D Z

D X D Z D X D Z

minimum{min( , ) / min( , ), min( , ) / max( , )

max( , ) / min( , ), max( , ) / max( , )}

division by 0:

ve ve

0 0

0

0

Page 45: Wykład 3: Skończone dziedziny więzowe

45

Algorytm zgodności granicznejAlgorytm zgodności granicznej

Stosuj reguły propagacji dla więzów bazowych, aż nie będzie możliwa żadna zmiana dziedziny

Nie musimy zajmować się więzem jeżeli nie zmieniły się dziedziny zmiennych w nim zawartych

Page 46: Wykład 3: Skończone dziedziny więzowe

46

zgodność graniczna: przykładzgodność graniczna: przykład

Problem plecakowy (nie ma whiskey)

30710159234 CPWCPW

zyskpojemnosc

D W D P D C( ) [ .. ], ( ) [ .. ], ( ) [ .. ] 0 0 0 9 0 9

W P C 102 15 12 10 60 7/ / /W P C 9 4 9 3 9 2/ / /

D W D P D C( ) [ .. ], ( ) [ .. ], ( ) [ .. ] 0 0 0 3 0 4W P C 28 15 2 10 0 7/ / /

D W D P D C( ) [ .. ], ( ) [ .. ], ( ) [ .. ] 0 0 1 3 0 4

Dalej nie ma żadnych zmian

Musimy jeszcze raz zanalizować więz ,,zyskowy’’

Page 47: Wykład 3: Skończone dziedziny więzowe

47

Solwer graniczny zgodnościowySolwer graniczny zgodnościowy

D := bounds_consistentbounds_consistent(C,D) if D is a false domain

return false if D is a valuation domain

return satisfiable(C,D) return unknown

Page 48: Wykład 3: Skończone dziedziny więzowe

48

Nawracający solwer Nawracający solwer zgodnościowy g.zgodnościowy g.

Zastosuj solwer zgodnościowy g przed uruchomieniem solwera nawracającego i za każdym razem, gdy zmiennej nadana zostanie wartość

Page 49: Wykład 3: Skończone dziedziny więzowe

49

Przykład: solwer nsgPrzykład: solwer nsg

Problem plecaka (dostępna whiskey)capacity profit

W P C W P C4 3 2 9 15 10 7 30

D W D P D C( ) [ .. ], ( ) [ .. ], ( ) [ .. ] 0 9 0 9 0 9Bieżąca dziedzina:

Początkowa zgodność graniczna

D W D P D C( ) [ .. ], ( ) [ .. ], ( ) [ .. ] 0 2 0 3 0 4

W = 0

D W D P D C( ) [ .. ], ( ) [ .. ], ( ) [ .. ] 0 0 1 3 0 4

P = 1

D W D P D C( ) [ .. ], ( ) [ .. ], ( ) [ .. ] 0 0 1 1 3 3

(0,1,3)

Znaleziono rozwiązanie: zwracaj true

Page 50: Wykład 3: Skończone dziedziny więzowe

50

Przykład: solwer nsgPrzykład: solwer nsg

Problem plecakowy (dostępna whiskey)capacity profit

W P C W P C4 3 2 9 15 10 7 30 Bieżąca dziedzina:

Początkowa zgodność granicznaBacktrack

D W D P D C( ) [ .. ], ( ) [ .. ], ( ) [ .. ] 0 0 1 3 0 4

P = 2

D W D P D C( ) , ( ) , ( )

false

Backtrack

D W D P D C( ) [ .. ], ( ) [ .. ], ( ) [ .. ] 0 0 1 3 0 4

P = 3

D W D P D C( ) { }, ( ) { }, ( ) { } 0 3 0

W = 0

P = 1

(0,1,3) (0,3,0)

W = 1

(1,1,1)

W = 2

(2,0,0)

Brak dalszych rozw.

Page 51: Wykład 3: Skończone dziedziny więzowe

51

zgodność uogólnionazgodność uogólniona

Can use any consistency method with any other communicating through the domain, zgodność węsłowa : więzy bazowe z 1 zm. zgodność łukowa: więzy bazowe z 2 zm. zgodność graniczna: inne więzy bazowe

czasami możemy otrzymać więcej używającz złożonych zmiennych i specjalnych metod zgodnościowych

Page 52: Wykład 3: Skończone dziedziny więzowe

52

AlldifferentAlldifferent

alldifferent({V1,...,Vn}) zachodzi gdy każda ze zmiennych V1,..,Vn ma inną wartość alldifferent({X, Y, Z}) jest równoważny

zgodny łukowo z dziedziną

Jednak nie ma on rozwiązania!, co mogą wykryć metody specyficzne dla alldifferent

X Y X Z Y Z

D X D Y D Z( ) { , }, ( ) { , }, ( ) { , } 1 2 1 2 1 2

Page 53: Wykład 3: Skończone dziedziny więzowe

53

Więz alldifferentWięz alldifferent

let c be of the form alldifferent(V) while exists v in V where D(v) = {d}

V := V - {v} for each v’ in V

D(v’) := D(v’) - {d} DV := union of all D(v) for v in V if |DV| < |V| then return false domain return D

Page 54: Wykład 3: Skończone dziedziny więzowe

54

Przykład z alldifferentPrzykład z alldifferentalldifferent X Y Z

D X D Y D Z

({ , , })

( ) { , }, ( ) { , }, ( ) { , } 1 2 1 2 1 2

DV = {1,2}, V={X,Y,Z} wykryta niespełnialnośćalldifferent X Y Z T

D X D Y D Z D T

({ , , , })

( ) { , }, ( ) { , }, ( ) { , }, ( ) { , , , } 1 2 1 2 1 2 2 3 4 5

DV = {1,2,3,4,5}, V={X,Y,Z,T} niewykryta niesp. Mogłaby pomóc zgodność bazująca na maks. dopasowaniuX Y Z T

1 2 3 4 5

Page 55: Wykład 3: Skończone dziedziny więzowe

55

Inne złożone więzyInne złożone więzy

zaplanuj n zadań o początkach w chwilach Si trwających Di wymagających Ri jednostegok pewnego zasobu, którego w każdym momencie jest dostępnych L jednostek

Dostęp do tablicy, jeśli I = i, to X = Vi i jeśli X != Vi to I != i

cumulative S S D D R R Ln n n([ , , ],[ , , ],[ , , ], )1 1 1

element I V V Xn( ,[ , , ], )1

Page 56: Wykład 3: Skończone dziedziny więzowe

56

Optymalizacja dla CSPOptymalizacja dla CSP

Ponieważ dziedziny są skończone, możemy użyć solwera do budowy prostej procedury optymalizującej

retry_int_optretry_int_opt(C, D, f, best) D2 := int_solvint_solv(C,D) if D2 is a false domain then return best let sol be the solution corresponding to D2 return retry_int_optretry_int_opt(C /\ f < sol(f), D, f, sol)

Page 57: Wykład 3: Skończone dziedziny więzowe

57

Retry Optimization ExampleRetry Optimization Example

Problem przemytniczego plecaka (optymalny zysk)minimize subject to

15 10 7

4 3 2 9 15 10 7 30

0 9 0 9 0 9

W P Ccapacity profit

W P C W P C

D W D P D C( ) [ .. ], ( ) [ .. ], ( ) [ .. ]

First solution found: D W D P D C( ) [ .. ], ( ) [ .. ], ( ) [ .. ] 0 0 1 1 3 3

Corresponding solution sol W P C{ , , } 0 1 3

sol f( ) 31

minimize subject to

15 10 7

4 3 2 9 15 10 7 30

15 10 7 31

0 9 0 9 0 9

W P Ccapacity profit

W P C W P C

W P C

D W D P D C( ) [ .. ], ( ) [ .. ], ( ) [ .. ]

Next solution found: D W D P D C( ) [ .. ], ( ) [ .. ], ( ) [ .. ] 1 1 1 1 1 1

sol W P C{ , , } 1 1 1

sol f( ) 32

]9..0[)(],9..0[)(],9..0[)(

32710153171015

30710159234

subject to 71015 minimize

CDPDWD

CPWCPW

CPWCPW

profitcapacityCPW

Nie ma nast..rozw!

Zwraca najlepsze

Page 58: Wykład 3: Skończone dziedziny więzowe

58

Backtracking OptimizationBacktracking Optimization

Since the solver may use backtrack search anyway combine it with the optimization

At each step in backtracking search, if best is the best solution so far add the constraint f < best(f)

Page 59: Wykład 3: Skończone dziedziny więzowe

59

Back. Optimization ExampleBack. Optimization Example

Smugglers knapsack problem (whiskey available)capacity profit

W P C W P C4 3 2 9 15 10 7 30

D W D P D C( ) [ .. ], ( ) [ .. ], ( ) [ .. ] 0 9 0 9 0 9Bieżąca dziedzina:

Initial bounds consistency

D W D P D C( ) [ .. ], ( ) [ .. ], ( ) [ .. ] 0 2 0 3 0 4

W = 0

D W D P D C( ) [ .. ], ( ) [ .. ], ( ) [ .. ] 0 0 1 3 0 4

P = 1

D W D P D C( ) [ .. ], ( ) [ .. ], ( ) [ .. ] 0 0 1 1 3 3

(0,1,3)

Znaleziono rozwiązanie: dodaj więz

Problem przemytniczego plecaka (whiskey available)capacity profit

W P C W P C

W P C

4 3 2 9 15 10 7 30

15 10 7 31

Page 60: Wykład 3: Skończone dziedziny więzowe

60

Back. Optimization ExampleBack. Optimization Example

Initial bounds consistency

capacity profit

W P C W P C

W P C

4 3 2 9 15 10 7 30

15 10 7 31

P = 2

false

P = 3

false

W = 1

(1,1,1)

Modify constraint

capacity profit

W P C W P C

W P C

4 3 2 9 15 10 7 30

15 10 7 32

W = 0

P = 1

(0,1,3)

Smugglers knapsack problem (whiskey available)

W = 2

false

Return last sol (1,1,1)

Page 61: Wykład 3: Skończone dziedziny więzowe

61

Branch and Bound Opt.Branch and Bound Opt.

The previous methods,unlike simplex don't use the objective function to direct search

branch and bound optimization for (C,f) use simplex to find a real optimal, if solution is integer stop otherwise choose a var x with non-integer opt value

d and examine the problems

use the current best solution to constrain prob. ( , ) ( , )C x d f C x d f

Page 62: Wykład 3: Skończone dziedziny więzowe

62

Branch and Bound ExampleBranch and Bound ExampleSmugglers knapsack problem

{ / , , }W P C 11 4 0 0W 2 W 3

{ , / , }W P C 2 1 3 0P 0 P 1

{ , , / }W P C 2 0 1 2C 0 C 1

{ , , }W P C 2 0 0Solution (2,0,0) = 30

{ / , , }W P C 7 4 0 1W 1 W 2

{ , , / }W P C 1 0 5 2C 2 C 3

false { / , , }W P C 3 4 0 3W 0 W 1

false false

false

{ / , , }W P C 6 4 1 0W 1 W 2

{ , / , }W P C 1 5 3 0P 1 P 2

{ , , }W P C 1 1 1Solution (1,1,1) = 32

Worse than best sol

false

false

Page 63: Wykład 3: Skończone dziedziny więzowe

63

Finite Constraint Domains Finite Constraint Domains SummarySummary

CSPs form an important class of problems Solving of CSPs is essentially based on

backtracking search Reduce the search using consistency methods

node, arc, bound, generalized Optimization is based on repeated solving or

using a real optimizer to guide the search