Title: Wyklad 3: Skonczone dziedziny wiezowe
1Wyklad 3 Skonczone dziedziny wiezowe
2Skonczone dziedziny wiezowe
- Problem spelnialnosci wiezów
- Solwer nawracajacy
- zgodnosc lukowa i wezlowa
- zgodnosc graniczna
- zgodnosc uogólniona
- Optymalizacja dla arytm. csp
3Skonczone dziedziny wiezowe
- Wazna klasa dziedzin wiezowych
- Uzywana do modelowania problemów zwiazanych z
przydzialem prac, wyborem tras, planowaniem - Najbardziej uzyteczna dla przemyslu dziedzina
wiezowa
4Problem spelnialnosci wiezów
- Problem spelnialnosci wiezów sklada sie (CSP)
- Z wiezu C nad zmiennymi x1,..., Xn
- Dziedziny D która przypisuje zmiennej xi zbiór
mozliwych wartosci d(xi) - Rozumiemy go jako wiez jako wiez
5Kolorowanie map
Klasycznym CSP jest problem takiego kolorowania
mapy, ze sasiadujace obszary maja rózne kolory
Czy mozna pokolorowac mape Australii 3-ma
kolorami?
64 hetmany
Umiesc 4 hetmany na szachownicy 4 x 4 tak, by sie
wzajemnie nie szachowaly
Cztery zmienne Q1, Q2, Q3, Q4 rzad hetmana w
kazdej kolumnie. Dziedzina kazdej zmiennej jest
1,2,3,4
Jedyne rozwiazanie! --gt
74 hetmany
Wiezy
Nie w jednym rzedzie Inne przekatne (góra) Inne
przekatne (dól)
8Plecak przemytnika
Przemytnik z plecakiem o pojemnosci 9, musi
wybrac rzeczy zapewniajace zysk co najmniej 30
Jaka powinna byc dziedzina zmiennych?
9Prosty solwer nawracajacy
- Najprostszy sposób rozwiazania csp to przejrzec
wszystkie mozliwe rozwiazania - solver nawracajacy
- wylicza po kolei wartosci dla kazdej zmiennej
- Sprawdza, czy jakis wiez bazowy staje sie
falszywy - Zakladamy, ze satisfiable(c) zwraca false gdy
wiez bazowy c bez zmiennych jest niespelnialny
10Czesciowo spelnialny
- Sprawdz, czy wiez jest niespelnialny z powodu
wiezu bazowego bez zmiennych - Partial_satisfiable(c)
- For each primitive constraint c in C
- If vars(c) is empty
- If satisfiable(c) false return false
- Return true
11Solwer nawracajacy
- Back_solve(c,D)
- If vars(c) is empty return partial_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(c1) then
- If back_solve(c1,D) then return true
- Return false
12Solwer nawracajacy
Choose var X domain 1,2
Wybierz zm. Y dziedzina 1,2
Wybierz zm. Z dziedzina 1,2
Zmienna X dziedzina 1,2
Wybierz zm. Y dziedzina 1,2
Brak zmiennych, i false
Czesciowo speln. false
Brak zmiennych, zatem false
13Zgodnosc wezlowa i lukowa
- Postawowa idea znajdz CSP równowazny
oryginalnemu, ale z mniejszymi dziedzinami - W danym momence analizuj 1 wiez bazowy c
- zgodnosc wezlowa (vars(c)x) usun kazda
wartosc z dziedziny x, która falsyfikuje c. - zgodnosc lukowa (vars(c)x,y) usun kazda
wartosc z d(x) dla której nie ma wartosci w d(y)
spelniajacej c i vice versa
14Zgodnosc wezlowa
- Wiez bazowy c jest zgodny wezlowo z dziedzina D
jesli vars(c) !1 lub - Jezeli vars(c) x wtedy dla kazdego d w d(x)
- przypisanie d do X jest rozwiazaniem c
- CSP jest zgodny wezlowo, jezeli kazdy wiez bazowy
jest zgodny wezlowo
15Przyklady na zgodnosc wezlowa
CSP nie jest zgodny wezlowo (zob. Z)
Ponizszy CSP jest zgodny wezlowo
Kolorowanie mapy i 4-hetmany to CSP zgodne
wezlowo.
16Osiaganie zgodnosci wezlowej
- Node_consistent(c,d)
- For each prim. constraint c in C
- D node_consistent_primitive(c, D)
- Return D
- Node_consistent_primitive(c, D)
- If vars(c) 1 then
- Let x vars(c)
- Return D
17Zgodnosc lukowa
- Wiez bazowy c jest zgodny lukowo z dziedzina D
jesli varsc ! 2 lub - Vars(c) x,y, dla kazdego d w d(x) istnieje e
w d(y) - Podobnie dla y
- Wiez jest zgodny lukowo, jezeli wszystkie jego
wiezy bazowe sa zgodne lukowo
18Przyklady na zgodnosc lukowa
Ten CSP jest zgodny wezlowo, ale nie lukowo
Np.wartosc 4 dla X oraz X lt Y. Nastepujace CSP
jest spójne lukowo
Kolorowanie map i 4-hetmaty to CSP spójne lukowo
19Osiaganie spójnosci lukowej
- Arc_consistent_primitive(c, D)
- If vars(c) 2 then
- Return D
- Usun wartosci, które nie stanowia zgodnych luków
z c
20Osiaganie spójnosci lukowej
- Arc_consistent(c,d)
- Repeat
- W d
- For each prim. Constraint c in C
- D arc_consistent_primitive(c,d)
- Until W D
- Return D
21Uzywanie zgodnosci w. i l.
- Mozemy zbudowac solwer wiezowy korzystajac ze
spójnosci - Dwa istotne rodzaje dziedzin
- Dziedzina ,,falszywa pewna zmienna ma pusta
dziedzine - Dziedzina ,,wartosciujaca kazda zmienna ma
jednopunktowa dziedzine - Rozszerzamy satisfiable do CSP z dziedzina
wartosciujaca
22Solwer zgodnosciowy
- D node_consistent(C,D)
- D arc_consistent(C,D)
- if D is a false domain
- return false
- if D is a valuation domain
- return satisfiable(C,D)
- return unknown
23Solwer zgodnosciowy
Kolorowanie Australii z wiezami
zgodnosc wezlowa
24Przyklad
Kolorowanie Austalii z wiezami
zgodnosc lukowa
25Przyklad
Kolorowanie Australii z wiezami
zgodnosc lukowa
26Przyklad
Kolorowanie Australii z wiezami
zgodnosc lukowa
Odpowiedz unknown
27zgodnosciowy solwer nawracajacy
- Mozemy polaczyc zgodnosc z solwerem nawracajacym
- Ze spójnosci korzysta sie przed uruchomieniem
solwera i za kazdym razem gdy wybrana zostanie
wartosc dla zmiennej.
28Przyklad solwer n-z
Q1
Q2
Q3
Q4
1
Zadnej mozliwej wartosci dla Q3!
Nie mozna przypisac zadnej wartosci dla Q3
Musimy zatem wybrac inna wartosc dla Q2.
2
3
4
29Przyklad solwer n-z
Q1
Q2
Q3
Q4
1
Backtracking Find another value for Q3? No!
backtracking, Find another value of Q2? No!
nawracanie, Znajdz inna wart. dla Q2 Q22
We cannot find any possible value for Q4
in this case!
2
3
4
30Przyklad solwer n-z
Q1
Q2
Q3
Q4
1
2
3
4
31Przyklad solwer n-z
Q1
Q2
Q3
Q4
1
2
3
4
32zgodnosc przyklad
Kolorowanie Australii z wiezami
Wyliczanie z nawracaniem
Wybierz zmienna z dziedzina wieksza niz 1, T
Dodaj wiez
Zastosuj zgodnosc
Answer true
33Zgodnosc graniczna
- A co z wiezami bazowymi z wiecej niz jedna
zmienna? - zgodnosc hiperlukowa zozszerzenie spójnosci
lukowej do dowolnej liczby zmiennech - Niestety problem ten jest NP-trudny
- Jak to rozwiazac?
34zgodnosc graniczna
- Arytmetyczne CSP wiezy sa calkowite
- zasieg l..u przedstawia zbiór liczb
calkowitych l, l1, ..., u - pomysl uzyj zgodnosci dla liczb rzeczywistych i
zajmuj sie jedynie koncami dziedzin kazdej
zmiennej - min(D,x) definiujemy jako najmniejszy element
dziedziny, podobnie max(D,x)
35zgodnosc graniczna
- Wiez bazowy c jest zgodny granicznie z dziedzina
D jesli dla kazdej zmiennej x w vars(c) - istnieja rzeczywiste d1, ..., dk dla pozostalych
zmiennych x1, ..., xk takie, ze - jest rozwiazaniem c
- i podobnie dla
- Arytmetyczne CSP jest zgodne granicznie, jezeli
wszystkie jego wiezy sa z.g.
36zgodnosc graniczna. Przyklad
Nie jest zgodny granicznie, gdy Z2, to
X-3Y10 Dziedzina ponizej jest spójna granicznie
Porównaj z dziedzina spójna hiperlukowo
37Osiaganie zgodnosci granicznej
- Dla danej biezacej dziedziny D chcemy tak
zmodyfikowac jej punkty graniczne, by osiagnac
zgodnosc - zrobia to reguly propagacji
38Osiaganie zgodnosci granicznej
Rozwazmy wiez bazowy X Y Z równowazny
trzem nastepujacym postaciom
Wnioskowanie o wartosciach minimalnej i
maksymalnej
Reguly propagacji dla wiezu X Y Z
39Osiaganie zgodnosci granicznej
Powyzsze reguly wymuszaja
Zatem mozna zredukowac dziedzine do
40Wiecej regul propagacji
Dla zadanej dziedziny poczatkowej
Otrzymujemy, ze nowa dziedzina
41Nierównosci
Takie nierównosci daja slabe reguly propagacji,
jedynie wówczas, gdy jedna ze stron ma ustalona
wartosc równa minimalnej badz maksymalnej
wartosci tej drugiej.
42Mnozenie
Proste, gdy wszyskie zmienne sa dodatnie
Przykladowo staje sie
Ale co ze zmiennymi, które moga byc 0 jub mniej?
43Mnozenie
Oblicz ograniczenia na X analizujac wartosci
ekstremalne
Podobnie dla górnych ograniczen X uzywajac
maksimum Nie dziala dla Y i Z? Jesli min(D,Z) lt0
i max(D,Z)gt0 to nie mozna ograniczyc przedzialy Y
(uzywamy wartosci rzeczywistych (e.g. 4/d)
44Mnozenie
Mozemy czekac, az do momentu gdy zasieg Z bedzie
dodatni lub ujemny i wówczas uzyc regul
division by 0
45Algorytm zgodnosci granicznej
- Stosuj reguly propagacji dla wiezów bazowych, az
nie bedzie mozliwa zadna zmiana dziedziny - Nie musimy zajmowac sie wiezem jezeli nie
zmienily sie dziedziny zmiennych w nim zawartych
46zgodnosc graniczna przyklad
Problem plecakowy (nie ma whiskey)
Dalej nie ma zadnych zmian Musimy jeszcze raz
zanalizowac wiez ,,zyskowy
47Solwer graniczny zgodnosciowy
- D bounds_consistent(C,D)
- if D is a false domain
- return false
- if D is a valuation domain
- return satisfiable(C,D)
- return unknown
48Nawracajacy solwer zgodnosciowy g.
- Zastosuj solwer zgodnosciowy g przed
uruchomieniem solwera nawracajacego i za kazdym
razem, gdy zmiennej nadana zostanie wartosc
49Przyklad solwer nsg
Problem plecaka (dostepna whiskey)
Biezaca dziedzina
Poczatkowa zgodnosc graniczna
W 0
Znaleziono rozwiazanie zwracaj true
P 1
(0,1,3)
50Przyklad solwer nsg
Problem plecakowy (dostepna whiskey)
Biezaca dziedzina
Poczatkowa zgodnosc graniczna
Backtrack
Backtrack
W 0
W 1
W 2
P 2
P 3
P 1
(1,1,1)
(2,0,0)
Brak dalszych rozw.
false
(0,1,3)
(0,3,0)
51zgodnosc uogólniona
- Can use any consistency method with any other
communicating through the domain, - zgodnosc weslowa wiezy bazowe z 1 zm.
- zgodnosc lukowa wiezy bazowe z 2 zm.
- zgodnosc graniczna inne wiezy bazowe
- czasami mozemy otrzymac wiecej uzywajacz
zlozonych zmiennych i specjalnych metod
zgodnosciowych
52Alldifferent
- alldifferent(V1,...,Vn) zachodzi gdy kazda ze
zmiennych V1,..,Vn ma inna wartosc - alldifferent(X, Y, Z) jest równowazny
- zgodny lukowo z dziedzina
- Jednak nie ma on rozwiazania!, co moga wykryc
metody specyficzne dla alldifferent
53Wiez 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 lt V then return false domain
- return D
54Przyklad z alldifferent
DV 1,2, VX,Y,Z wykryta niespelnialnosc
DV 1,2,3,4,5, VX,Y,Z,T niewykryta niesp.
Moglaby pomóc zgodnosc bazujaca na
maks. dopasowaniu
55Inne zlozone wiezy
- zaplanuj n zadan o poczatkach w chwilach Si
trwajacych Di wymagajacych Ri jednostegok
pewnego zasobu, którego w kazdym momencie jest
dostepnych L jednostek - Dostep do tablicy, jesli I i, to X Vi i jesli
X ! Vi to I ! i
56Optymalizacja dla CSP
- Poniewaz dziedziny sa skonczone, mozemy uzyc
solwera do budowy prostej procedury
optymalizujacej - retry_int_opt(C, D, f, best)
- D2 int_solv(C,D)
- if D2 is a false domain then return best
- let sol be the solution corresponding to D2
- return retry_int_opt(C /\ f lt sol(f), D, f, sol)
57Retry Optimization Example
Problem przemytniczego plecaka (optymalny zysk)
First solution found
Next solution found
Nie ma nast..rozw!
Corresponding solution
Zwraca najlepsze
58Backtracking 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 lt
best(f)
59Back. Optimization Example
Problem przemytniczego plecaka (whiskey
available)
Smugglers knapsack problem (whiskey available)
Biezaca dziedzina
Initial bounds consistency
W 0
Znaleziono rozwiazanie dodaj wiez
P 1
(0,1,3)
60Back. Optimization Example
Smugglers knapsack problem (whiskey available)
Initial bounds consistency
W 1
W 0
W 2
P 2
P 3
(1,1,1)
P 1
false
(0,1,3)
false
false
Modify constraint
Return last sol (1,1,1)
61Branch 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.
62Branch and Bound Example
Smugglers knapsack problem
false
false
Solution (2,0,0) 30
Solution (1,1,1) 32
false
Worse than best sol
false
false
false
63Finite Constraint Domains Summary
- 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