1 / 63

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

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

maddox
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 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

  3. Skoń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

  4. Problem 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

  5. Kolorowanie map Klasycznym CSP jest problem takiego kolorowania mapy, że sąsiadujące obszary mają różne kolory Czy można pokolorować mapę Australii 3-ma kolorami?

  6. Q1 Q2 Q3 Q4 1 2 3 4 4 hetmany Umieść 4 hetmany na szachownicy 4 x 4 tak, by się wzajemnie nie szachowały 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! -->

  7. 4 hetmany Więzy: Nie w jednym rzędzie Inne przekątne (góra) Inne przekątne (dół)

  8. Plecak przemytnika Przemytnik z plecakiem o pojemności 9, musi wybrać rzeczy zapewniające zysk co najmniej 30 Jaka powinna być dziedzina zmiennych?

  9. Prosty 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

  10. Częściowo spełnialny • Sprawdź, czy więz jest niespełnialny z powodu więzu bazowego bez zmiennych • Partial_satisfiable(c) • For each primitive constraint c in C • If vars(c) is empty • Ifsatisfiable(c) = falsereturnfalse • Returntrue

  11. Solwer nawracający • Back_solve(c,D) • Ifvars(c) is empty returnpartial_satisfiable(c) • Choose x in vars(c) • For each value d in D(x) • Let c1 be c with x replaced by d • Ifpartial_satisfiable(c1) then • Ifback_solve(c1,D) then returntrue • Returnfalse

  12. Solwer nawracający Wybierz zm. Z dziedzina {1,2} Zmienna X dziedzina {1,2} Wybierz zm. Y dziedzina {1,2} Choose var X domain {1,2} Wybierz zm. Y dziedzina {1,2} Brak zmiennych, i false Częściowo spełn.false Brak zmiennych, zatem false

  13. Zgodność 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

  14. Zgodność 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

  15. Przykłady na zgodność węzłową CSP nie jest zgodny węzłowo (zob. Z) Poniższy CSP jest zgodny węzłowo Kolorowanie mapy i 4-hetmany to CSP zgodne węzłowo.

  16. Osiąganie zgodności węzłowej • Node_consistent(c,d) • For each prim. constraint c in C • D := node_consistent_primitive(c, D) • ReturnD • Node_consistent_primitive(c, D) • If|vars(c)| =1then • Let {x} = vars(c) • ReturnD

  17. Zgodność ł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

  18. Przykłady na zgodność łukową Ten CSP jest zgodny węzłowo, ale nie łukowo Np.wartość 4 dla X oraz X < Y. Następujące CSP jest spójne łukowo Kolorowanie map i 4-hetmaty to CSP spójne łukowo

  19. Osiąganie spójności łukowej • Arc_consistent_primitive(c, D) • If|vars(c)| = 2then • ReturnD • Usuń wartości, które nie stanowią zgodnych łuków z c

  20. Osiąganie spójności łukowej • Arc_consistent(c,d) • Repeat • W := d • For each prim. Constraint c in C • D := arc_consistent_primitive(c,d) • UntilW = D • ReturnD

  21. 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ą

  22. Solwer zgodnościowy • D := node_consistent(C,D) • D := arc_consistent(C,D) • ifD is a false domain • returnfalse • ifD is a valuation domain • returnsatisfiable(C,D) • returnunknown

  23. WA NT SA Q NSW V T Solwer zgodnościowy Kolorowanie Australii z więzami zgodność węzłowa

  24. WA NT SA Q NSW V T Przykład Kolorowanie Austalii: z więzami zgodność łukowa

  25. WA NT SA Q NSW V T Przykład Kolorowanie Australii: z więzami zgodność łukowa

  26. WA NT SA Q NSW V T Przykład Kolorowanie Australii: z więzami zgodność łukowa Odpowiedź: unknown

  27. zgodnościowy solwer nawracają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.

  28. Przykład: solwer n-z Q1 Q2 Q3 Q4 1 Żadnej możliwej wartości dla Q3! Nie można przypisać żadnej wartości dla Q3 Musimy zatem wybrać inną wartość dla Q2. 2 3 4

  29. Przykład: solwer n-z Q1 Q2 Q3 Q4 1 Backtracking… Find another value for Q3? No! backtracking, Find another value of Q2? No! nawracanie, Znajdź inną wart. dla Q2 Q2=2 We cannot find any possible value for Q4 in this case! 2 3 4

  30. Przykład: solwer n-z Q1 Q2 Q3 Q4 1 2 3 4

  31. Przykład: solwer n-z Q1 Q2 Q3 Q4 1 2 3 4

  32. WA NT SA Q NSW V T zgodność: przykład Kolorowanie Australii: z więzami Wyliczanie z nawracaniem Wybierz zmienną z dziedziną większą niż 1, T Dodaj więz Zastosuj zgodność Answer: true

  33. Zgodność 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ć?

  34. zgodność 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)

  35. zgodność 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.

  36. zgodność graniczna. Przykład Nie jest zgodny granicznie, gdy Z=2, to X-3Y=10 Dziedzina poniżej jest spójna granicznie Porównaj z dziedziną spójną hiperłukowo

  37. Osią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

  38. Osiąganie zgodności granicznej Rozważmy więz bazowy X = Y + Z równoważny trzem następującym postaciom Wnioskowanie o wartościach minimalnej i maksymalnej: Reguły propagacji dla więzu X = Y + Z

  39. Osiąganie zgodności granicznej Powyższe reguły wymuszają: Zatem można zredukować dziedzinę do

  40. Więcej reguł propagacji Dla zadanej dziedziny początkowej: Otrzymujemy, że nowa dziedzina:

  41. Nieró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.

  42. Mnożenie Proste, gdy wszyskie zmienne są dodatnie Przykładowo: staje się: Ale co ze zmiennymi, które mogą być 0 jub mniej?

  43. Mnożenie Oblicz ograniczenia na X analizując wartości ekstremalne 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 (używamy wartości rzeczywistych (e.g. 4/d)

  44. Mnożenie Możemy czekać, aż do momentu gdy zasięg Z będzie dodatni lub ujemny i wówczas użyć reguł division by 0:

  45. Algorytm 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

  46. zgodność graniczna: przykład Problem plecakowy (nie ma whiskey) Dalej nie ma żadnych zmian Musimy jeszcze raz zanalizować więz ,,zyskowy’’

  47. Solwer graniczny zgodnościowy • D := bounds_consistent(C,D) • ifD is a false domain • returnfalse • ifD is a valuation domain • returnsatisfiable(C,D) • returnunknown

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

  49. Przykład: solwer nsg Problem plecaka (dostępna whiskey) Bieżąca dziedzina: Początkowa zgodność graniczna W = 0 Znaleziono rozwiązanie: zwracaj true P = 1 (0,1,3)

  50. Przykład: solwer nsg Problem plecakowy (dostępna whiskey) Bieżąca dziedzina: Backtrack Backtrack Początkowa zgodność graniczna W = 0 W = 1 W = 2 P = 1 P = 2 P = 3 (1,1,1) (2,0,0) Brak dalszych rozw. (0,1,3) false (0,3,0)

More Related