81
Constraint Processing Version 1.0-alpha Prof. Dr. W. Conen, FH Gelsenkirchen, WS05/06 -- Auf Basis von Rina Dechter, Constraint Processing, 2003 -- [Das (sehr nette) Buch sollten Sie nicht benötigen, alles Wichtige für die Klausur finden Sie in Folien, Mitschrieb und Übungsaufgaben] -- Sollten ihnen Fonts fehlen, dann installieren sie texpoint , das ist harmlos (LateX-Formeln/Zeichen in

Constraint Processing Version 1.0-alpha

Embed Size (px)

DESCRIPTION

Constraint Processing Version 1.0-alpha. Prof. Dr. W. Conen, FH Gelsenkirchen, WS05/06 -- Auf Basis von Rina Dechter, Constraint Processing, 2003 -- [Das (sehr nette) Buch sollten Sie nicht benötigen, alles Wichtige für die Klausur finden Sie in Folien, Mitschrieb und Übungsaufgaben] - PowerPoint PPT Presentation

Citation preview

Page 1: Constraint Processing Version 1.0-alpha

Constraint ProcessingVersion 1.0-alpha

Prof. Dr. W. Conen, FH Gelsenkirchen, WS05/06

-- Auf Basis von Rina Dechter, Constraint Processing, 2003-- [Das (sehr nette) Buch sollten Sie nicht benötigen, alles Wichtige

für die Klausur finden Sie in Folien, Mitschrieb und Übungsaufgaben]

-- Sollten ihnen Fonts fehlen, dann installieren sie texpoint,das ist harmlos (LateX-Formeln/Zeichen in PowerPoint)

Page 2: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

2

Constraints Rina Dechters Versuch einer Definition:

„A constraint is a restriction on a space of possibilities, it is a piece of knowledge that narrows the scope of this space.“

„Because constraints arise naturally in most areas of human endeavor, they are most general means for formulation regularities that govern our computational, physical, biological and social worlds: the angles of a triangle must sum to 180 degrees 4 nucleotides that make up a DNA strand can only combine

particular sequences Susan cannot be married to John

They identify the impossible, narrow down the realm of possibilities, and thus permit us to focus more effectively on the possible.Formulating problems in terms of constraints enables a natural, declarative formulation of WHAT must be satisfied, without having to say how it should be satisfied.“ [Rina Dechter, Constraint Processing, 2003]

Page 3: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

3

Constraints „As the complexity of the problem grows, we turn to computers to

help us find an acceptable solution. Computer scientists have devised languages to model constraint

satisfaction problems (CSP) and have developed methods for solving them. In general, the tasks posed in the language of constraints are computationally intractable (NP-hard) which means that you cannot expect to design an algorithm that scales effectively with the problem size, in all cases.“

„However it is possible and desirable to identify special properties of a problem class that can accommodate efficient solutions and to develop general algorithms that are efficient for as many problems as possible.“ [Rina Dechter]

Tractable classes (of problems) approximation algorithms

Page 4: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

4

Probleme Problem-Klasse, zum Beispiel Stundenplan-Planung:

Das Problem hat Instanzen, zum Beispiel WS 04/05 an FB5, FH GE Das Problem hat Unterklassen: Die Stundenplan-Planung an der FH GE, FB5

Manchmal/ meistens werden die Instanzen auch Probleme genannt. Besser wäre vermutlich die folgende Sprechweise: Problemklasse: Stundenplan-Planung (Problem) Unterklasse: Studenplan-Planung im FB5 an der FH GE (Subclass) Problem: WS 04/ 05 am FB5/ FH GE (Instance Problem)

NP-hard bezieht sich auf Problem-Klassen! Eine Klasse ist bereits dann NP-hard, wenn sich ein einzelnes hartes Problem finden. Es kann aber viele Probleme geben; die leicht zu lösen oder schnell als unlösbar zu

erkennen sind.

Wir wollen: „leicht“ lösbare Probleme (Instanzen) effizient lösen unlösbare Probleme möglichst schnell erkennen „hart“ lösbare Probleme in der zur Verfügung stehenden Zeit möglichst gut annähernd

lösen.

Page 5: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

5

Einige Begriffe im Überblick

Jedes Constraint-Problem enthält Variablen: Objekte oder „Dinge“, die eine Vielfalt von Werten annehmen können

Die Menge aller denkbaren Werte für eine gegebene Variable nennt man Domain.

Constraints sind Regeln, die die Werte, die Variablen oder Kombinationen von Variablen annehmen können, beschränken.

Ein Modell, das Variablen, ihre Domains und Constraints beinhaltet, wird Constraint-Problem oder Constraint-Netzwerk genannt.

Eine Lösung ist eine Zuweisung von einzelnen Werten aus den jeweiligen Domains an alle Variablen, so daß kein Constraint verletzt wird.

Ein Problem kann eine, viele oder keine Lösung haben. Ein Problem, das eine oder mehrere Lösungen hat, wird erfüllbar

(satisfiable) oder konsistent (consistent) genannt

Page 6: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

6

Einige Begriffe zur Erinnerung: Sie kennen:

Mengen, [ (Vereinigung), Å (Schnitt), - (Differenz), £ (kartesisches Produkt), geordnete Tupel, ...

Relationen sind Teilmengen von kartesischen Produkten von Mengen (also eine „Auswahl“ aus den möglichen Wertkombinationen) z.B. R µ D1 £ D2

In einer Datenbank ist das genauso:

x1 x2

grün Tee

schwarz Tee

schwarz Kaffee

D1 = { grün, schwarz }D2 = { Tee, Kaffee }

R=

D1 £ D2 = { (grün, Tee), (grün,Kaffee), (schwarz,Tee), (schwarz, Kaffee) }

Page 7: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

7

Einige Begriffe zur Erinnerung: In einer Datenbank benennen sie

die Spalten, hier x1 und x2 Sie vereinbaren Wertebereiche für

die Spalten, hier D1 für x1 und D2 für x2

Die Spalten sind unsere Variablen Die Wertebereiche unsere

Domains Wir schreiben

Variable: Domainum den Domain einer Variable anzugeben

Die geordnete Liste von Variablen (xi1

,xi2,...,xik

) nennen wir Scope einer Relation

x1 x2

grün Tee

schwarz Tee

schwarz Kaffee

D1 = { grün, schwarz }D2 = { Tee, Kaffee}

R=

D1 £ D2 = { (grün, Tee), (grün,Kaffee), (schwarz,Tee), (schwarz, Kaffee) }

Page 8: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

8

Einige Begriffe zur Erinnerung: Sie kennen die Operationen

auf Relationen. Relation R über x1,...,xk mit

den Domains D1,...,Dk.a1,...,ak sind Werte aus den Domains D1,...,Dk

Selektion: xj1=aj1,...,xjl=ajl(R)

Wähle aus R alle Tupel aus, die für die Variablen xim den Wert aim haben im 2 {1,...,k} Manchmal gibt man auch eine

Spaltennummer im direkt an (oder als $im)

x1 x2

grün Tee

schwarz Tee

schwarz Kaffee

R=

x1 = schwarz(R) =

x1 x2

schwarz Tee

schwarz Kaffee

Page 9: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

9

Einige Begriffe zur Erinnerung: Relation R über x1,...,xk mit

den Domains D1,...,Dk.a1,...,ak sind Werte aus den Domains D1,...,Dk

Projektion: xj1,...,xjl(R)

Streiche aus R alle Spalten, xj, die nicht in {xi_1,...,xik

} sind

im 2 {1,...,k} Statt xim

kann man auch

direkt im (also eine Spaltennummer angeben)

x1 x2

grün Tee

schwarz Tee

schwarz Kaffee

R=

x1 (R) = 1(R) =

x1

grün

schwarz

Page 10: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

10

Einige Begriffe zur Erinnerung: Relationen RS, RT mit Scope S

bzw. T (Natural) Join: RT BC RS Nimm nach und nach alle

Tupel t aus RT Wähle nach und nach alle

Tupel s aus RS aus, für die gilt: s.xj = t.xj für alle Variablen xj aus T Å S.

Baue aus t und s ein neues Tupel mit den Variablen aus T [ S, indem t ergänzt wird um die Werte in S – T aus s

Ordne die Variablen in der alten Reihenfolge in den T und S-Teilen an

x1 x2

grün Tee

schwarz Tee

schwarz Kaffee

RT=

x1 x3

grün gesund

schwarz lecker

RS=

x1 x2 x3

grün Tee gesund

schwarz Tee lecker

schwarz Kaffee lecker

Page 11: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

11

Constraint-Graphen Graphen helfen, die Struktur von Constraint-Problemen zu verstehen und

die Probleme zu lösen. Primale Constraint-Graphen (oder auch einfach Constraint-Graphen):

Jeder Knoten repräsentiert eine Variable. Kanten verbinden jeweils paarweise alle Knoten, die zum Scope eines

Constraints gehören (auch bei mehr-stelligen Constraints, dann nicht sehr natürliche Repräsentation).

Gibt es zwischen einem Knotenpaar keine Kante, dann entspricht der Constraint der universellen binären Relation mit allen möglichen Wertpaaren für das betroffene Knotenpaar

x1 x2

x3 x4

Q

Q

Q

Q

Lösungen:(2,4,1,3),(3,1,4,2)

Page 12: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

12

Constraint-GraphenKreuzworträtsel, erlaubte Wörter { HOSES, LASER, SHEET, SNAIL, STEER,

ALSO, EARN, HIKE, IRON, SAME, EAT, LET, RUN, SUN, TEN, YES, BE, IT, NO, US }

Repräsentation 1: Eine Variable pro Feld, Domains = Alphabet, Constraints: mögliche Wörter, z.B.

R{1,2,3,4,5} = {(H,O,S,E,S), (L,A,S,E,R), (S,H,E,E,T),(S,N,A,I,L),(S,T,E,E,R)}, R{10,13} = {(B,E),(I,T),(N,O),(U,S)}, R{12,13} = R{10,13} usw.

Konsistentes partielles Assignment für {x1,x2,x3,x4,x5,x6,x9,x12}: {1,2,3,4,5,6,9,12} =

{(H,O,S,E,S,A,M,E), (L,A,S,E,R,A,M,E), (S,H,E,E,T,A,R,N), (S,N,A,I,L,L,S,O), (S,T,E,E,R,A,R,N) }

1 2 3 4

6

8

5

7

11

13

9

12

10

10

421

11

13

12

9

8

76

53

Page 13: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

13

Constraint-GraphenKreuzworträtsel, erlaubte Wörter { HOSES, LASER, SHEET, SNAIL, STEER, ALSO,

EARN, HIKE, IRON, SAME, EAT, LET, RUN, SUN, TEN, YES, BE, IT, NO, US }

Repräsentation 2: Eine Variable pro START-Feld und Richtung,

x1 für „1, horizontal“, x2 für „3, vertikal“, x3 für „5, vertikal“, x4 für „8, horizontal“, x5 für „12, horizontal“, x6 für „10, vertikal“

Domains = mögliche Wörter (abhängig von der Länge!)

Schema des Problems: {{x1,x2}, {x1,x3}, {x4,x2}, {x4,x3}, {x5,x2}, {x6,x4

}, {x6,x5} } Constraints z.B. zwischen x1 und x2:

R12 = {(HOSES,SAME), (LASER,SAME), (SHEET,EARN), (SNAIL,ALSO), (STEER,EARN) }

Konsistentes partielles Assignment für {x1,x2,x3,x4,x5}: {(SHEET, EARN, TEN, IRON, NO)}

Binäre Constraints, es gibt keine Lösung

S H

I

E

A

R

N

E

O

T

E

N

1 2 3 4

6

8

5

7

11

13

9

12

10

4

21

6

5

3

Page 14: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

14

Constraint-GraphenDefinition: Hypergraph

Ein Hypergraph ist eine Struktur H = (V,S) aus Knoten, V = {v1,...,vn}, und Hyperkanten S = {S1,...,Sl}, Si µ V.

Constraint-Hypergraphen repräsentieren mehrstellige Constraints auf natürlichere Art, Hyperkanten sind Constraints, Knoten Variablen (für binäre Constraints sind sie „normale“ Graphen)

Beispiel Alldiff-Constraint: S1 = Alldiff(x1,x2,x3,x4)

x1 x2

x3 x4

Als binäre Constraints: Alldiff = paarweise verschieden

x1 x2

x3 x4

Hyperkante als Rechteck

x1 x2

x3 x4

Hyperkante als Region

S1

S1

Page 15: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

15

Dual Constraint-GraphDualer Constraintgraph

Jeder Constraint-Scope wird zu einem Knoten, der Knoten wird mit dem Scope beschriftet

Kanten verbinden Scopes mit gemeinsamen Variablen, der Index der gemeinsamen Variable(n) wird an die verbindende Kante geschrieben

Dualer Graph der ersten Variante der Repräsentation des Kreuzworträtsel (gleiche Struktur, wie der primale Graph der zweiten Variante!)

1,2,3,4,5

5,7,11

3,6,9,12

8,9,10,11

12,13

10,13

9

123

10

5

11

13

Page 16: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

16

Duales ProblemDuale Probleme

Gegeben ist ein nicht-binäres Constraint-Netzwerk Die Constraints werden zu Variablen, den sogenannten c-

Variablen Domain der Variablen sind die erlaubten Wertkombinationen Zwischen c-Variablen mit gemeinsamen „Original“-Variablen gibt

es binäre Constraints, die die Gleichheit der gemeinsamen Variablen erzwingen („equality constraints“)

Beachten Sie: die Gleichheit, die gefordert wird, erstreckt sich nur auf Teile der Werte (die ja Tupel sind), nämlich die jeweils gemeinsamen Tupelteile

Resultat ist ein binäres Netzwerk

Auf diese Art kann jedes nicht-binäre Netzwerk in ein binäres Netzwerk überführt werden! (und damit dann auch jede Relation repräsentiert werden)

Page 17: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

17

Spezielle Constraints: Numerische Constraints Explizite „extensionale“ Repräsentation von Constraints kann

mühevoll (sprich: aufwändig) sein Oft helfen mathematische/logische Konventionen bei einer

knapperen, „intensionalen“ Formulierung Arithmetisch-logische Ausdrücke als numerische Constraints:

4-Königinnen-Problem: es muß gelten 8 i,j xi xj und |xi-xj| |i-j|, d.h. Rij = {(xi,xj) | xi 2 Di, xj 2 Dj, xi xj und |xi-xj| |i-j| }

Binäre Constraint zwischen zwei Variablen: Konjunktion linearer Ungleichungen: (3xi+2xj · 3) Æ (-4xi+5xj < 1) Das ist ein „ganzzahliges lineares Programm“ (mit Ungleichungen mit

ein oder zwei Variablen) Lineare Constraints sind wichtig bei z.B. im Scheduling, bei

Temporalem und Räumlichem Schließen usw. Beispiel: crypt-arithmetische Puzzle, z.B. TWO+TWO=FOUR

oder SEND+MORE=MONEY, jeder Buchstabe steht für eine andere Zahl, keine führende 0 (beide zur Übung formulieren)

Page 18: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

18

Spezielle Constraints: Bool‘sche Constraints

Zweiwertige Domains kann man sehr gut mit Aussagenlogik modellieren. Beispiel: Wir wollen Freunde zu einer Party einladen: Karsten, Kai, Nadja. Wir wissen:

Wenn Karsten kommt, wird auch Kai kommen Wenn Nadja kommt, wird auch Karsten kommen

Aussagen: A = „Karsten kommt“, B = „Kai kommt“, C = „Nadja kommt“ (A ! B) Æ (C ! A)

Wenn Nadja kommt, kommt dann auch Kai? (C Æ (A ! B) Æ (C ! A)) ! B? [Anmerkung: Alternative Frage: Ist C Æ (A ! B) Æ (C ! A) Æ : B

unerfüllbar?] Eine Formel der Aussagenlogik in konjunktiver Normalform

(CNF) nennen wir auch „Theorie“ (Fortsetzung zum Beispiel folgt)

Page 19: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

19

Spezielle Constraints: Bool‘sche Constraints = C Æ (: A Ç B) Æ (: C Ç A) Æ : B ist eine solche CNF-Theorie

Sie kann als Constraint-Netzwerk formuliert werden: A,B,C, also die atomaren Aussagen, sind die Variablen Domains: {0,1} Constraints sind die Disjunktionen (oder Klauseln in

unserer Mengennotation), z.B. steht A Ç B für RAB = {(0,1),(1,0),(1,1)}

Das sogenannte Propositional Satisfiability Problem (SAT) fragt, ob eine gegebene CNF-Theorie erfüllbar ist

...oder, alternativ, ob das Constraints-Netzwerk konsistent ist! ...bzw. (bei der obigen Theorie) ist unerfüllbar gdw. das

Constraint-Netzwerk nicht konsistent ist

Page 20: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

20

Spezielle Constraints: Bool‘sche Constraints Der primale Constraintsgraph wird für diesen Problemtyp

auch „Interaktionsgraph“ (interaction graph) genannt

= {{: C}, {A,B,C}, {: A,B,E}, {: B,C,D}}, Interaktionsgraph hierzu:

E D

C

B

A

Page 21: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

21

Eigenschaften binärer Constraint-Netze: Constraint Deduction bzw. Constraint Inference: Neue zbw.

veränderte Constraints können aus einer Menge gegebener Constraints geschlossen werden.

Das kann zu Constraints zwischen bisher unverbundenen Variablen führen: x · y und y · z ) x · z

oder zu „engeren“ bzw. schärferen Constraints („tightening of constraints“)

Wichtig ist natürlich, „äquivalente“ Netzwerke zu erzeugen!

„Geschlossene“ (inferred) Constraints sind dann redundant (weil sie die Lösungsmenge nicht verändern)

Aber für die Effizienz der Lösungsfindung können sie eine große Rolle spielen!

Page 22: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

22

Eigenschaften binärer Constraint-Netze: Beispiel zu Constraint Inference: Graph-Coloring Zwei Lösungen 123 = {rot,blau,rot), (blau,rot,blau)}

rot,blau

rot,blau

rot,blau

Zwischen x1 und x3 sind zunächst alle Wertpaare erlaubt

Diesen „Constraint“ verschärfen wir: wir verbieten (hx1,roti,hx3,blaui) und (h x1,roti,h x3,blaui)

Es bleiben (rot,rot) und (blau,blau), also Gleichheit

Diesen Constraint können wir zum Netzwerk hinzufügen.

x1

x2

x3

=

Altes und neues Netzwerk sind äquivalent: Sie haben die gleiche Lösungsmenge!

Page 23: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

23

Eigenschaften binärer Constraint-Netze: Zwei Constraint-Netze sind äquivalent, wenn sie

auf der gleichen Variablenmenge definiert sind und die gleiche Lösungsmenge repräsentieren

Ein Constraint Rij ist redundant (relativ zu einem bestimmten Netz), wenn seine Entfernung die Lösungsmenge nicht ändert (das Netz mit und das Netz ohne den Constraint müssen also äquivalent sein)

Achtung: Es kann mehrere redundante Constraints geben, die aber möglicherweise nicht gemeinsam entfernt werden dürfen!

Page 24: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

24

Eigenschaften binärer Constraint-Netze:

Definition Komposition: Seien Rxy und Ryz zwei binäre Constraints.

Dann ist die Komposition Rxy ± Ryz eine binäre Relation Rxz, die wie folgt definiert ist:

Rxz = {(a,b) | a 2 Dx, b 2 Dz, 9 c 2 Dy mit (a,c) 2 Rx,y und (c,b) 2 Ry,z}

Alternative (schönere!) Definition: Rxz = Rxy ± Ryz = {x,z}(Rxy BC Ryz)

Page 25: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

25

Eigenschaften binärer Constraint-Netze: Rxy ± Ryz auch ausdrückbar mittels Matrixmultiplikation, s.

Beispiel Graph-Coloring:

R12 ± R23 = R13 = ( 0 1) x (0 1) = (1 0) ( 1 0) (1 0) (0 1)

R12 rot blau

rot 0 1

blau 1 0

R23 rot blau

rot 0 1

blau 1 0

R13 rot blau

rot 1 0

blau 0 1

Page 26: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

26

Ausdrucksmächtigkeit binärer Constraint-Netze

Gegeben sei eine beliebige Relation R über den Variablen X = {x1,...,xn} mit Domains der Größe k.

Gibt es immer ein Constraint-Netz R mit den Variablen X und den vorgegebenen Domains, dessen Lösung R ist?

Hilfsfragen: Wieviele Relationen über n Variablen mit jeweils k möglichen

Werten können wir bauen? Wieviele verschiedene Constraint-Netzwerke über n Variablen mit

jeweils k möglichen Werten können wir bauen?

Page 27: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

27

Ausdrucksmächtigkeit binärer Constraint-Netze

Hilfsantworten: In D1 £ ... £ Dn sind k*...*k-Elemente (k taucht n-mal auf), also

Anzahl = kn

Jede Relation über diesen Variablen und Domains ist eine Teilmenge des Kreuzproduktes

Es gibt 2Anzahl Teilmengen, also insgesamt 2kn verschiedene Relation Jeder binäre Constraint ist eine Relation über einem zweistelligen

Kreuzprodukt Di £ Dj mit k2 Elementen, es gibt also 2k2 verschiedene Constraints

Es gibt maximal (n-1)+(n-2)+...+1 binäre Constraints in R, also · n22

Es gibt also höchstens 2k2n2 verschiedene binäre Constraint-Netze! Das sind aber viel weniger, als es Relationen gibt! Man kann also nicht alle Relationen als binäre Constraint-

Netze mit den gleichen Variablen und Domains darstellen!

[Hier war das Ende der Montagsveranstaltung vom 3.1.2005]

Page 28: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

28

Binäre Projektionsnetzwerke

Man kann aber jede Relation mittels eines binären Constraint-Netzes approximieren:

Definition Projektions-Netzwerk: Gegeben ist eine Relation über X = {x1,...,xn}. Das Projektionsnetzwerk P() ist das Netzwerk P = (X,D,P) mit D = {Di}, Di = i(), P={Pij} und Pij = xi,xj

(). P() erhält man also, in dem man die Relation auf alle

Variablenpaare xi,xj projeziert. Beispiel: 123 = {(1,1,2),(1,2,2),(1,2,1)}.

P() enthält die Constraints P12 = {(1,1),(1,2)}, P13 = {(1,2),(1,1)}, P23 = {(1,2),(2,2),(2,1)}.

Lösung sol(P()) = {(1,1,2),(1,2,2),(1,2,1)} = ! Das Beispiel ist günstig gewählt, die Lösung kann natürlich nicht

immer mit zusammenfallen, sonst hätten wir ja doch ein binäres Netz gefunden, dass jedes repräsentieren kann, s. Mitschrieb.

Page 29: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

29

Binäre Projektionsnetzwerke

Theorem: Sei eine beliebige Relation. Dann gilt: µ sol(P()), d.h. in der Lösung des Projektions-Netzwerks zu ist immer enthalten!

Mit anderen Worten: Wenn man das Projektionsnetzwerk löst (das ja „nur“ aus binären Constraints besteht), dann hat man immer auch die gesuchte Relation plus „andere Bestandteile“ gefunden.

Theorem: Gegeben Relation . P() ist die „engste“ obere Grenze eine binären Netzwerk-Repräsentation von , d.h. es gibt kein binäres Netzwerk C‘ mit µ sol(C‘) ½ sol(P())

„Bessere“ Repräsentation mit einem binären Netz gibt es nicht!

Page 30: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

30

Schnitte binärer Constraint-Netze

Definition: Gegeben seien zwei binäre Netzwerke R und R‘ über der gleichen Variablenmenge X. R‘ ist dann und genau dann mindestens so eng, wie R, wenn für jedes i,j, i j, gilt R‘ij µ Rij

Merke: Die Lösung von R‘ ist natürlich in der Lösung von R enthalten. Oft gelingt es aber sogar, engere Netze zu finden, die die gleiche Lösung haben.

Definition: Der Schnitt R Å R‘ zweier binärer Netzwerke R und R‘ über den Variablen X ist das binäre Netz, dass man erhält, wenn man zu jedem Paar i,j die zugehörigen Constraints beider Netze schneidet diese Constraints gibt es immer – wenn keiner angegeben ist, dann sind

alle Kombinationen erlaubt! Übrigens sind Domains unäre Constraints, die man für i=j oben auch anschaut und schneidet!).

Proposition: R und R‘ seien zwei äquivalente binäre Netzwerke. Dann ist R Å R‘ äquivalent zu R und R‘ und mindestens so eng wie R bzw. R‘

Es gibt also eine partielle Ordnung zur Tightness äquivalenter Netze. Wenn wir alle diese Netze schneiden, erhalten wir ein eindeutiges äquivalentes Netz, dass mindestens zu eng ist, wie alle anderen äquivalenten Netze.

Page 31: Constraint Processing Version 1.0-alpha

31

Minimale binäre Constraint-Netze Definition Minimales Netzwerk: Gegeben ist ein binäres Netzwerk R0, die

Lösung = sol{R0} und die Menge {R1,...,Rl} aller zu R0 äquivalenten binären Netzwerke. Dann ist M(R0) = i=1

l Ri das minimale Netzwerk M zu R0 bzw. zu .

Überraschung: „Finally, it is possible to show that the minimal network is identical to the projection network of the minimal network‘s set of solutions“

Theorem: Für jedes binäre Netzwerk R mit = sol(R) gilt M() = P(). [Beweis: Übungsaufgabe]

x1 x2

x3 x4

M_{12} = {(2,4),(3,1)}

M_{13} = {(2,1),(3,4)} D_1 = {2,3}

M_{14} = {(2,3),(3,2)} D_2 = {1,4}

M_{23} = {(1,4),(4,1)} D_3 = {1,4}

M_{24} = {(1,2),(4,3)} D_4 = {2,3}

M_{24} = {(1,3),(4,2)}

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

Proposition: Falls (a,b) 2 Mij then 9 t 2 sol(M) mit t[i] = a und t[j] = b

Page 32: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

32

Binär zerlegbare Relationen Achtung: Die Frage, ob durch sein Projektionsnetzwerk repräsentiert werden

kann, ist NP-hart!

Sind 2-Variablen-Lösungen in einem minimalen Netzwerk immer zu 3-Variablen-Lösungen usw. erweiterbar? Nein, nur, wenn die Ausgangsrelation binär zerlegbar (binary decomposable) ist. Beispiel s. Mitschrieb.

Definition binär zerlegbar: Eine Relation ist genau dann binär zerlegbar, wenn sie durch ein binäres Netzwerk repräsentiert werden kann und jede ihrer projektierten (auch nicht-binären!) Relationen ebenfalls durch eine binäres

Netz repräsentiert werden kann.

Erläuterung: Wenn binär zerlegbar ist, dann repräsentiert das Projektionsnetzwerk nicht nur , sondern auch alle Projektionen von , und zwar durch die entsprechenden Teilnetzwerke: binär zerlegbar, über X definiert, S µ X. Dann wird S durch das Teilnetz von P()

mit den Variablen aus S repräsentiert.

Harter Stoff, aber sehr nützlich, wenn es ans Lösen der Netze geht!

Page 33: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

33

Consistency-Enforcing und Constraint-Propagation (neuer Abschnitt) Lesen Sie die 3 Seiten zur Kapiteleinführung aus Rina Dechters Buch

(S.51-53)„Perhaps the most exciting and fundamental concept that drives the constraint processing area is constraint propagation.These are inference methods used by us in everyday life that can be imitated by computers to exhibit intelligent inference.“

In general, inference, as it applies to constraints, narrows the search space of possible partial solutions by creating equivalent, yet more explicit, networks.

In fact, the problem may become explicit enough (by inferring additional constraints or by tightening existing ones) that the search will be directed to a solution without encountering a dead end. (kein Backtracking!)

Indeed, constraint inference can be used to find a complete solution. Unfortunately, solving a complete problem by inference [only] is frequently

too hard, requiring the addition of an exponential number of constraints.

Page 34: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

34

Constraint-Propagation

Altes Beispiel: Wir wollen Freunde zu einer Party einladen -- Karsten, Kai, Nadja. Wir wissen:

Wenn Karsten kommt, wird auch Kai kommen Wenn Nadja kommt, wird auch Karsten kommen

Aussagen: A = „Karsten kommt“, B = „Kai kommt“, C = „Nadja kommt“ (A ! B) Æ (C ! A)

Wenn Nadja kommt, kommt dann auch Kai? Also: C Æ (C ! A) ` A Und dann: A Æ (A ! B) ` B Also kommt Kai auch, wenn Nadja kommt (weil dann auch Karsten kommt) ` steht für: ist herleitbar, beweisbar, ableitbar

Jeder Herleitungsschritt ergibt sich aus einer Wertzuweisung an eine Variable (C = „true“) und der Propagierung der Konsequenz dieser Wertzuweisung für eine andere

Variable durch einen Constraint (C = „true“ und Constraint C ! A, daraus folgt A = „true“)

Page 35: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

35

Constraint-Propagation

Beispiel: Variablen x,y,z, Constraints (1) x=y, (2) y=z, (3) x z

Aus (1) und (2) folgt aus rein logischen Gründen (Also unabhängig vom Domain) (4) x = z

(4) steht (wieder aus rein logischen Gründen) im Widerspruch zu (3)!

Also hat ein beliebiges Constraintsnetz mit 3 solchen Variablen und Constraints keine Lösung

Dies haben wir ohne Betrachtung der Domains erkennen können durch rein logische Überlegungen

Page 36: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

36

Constraint-Propagation

Ein anderes Beispiel findet sich auf Folie 13 mit Variablen x,y,z, Constraints R = {x y, y z}, Domains jeweils {rot, blau}

Man kann auf R‘ = {x y, y z, x = z} schließen – jetzt allerdings nur unter Beachtung der Domains (genauer: der Domaingröße!)

Durch die Explizierung (Sichtbarmachung) dieses Constraints vermeiden wir Wertzuweisungen, die sich als inkonsistent herausstellen würden: z.B. x = rot, z = blau (in R würde dies erst beim Versuch einer

Zuweisung an y als inkonsistent erkannt!) Das kann zu deutlichen Ersparnissen führen: wenn x,y,z und die

Constraints Teil eines großen Netzes sind, könnten noch sehr viele Wertzuweisungen und Suchschritte stattfinden, bevor y ausprobiert würde!

Page 37: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

37

Constraint-Propagation

Algorithmen zum Consistency-Enforcement sollen die Suche unterstützen

Sie stellen meist sich, dass eine partielles konsistentes Assignment für i-1 beliebige Variablen zu einem Assignment für diese i-1 Variablen plus eine weitere Variable erweitert werden kann: Arc consistency stellt sich, dass dies für Paar von Variablen gilt Path consistency stellt sicher, dass dies für beliebige Gruppen von

3 Variablen gilt i-consistency stellt sicher, dass jede konsistente Instantiierung von

i-1 Variablen zu einer konsistenten Instantiierung für jede beliebige i-te Variable erweitert werden kann

Falls ein Netzwerk für alle i i-consistent ist, dann ist es global konsistent.

Page 38: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

38

Constraint-Propagation

[Zur Erinnerung] Definition Partial Solution: Gegeben ist ein Constraint-Netz R.

Ein Assignment â = {h x1,a1 i,..., h xj,aj i} von Werten an eine Teilmenge der Variablen, S = {x1,...,xj} ist konsistent relativ zu R, dann und nur dann, wenn es jeden Constraint RSi

mit Si µ S erfüllt.

Das Assignment â wird auch partielle Lösung von R genannt. (nicht ganz schön, denn es ist nur Teil einer möglichen Lösung, aber nun gut).

Die Menge aller partiellen Lösungen zu einer Teilmenge der Variablen S bezeichnen wir mit S oder (S)

Page 39: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

39

Constraint-Propagation Lösen können wir ein Constraint-Netz

z.B. wie folgt: Wir weisen den Variablen in einer

bestimmten Reihenfolge Werte zu – und zwar so, dass wir jeweils partielle Lösungen erhalten.

Wenn das auf einer Stufe i nicht geht (wir also die bisherige partielle Lösung nicht erweitern können), dann müssen wir zurück und frühere Wertzuweisungen ändern (backtracking)

Wenn wir das systematisch tun, dann tun wir dies solange, bis wir entweder eine Lösung gefunden haben oder wir bewíesen haben (durch aufzählendes Ausprobieren), dass es keine Lösung gibt

Variablen x,y, Domains Dx = {1,2,3}, Dy = {2,3},

Cxy: x > y

x

y

12

3

2 3 2 3 2 3

x/ ,y/

x/3,y/

x/3,y/3x/1 ,y/2 ... x/3,y/2

Page 40: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

40

Constraint-Propagation Statt unnötig Wertzuweisungen

auszuprobieren, können wir auch erst die Domains verkleinern...

Wir entfernen alle Werte aus BEIDEN Domains, die wir nicht zu einer konsistenten Lösung ergänzen können

Um das tun zu können, müssen wir natürlich die gleichen Überlegungen anstellen, wie eben...

...interessant wir das aber, wenn wir noch z1,z2,... zwischen x und y mit Werten versorgen würden...

Dann probieren wir mir verkleinerten Domains möglicherweise viel weniger aus, als mit den „ungeprüften“ Domains!

Variablen x,y, Domains Dx = {1,2,3}, Dy = {2,3},

Cxy: x > y

1

2

3

2

3

Das ist ein (binäres) Matching-Diagramm, in dem alle Werte der Domains miteinander verbunden werden, die eine partielle Lösung bilden

Dx Dy

Page 41: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

41

Constraint-Propagation Definition Arc-Consistency:

Sei R = (X,D,C) ein Constraint-Netz mit Rij 2 C.

Eine Variable xi ist genau dann arc-consistent zu einer Variable xj, wenn zu jedem Wert ai 2 Di ein Wert aj 2 Dj existiert mit (ai,aj) 2 Rij.

Das Teilnetz (hier: der Pfeil), das durch {xi,xj} aufgespannt wird, ist genau dann arc-consistent, wenn xi arc-consistent zu xj und xj arc-consistent zu xi ist.

R ist arc-consistent genau dann, wenn alle in ihm enthaltenen Pfeile arc-consistent sind.

Page 42: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

42

Constraint-Propagation

Schöner: Di à Di Å i (Rij BC Dj) Komplexität: O(k2), hier ist k die Größe des größten Domains

Page 43: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

43

Constraint-Propagation: Arc Consistency

x

y z

Das Ausgangsnetzwerk ist nicht arc-consistent Das resultierende, äquivalente Netzwerk ist arc-consistent

x,y und y,z sind arc-consistent,aber nicht x,z

Page 44: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

44

Constraint-Propagation: Arc Consistency

Brute-Force-Algo, Komplexität O(enk3),

n = Anzahl Variablen, k = maximale Domaingröße, e = Anzahl Constraints Wenn ein leerer Domain auftritt, dann war R nicht konsistent lösbar.

Page 45: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

45

Constraint-Propagation: Arc Consistency

Komplexität O(ek3), Beispiel s. Mitschrieb, optimal?

Page 46: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

46

Constraint-Propagation: Arc Consistency

Page 47: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

47

Constraint-Propagation: Arc Consistency

AC-4 hat eine Worst-Case-Complexität von O(ek2), besser geht es nicht! (Warum?)

Wir können die Komplexität auch mit einem Tightness-Parameter t ausdrücken, der die maximale Anzahl von Tupeln, die in den einzelnen binären Constraints auftreten können: Komplexität AC-1:O(n*k*e*t), AC-3:O(e*k*t), AC-4:O(e*t)

Ist AC-4 wirklich so gut? Nicht im Best-Case: Wenn das Netz bereits arc-consistent ist, dann kosten AC-1 und

AC-3 e*k Schritte. Aber AC-4 benötigt weiterhin e*k2 Schritte

Ist arc-consistency bereits alles, was wir brauchen? Nein...

Page 48: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

48

Constraint-Propagation: Arc Consistency

x

y z

Das Ausgangsnetzwerk ist arc-consistent ...aber es hat keine Lösung!

Page 49: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

49

Constraint-Propagation: Path Consistency Definition Path Consistency:

Sei R = (X,D,C) ein Constraint-Netz mit Rij 2 C.

Eine Menge {xi,xj} aus 2 Variablen ist genau dann path-consistent zu einer dritten Variable xk, wenn es zu jedem konsistenten Assignment (h xi,ai i, h xj,aj i) einen Wert ak 2 Dk gibt, so dass (h xi,ai i, h xk,ak i) und (h xk,ak i, h xj,aj i) konsistent sind.

Alternativ: Der Constraint Rij ist genau dann path-konsistent zu xk, wenn es zu jedem Paar (ai,aj) 2 Rij ein ak 2 Dk gibt mit (ai,ak) 2 Rik und (ak,aj) 2 Rkj.

Das Teilnetz, das von xi,xj,xk aufgespannt wird, ist genau dann path-consistent, wenn alle Mengen zweier Variablen path-consistent zu der jeweiligen dritten Variable ist, also {xi,xj} zu xk, {xi,xk} zu xj, {xj,xk} zu xi.

R ist path-consistent genau dann, wenn jedes Rij (einschließlich der universellen Relationen zwischen „unconstrainten“ Variablen) path-konsistent zu jedem xk für k i, k j ist.

Page 50: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

50

Constraint-Propagation: Path Consistency

Für path-consistency muß sich jedes verbundene Paar von Constraintinstanzen zu einem Dreieck ergänzen lassen

Im Bild oben würde der Versuch, Wertpaare aus den Constraints zu löschen, um path-consistenty herbeizuführen, zur Feststellung der Inkonsistenz des Netzwerks führen.

[Weiteres Beispiel: Schliessen des =-Constraints auf Folie 13]

Page 51: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

51

Constraint-Propagation: Path Consistency

Schöner: Rxy à Rxy Å xy (Rxz BC Dz BC Rzy) Komplexität: O(k3) bzw. O(t*k)

Page 52: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

52

Constraint-Propagation: Path Consistency

Komplexität: O(n5*k5) bzw. O(n5*t2*k)

Page 53: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

53

Constraint-Propagation: Path Consistency

Komplexität: O(n3*k5) bzw. O(n3*t2*k)

PC-2

2 (PC-2)

Page 54: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

54

Constraint-Propagation: Path Consistency

Page 55: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

55

Constraint-Propagation: i-Consistency Definition i-consistent:

Sei R = (X,D,C) ein Constraint-Netz mit Rij 2 C, S ½ X, |S| = i-1.

Eine Relation RS ist genau dann i-consistent zu einer Variable y, die nicht in S ist, wenn zu jedem t 2 RS ein a 2 Dy existiert, so daß (t,a) konsistent ist.

R ist genau dann i-consistent, wenn es zu jeder konsistenten Instantiierung von i-1 verschiedenen Variablen eine Instantiierung einer weiteren Variablen gibt, so dass die i Werte gemeinsam alle Constraints zwischen den i Variablen erfüllen.

R ist genau dann strongly i-consistent, wenn es j-consistent ist für jedes j · i.

Ist R strongly n-consistent (n = Anzahl Variablen in R), dann nennen wir es auch global konsistent (globally consistent)

Page 56: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

56

Constraint-Propagation: i-Consistency

Komplexität: Zeit O(ki) für binäre Constraints, O((2k)i) für allgemeine Constraints

Page 57: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

57

Constraint-Propagation: i-Consistency

Komplexität: Zeit O(2i(nk)2i), Space O(ni,ki), lower bound (ni,ki)

Page 58: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

58

Spezielle Constraints: Globale Constraints Manchmal ist es sinnvoll, bestimmte Constraint-Typen speziell zu

behandeln Klassisches Beispiel ist der alldiff-Constraint (s. crypt-arithmetisches

Puzzle): Alle Variablen müssen paarweise verschieden sein Das kann man als Netzwerk von binären -Constraints darstellen –

darin ist z.B. arc-Consistenz nicht hilfreich (nur, wenn Domains nur noch einen Wert haben)

Helfen kann generalized arc consistency: (Domain-Reduktion-Revise) Dx à Dx Šx(RS BC DS-{x}) (Relational Arc Consistency) RS-{x} à S-{x}(RS BC Dx) Meist aber in (domain-)spezifischen Implementierungen realisiert,

z.B. Domain-Reduktion mittels Matching für Alldiff zu Kosten von O(k*n1.5)

Page 59: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

59

Wenn Arc-Consistency zu teuer wird... Viele Werte oder spezielle Constraints können Arc-consistency teuer

machen...

„Schwächeres“ Konsistenzkonzept: Bounds-Consistency. Jedes Domain wird durch ein Intervall beschränkt Nur die Arc-Consistency der Endpunkt wird sichergestellt

Definition: Sei C ein Constraint über dem Scope S mit zugehörigen

Domainconstraints.

Die Variable x 2 S mit einem wohlgeordneten Domain Dx ist bound-consistent zu C, wenn die Werte min{Dx} bzw. max{Dx} jeweils einem vollständigen Tupel t in C erweitert werden können (wir sagen: t „unterstützt“ min{Dx} bzw. max{Dx}).

C ist bounds-consistent, wenn alle x \in S bounds-consistent sind.

Page 60: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

60

Beispiel zu Bounds-Consistency Variablen x1,...,x6

Domains {1,...,6} Constraints:

C1: x4 ¸ x1 + 3 C2: x4 ¸ x2 + 3 C3: x5 ¸ x3 + 3 C4: x5 ¸ x4 + 1 C5: Alldiff(x1,x2,x3,x4,x5)

Minimum 1 in D4 hat keine Unterstützung in C1

Erzwingen von Bounds-Consistency mit C1,...,C4 führt zu D1= {1,2}, D2= {1,2}, D3= {1,2,3}, D4= {4,5}, D5= {5,6}

Bounds-Consistency mit C5 führt zu D3= {3} C3 problematisch, D5= {6} heilt das Problem Ist das Ergebnis arc-consistent?

Page 61: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

61

Lösen von Constraintsnetzen – Backtracking Gegeben ist ein Constraintnetz R = (X,D,C), Idee: Solve(X,D,C,A,L) /* A ist eine partielle Lösung, zu Beginn {}, L = Lösung zu Beginn leer

{}

Wähle eine Variable xi aus X aus, /* Variablenwahl!

falls X leer ist, setze L auf A und gib „true“ zurück Entferne xi aus X

Solange noch Werte in Di sind Wähle einen Wert v aus Di aus /* Wertwahl!

Falls A sich mit v für xi zu einer konsistenten Teillösung ergänzen läßt, dann Erweitere A um v für xi

Falls Solve(X,D,C,A,L) = true return true // L ist die Lösung von R

Entferne v für xi aus A // Es gab keine konsistente Vervollständigung

return false // Es gab keine konsistente Vervollständigung

Page 62: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

62

Lösen von Constraintsnetzen – Backtracking Arbeitet auf einer

fixen Ordnung der Variablen

Rekursiv wäre es leichter zu verstehen...

Hier kann i mehrfach hintereinander runtergezählt werden

Page 63: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

63

Lösen von Constraintsnetzen – Backtracking Wie kann man das verbessern? 1. Idee: Man kann zwischendurch Domains oder Constraints

verkleinern (Consistency checken oder ähnliches) ...das kann man auch vor der ersten Runde machen

2. Idee: Man kann versuchen, Variablen und Werte auf eine halbwegs schlaue Art auszuwählen für die LÖSBARKEIT spielt die Reihenfolge keine Rolle für die EFFIZIENZ der Lösungsfindung aber sehr wohl

3. Manchmal kann man den Graph auch schlau zerhacken, „günstige“ Teilprobleme lösen und dann die Lösungen zusammenbauen.

Page 64: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

64

Lösen von Constraintsnetzen – Backtracking2,3,5

2,3,4 2,3,4 2,5,6

x1 x2 x3

zConstraints: z teilt xi ohne Rest

z

x1

x2

x3

2 3 5

2 3 4 2 3 4 2 3 4

2 3 4

2 5 6

2 432 43

2 5 62 5 62 5 62 5 6

Wurzel

Page 65: Constraint Processing Version 1.0-alpha

65

Lösen von Constraintsnetzen – Backtracking2,3,5

2,3,4 2,3,4 2,5,6

x1 x2 x3

zConstraints: z teilt xi ohne Rest

x1

x2

x3

z

2 3 4

2 2 3 4 2 3 4

2 3 5

2 65

2 3 5 2 3 5 2 3 5

2 65

2 3 5 2 3 5 2 3 5

2 65

2 3 5 2 3 5

praktischgleicheStruktur

3 4

Page 66: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

66

Lösen von Constraintsnetzen – Backtracking2,3,5

2,3,4 2,3,4 2,5,6

x1 x2 x3

zConstraints: z teilt xi ohne Rest

z

x1

x2

x3

2 3

2 3 4 2 3 4

2 3 4

2 6

2 432 43

2 62 62 62 6

Arc-Consistency anwenden:

Löschen von 5 aus Dz

Löschen von 5 aus Dx33

Page 67: Constraint Processing Version 1.0-alpha

67

Lösen von Constraintsnetzen – Backtracking2,3,5

2,3,4 2,3,4 2,5,6

x1 x2 x3

zConstraints: z teilt xi ohne Rest

Path-Consistencyanwenden, Mitschrieb

x1

x2

x3

z

2 3 4

2 2 3 4 2 3 4

2 3 5

2 65

2 3 5 2 3 5 2 3 5 2 3 5 2 3 5 2 3 5

2 65

2 3 5 2 3 5

praktischgleicheStruktur

3 4

Page 68: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

68

Lösen von Constraintnetzen

x1:rot,blau,grün x7:rot,blau

Suche mit Backtracking für d1 = x1,x2,...,x7 (a) und d2 = x1,x7,x4,x5,x6,x3,x2 (b) s. Mitschrieb

x3:rot,blau x5:blau,grün

x2:blau,grün x6:rot,grün,tee

x4:rot,blau

Page 69: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

69

Lösen von Constraintnetzen

1

2

3

4

5

7 8

6

9 1011

12

18

g

b

b

b

g

r

r

Page 70: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

70

Lösen von Constraintnetzen

Page 71: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

71

Lösen von Constraintnetzen

Definition: Ein Netzwerk R ist backtrack-frei relativ zu einer festen Variablenreihenfolge d, falls jeder Blattknoten im Suchgraphen eine Lösung repräsentiert.

Kosten für Backtracking k = maximale Domaingröße,

t = maximale Anzahl Tuple in einem Constraint, r = maximale Stelligkeit (t · kr), e = Anzahl Constraints, n = Anzahl Variablen

Consistence-Check: O(e log t) Select-Value: O(k e log t), binär O(n*k)

Page 72: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

72

Lösen von Constraintnetzen

Verbesserung durch Pre-Processing: Consistency-Enforcing Verbesserung des Ablaufs (der Kontroll-Strategie für das

Backtracking) Look-Ahead-Schemata: Limitierte Constraint-Propagation, dann

entscheiden, welche Variable gewählt wird. Es ist generell von Vorteil, die Variable zu wählen, die die stärksten Zwänge auf den verbleibenden Suchraum ausübt

entscheiden, welcher Wert dieser Variable zugewiesen wird, wenn nur eine Lösung gesucht wird, dann versuchen wir, den Wert zu wählen, der die besten Möglichkeiten für erfolgreiches Vervollständigen des Assignments offen läßt

Look-Back-Schema: Wie weit soll das Backtracking führen? Wo lag die eigentliche Ursache für das

Dead-End? Mittel der Wahl: Backjumping Gründe für ein Scheitern als neue Constraints aufzeichnen, um ein Entstehen

der gleichen Konflikte später zu vermeiden (Constraint recording and learning)

Page 73: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

73

Lösen von Constraintnetzen

Page 74: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

74

Lösen von Constraintnetzen

Page 75: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

75

Lösen von Constraintnetzen

Page 76: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

76

Lösen von Constraintnetzen

Page 77: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

77

Lösen von Constraintnetzen – Dynamic Look-Ahead Value Orderings LVO: Look-ahead value ordering: schätzen der „likelihood“, dass die

Werte zu einer Lösung führen, Wahl des vielversprechensten Wertes

LVO wendet testweise FC oder AC o.ä. an, wichtig auch die Bewertungsheuristik für die erhaltenen Resultate, z.B. Min-Conflicts (MC): Wähle den Wert, der zum Entfernen der

wenigsten Werte in den Domains zukünftiger Variablen führt (genauer: die mit dem betrachteten Wert konfligieren, aber konsistent mit dem momentanen partiellen Assignment sind)

Max-Domain-Size (MD): Wähle den Wert, der zum größten „kleinsten“ Domain zukünftiger Variablen führt (Details wie eben)

...

Page 78: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

78

Lösen von Constraintnetzen – Dynamic Look-Ahead Value Orderings ...

Estimate Solutions (ES): Wähle Wert, der zur größten Anzahl möglicher Lösung führt: multipliziere die Domains zukünftiger Variablen nach entfernen zum betrachteten Wert inkonsister Werte aus diesen Domains

Auch gut: Werte, die bereits verwendet und „später“ verworfen wurden (und zu denen man noch partielle konsistente Teil-Assignments kennt) merken (und wiederverwenden).

Lohnt sich generell nicht für kleine oder mittlere Probleme, scheint aber experimentell für große und harte KONSISTENTE Probleme sinnvoll, in Experimenten am besten: MC.

Page 79: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

79

Variable Ordering Erweitern des normalen Ablaufs um eine dynamische Auswahl

der nächsten Variable – das kann sehr wesentlich für die Effizienz der Suche sein!

Häufig ist das Ziel, eine „fail-first“-Variable auszuwählen, die den Suchraum effektiv beschränkt.

Als empirisch gut hat sich das relativ unaufwändige Verwenden von Forward-Checking erwiesen

Page 80: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

80

Variable Ordering

(Fehler im Buch)

Page 81: Constraint Processing Version 1.0-alpha

Constraint Processing, INTA, FH Gelsenkrichen, W. Conen

81

Vergleich

FC = Forward Checking+DVO, AC=Arc consistency nach der Wertwahl.Uns fehlen noch viele weiterführende Details, aber FC+AC ist schon nicht so schlecht für die aufgeführten Benchmarkprobleme!