Top Banner
Recursive Learning und GRASP SAT-Engines-Seminar WS 2000/01 Stefan Disch
43

Recursive Learning und GRASP SAT-Engines-Seminar WS 2000/01 Stefan Disch.

Apr 05, 2015

Download

Documents

Aldric Schnall
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Recursive Learning und GRASP SAT-Engines-Seminar WS 2000/01 Stefan Disch.

Recursive Learningund GRASP

SAT-Engines-Seminar

WS 2000/01

Stefan Disch

Page 2: Recursive Learning und GRASP SAT-Engines-Seminar WS 2000/01 Stefan Disch.

Recursive Learning und GRASP

Die Papers1994: Recursive Learning: A New Implication Technique for Efficient

Solutions to CAD Problems – Test, Verfifications, and Optimization Wolfgang Kunz, Dhiraj K. Pradhan

1996: GRASP - A New Search Algorithm for Satisfiability João P. Marques-Silva, Karem A. Sakallah

1998: Improving Satisfiability Algorithms by using Recursive Learning João P. Marques-Silva

1999: Combinational Equivalence Checking Using Satisfiability and Recursive Learning

João P. Marques-Silva, Thomas Glass

Page 3: Recursive Learning und GRASP SAT-Engines-Seminar WS 2000/01 Stefan Disch.

InhaltRecursive Learning

GRASP

GRASP und Recursive Learning

Combinational Equivalence Checking und SAT

Page 4: Recursive Learning und GRASP SAT-Engines-Seminar WS 2000/01 Stefan Disch.

Recursive Learning

Recursive Learning

Lösung von Entscheidungsproblemen

Ursprünglich für kombinatorische Schaltkreise

Bei GRASP Teil der Preprocessing Engine oder der Deduction Engine

Page 5: Recursive Learning und GRASP SAT-Engines-Seminar WS 2000/01 Stefan Disch.

Recursive Learning

Begriffe / Definitionen (1)Gegeben sei ein Gatter G, welches mindestens ein Eingangs- oder Ausgangsignal spezifiziert hat: Gatter G wird als unjustified bezeichnet, wenn es ein oder mehrere nicht spezifizierte Eingangs- oder Ausgangssignale gibt, die bei geeigneter Belegung zu einem Konflikt führen können. Sonst ist das Gatter G justified.

a

b = 1c

c = 1

a

b

c = 0

d = 0

unjustified justified justified

b = 0

a = 1

Page 6: Recursive Learning und GRASP SAT-Engines-Seminar WS 2000/01 Stefan Disch.

Recursive Learning

Begriffe / Definitionen (2)Es wird folgendes logische Alphabet verwendet:

Ein Signal gilt als spezifiziert, wenn es einen der Werte hat.

Ein Signal gilt als nicht spezifiziert, wenn es den Wert X hat.

Sei f ein willkürliches, nicht spezifiziertes Signal und V ein logischer Wert.

Wenn alle konsistenten Kombinationen von Wertzuweisungen, für die kein

„unjustified“ Gatter im Schaltkreis übrigbleibt, die Zuweisung f = V enthalten,

wird f = V als notwendig bezeichnet.

Implikationen werden als vollständig oder präzise bezeichnet, wenn sie alle notwendigen Zuweisungen bestimmen.

XB ,1,03

1,0

Page 7: Recursive Learning und GRASP SAT-Engines-Seminar WS 2000/01 Stefan Disch.

Recursive Learning

Begriffe / Definitionen (3)Direkte Implikationen sind Implikationen, die durch einfaches Auswerten der Wahrheits-

tafel eines bestimmten Gatters mit den gegebenen Zuweisungen und durch Propagieren

der gewonnenen Signale gewonnen werden können.

Page 8: Recursive Learning und GRASP SAT-Engines-Seminar WS 2000/01 Stefan Disch.

Recursive Learning

Beispiel:

x z = 0

v = 1

u = 1

y = 1

w = 0

s = 0

x = 1

t = 0

r = 0

q = 0

p = 0

Lernen:v = 1u = 1x = 1

Page 9: Recursive Learning und GRASP SAT-Engines-Seminar WS 2000/01 Stefan Disch.

Recursive Learning

Beispiel:0. Learning level 1. Learning level 2. Learning level

z = 0 unjustified

v = 1, u = 1, x = 1

unjust. line z = 0 :

1. just. v = 1:

2. just. u = 1

3. just. y = 1

w = 0 (unjust.)

p = 0 (unjust.)

v = 1, x = 1

u = 1, x = 1

unjust. line w = 0:

1. just. s = 0

v = 1

x = 1

2. just. t = 0

v = 1

x = 1

unjust. line p = 0:

Page 10: Recursive Learning und GRASP SAT-Engines-Seminar WS 2000/01 Stefan Disch.

Recursive Learning

Der naive Algorithmusdemo_recursive_learning() {

for each unsatisfied line {

for each input: justification {

- assign controlling value (e.g. 0 for AND)

- make implications and set up new list of

resulting unjustified lines

- if consistent: demo_recursive_learning() }

if there are one or several signals f in the circuit, such that f assumes the same logic value V for all consistent

justifications:

then learn f = V, make implications for all learned signal values

if all justifications are inconsistent: learn that the

current situation of value assignments is inconsistent.}

}

Page 11: Recursive Learning und GRASP SAT-Engines-Seminar WS 2000/01 Stefan Disch.

Recursive Learning

Problem: unvollst. Implikationen

y

d

a

b

c

x = 0

Aus x = 0 folgt y = 0, da aus b = 0 d = 1 folgt, bzw. aus b = 1 folgt e = 1 und somit immer y = 0.

demo_recursive_learning würde hier scheitern und die Implikation x = 0 y = 0 nicht finden.

demo_recursive_learning wertet nur direkte Implikationen aus.

e

1

b = 1

e =1

y = 0b = 0

e

1

Page 12: Recursive Learning und GRASP SAT-Engines-Seminar WS 2000/01 Stefan Disch.

Recursive Learning

Notationen

r Tiefe der Rekursion

max. Tiefe der Rekursion

ist die Menge der „unjustified“ Gatter im aktuellen Stand des Algorithmus

ist die Menge der Zuweisungen, die eine

„justification“ eines Gatters zur Rekursionstiefe r repräsentiert.

ist die vollständige Menge von „justifications“ eines Gatters .

ist die Menge der „unjustified“ Gatter einer

gegebenen „justification“ in der Rekursionstiefe r.

maxr

,...,, 3210 GGGU

,..., 2211 VfVfJ rGx

xG

,...,, 321 JJJC rGx

,...,, 321 GGGU rJ x

xJ

xG

Page 13: Recursive Learning und GRASP SAT-Engines-Seminar WS 2000/01 Stefan Disch.

Recursive Learning

Bsp. vollst. Implikation (1)

G5

G6

G1

G2

G3

G4

a

bk

l

m

n

c

d

e

f

g

h

ij

r

p = 1

q0

0

0

0

0

0

0

1

0

1

X

Page 14: Recursive Learning und GRASP SAT-Engines-Seminar WS 2000/01 Stefan Disch.

Recursive Learning

Bsp. vollst. Implikation (2)0. Learning level 1. Learning level 2. Learning level

p=1 (unjust.)

(Gate G6 unjust.)

unjust. Gate G6:

1. justification: q = 0, r = 0

k = 0 (G1 unjust.)

l = 0 (G2 unjust.)

m = 0 (G3 unjust.)

n = 0 (G4 unjust.)

1. justification inconsistent

unjust. Gate G1:

1. justification c=0

e = 1

f = 0 (since l = 0)

i = 1

j = 0 (since n = 0)

inconsistency at b

2. justification d=0

g = 1

h = 0 (since m = 0)

j = 1i = 0 (since n = 0)inconsistency at a

current situation of value assignments inconsistent

Page 15: Recursive Learning und GRASP SAT-Engines-Seminar WS 2000/01 Stefan Disch.

Recursive Learning

Alg. für vollständige Implikationinitially: r=0 make_all_implications(r,r_max) {

make all direct implications and set up a List U_r of resulting unjustified gates if r < r_max: learning { for each gate G_x, x=1,2,... in U_r: justifications { set up a list of justifications C_r for gate G_x for each justification J_i C_r: { -make the assignments contained in J_i -make_all_implications(r+1,r_max)

}

if there is one or several signals f in the circuit, which assume the same logic value V for all consistent justifications J_i C_r then learn:

f = V is uniquely determined in level r, make direct implications for all learned values in level r

if all justifications are inconsistent, then learn: given situation of value assignments in level r is inconsistent }

}

}

Page 16: Recursive Learning und GRASP SAT-Engines-Seminar WS 2000/01 Stefan Disch.

Recursive Learning

Maximale RekursionstiefeDer Prozeß terminiert auch im Falle von , da nach einer diskreten Anzahl von Schritten die Eingänge oder Ausgänge des Schaltkreises erreicht werden.

Die tatsächliche Wahl von muss durch eine geeignete Heuristik bestimmt werden.

maxr

maxr

Page 17: Recursive Learning und GRASP SAT-Engines-Seminar WS 2000/01 Stefan Disch.

Recursive Learning

Experimentelle Ergebnisse5max r

Page 18: Recursive Learning und GRASP SAT-Engines-Seminar WS 2000/01 Stefan Disch.

InhaltRecursive Learning

GRASP

GRASP und Recursive Learning

Combinational Equivalence Checking und SAT

Page 19: Recursive Learning und GRASP SAT-Engines-Seminar WS 2000/01 Stefan Disch.

GRASP

GRASPGRASP: generic search algorithm for the satisfiability problem

•Integration von „search-pruning-techniques“

•Verwendung von Konflikt-Analyse-Tools

•Zentrale Idee: non-chronological backtracking

=> Der Suchraum wird kleiner

Page 20: Recursive Learning und GRASP SAT-Engines-Seminar WS 2000/01 Stefan Disch.

GRASP

Definitionen und Notationenassigned: Einer Variablen wurde während des Suchprozesses ein Wert 0 oder 1 zugewiesen. Ist dies nicht der Fall spricht man von unassigned .

truth assignment A ist eine Menge von „assigned“ Variablen und ihren Werten. Man spricht von einem vollständigen „assignment“, wenn gilt.

Bsp.:

satisfying assignment: : Formel in CNF

unsatisfying assignment:

Die Klauseln eines Ausdrucks werden durch ein assignment in drei Partitionen aufgeteilt: erfüllte Klauseln, unerfüllte Klauseln und nicht gelöste Klauseln. Die unassigned Literale einer Klausel werden als freie Literale bezeichnet. Klauseln mit nur einem freien Literal werden als unit clause bezeichnet.

nA

0,1,0 1651 xxxA

1A

0A

Page 21: Recursive Learning und GRASP SAT-Engines-Seminar WS 2000/01 Stefan Disch.

GRASP

Die Suche (Prinzip)

Der Suchprozeß durchläuft folgende Schritte iterativ:

1. Im aktuellen decision level wird ein decision assignment gewählt und das truth assignment erweitert (im Falle einer unassigned Variable). Der Prozeß terminiert erfolgreich, wenn alle Klauseln erfüllt sind. Er terminiert nicht erfolgreich, wenn nicht alle Klauseln erfüllt sind, aber alle möglichen decision assignments gemacht wurden.

2. Durch Implikation wird das truth assignment erweitert. Bei diesem Schritt kann es auch zu unerfüllten Klauseln kommen. Dies wird als Konflikt bezeichnet. Das truth assignment wird zum unsatisfying assignment.

3. Der letzte Schritt (2.) wird rückgängig gemacht, wenn ein Konflikt aufgetreten ist. (Backtracking Schritt)

Es wird mit einem leeren truth assignment begonnen. Ein Backtracking-Such-Algorithmus traversiert den Suchraum in Form eines Entscheidungsbaumes. Jeder Knoten des Baumes repräsentiert eine Zuweisung einer Variable. Die Zuweisungen werden als decision assignments, die Tiefe im Baum als decision level bezeichnet.

Page 22: Recursive Learning und GRASP SAT-Engines-Seminar WS 2000/01 Stefan Disch.

GRASP

Konflikt-Managementconflict-based equivalence (CBE)

Neue Implikanten, die nicht in der Klausel-Menge vorkommen und durch einen Konflikt gefunden wurden, werden zur Klausel-Menge hinzugefügt. Dadurch kann man den gleichen Fehler an anderer Stelle vermeiden.

failure-driven assertion (FDA)

Wenn ein decision assignment im aktuellen decision-level zum Konflikt führte, wird die inverse Zuweisung (falls noch nicht versucht) benutzt.

conflict-directed backtracking (CDB)

Wenn der Konflikt aus einem früheren decision-level stammt, wird die Suche an diese Stelle zurückspringen. Diese Technik ist eine Form des nonchronological backtracking. Mit ihr kann man den Suchprozeß signifikant reduzieren.

Page 23: Recursive Learning und GRASP SAT-Engines-Seminar WS 2000/01 Stefan Disch.

GRASP

Struktur des Suchprozesses (1)Der zugrundeliegende Mechanismus, um Implikationen aus einer Klausel-Menge zu erhalten, ist die boolean constraint propagation (BCP). Dies ist nichts anderes als die iterierte Anwendung der unit clause rule (M. Davis, D. Putnam).

Gegeben sei eine Klausel . Diese impliziert eine Zuweisung für die Variable x (vgl. unit clause rule). Das antecedent assignment A(x) ist eine Menge von assignments für die gilt: A(x) enthält Variablen und ihre Zuweisungen aus

Beispiel:

)(xAx

kll ...1

}0,0{)(

}1,0{)(

}1,0{)(

)(

yxzA

zxyA

zyxA

zyx

Page 24: Recursive Learning und GRASP SAT-Engines-Seminar WS 2000/01 Stefan Disch.

GRASP

Struktur des Suchprozesses (2)Wenn die Variable x assigned ist, gibt v(x) den zugewiesenen boolschen Wert zurück.

Eine Sequenz von durch BCP generierten Implikationen wird durch einen gerichteten implication graph I abgebildet:

1. Jeder Knoten in I repräsentiert eine Zuweisung x = v(x)

2. Die Vorgänger des Knotens x = v(x) sind in A(x) und der entsprechenden unit clause enthalten. Die gerichteten Kanten von den Knoten in A(x) nach x = v(x) werden mit beschriftet. Knoten ohne Vorgänger sind decision assignments.

3. Spezielle Konflikt-Knoten K werden in I benutzt um Konflikte anzuzeigen. Die Vorgänger entsprechen A(K) und die Kanten werden wieder mit der entsprechenden Klausel beschriftet.

Der decision level wird wie folgt definiert:

)()(,)(max)( xAyvyyx

Page 25: Recursive Learning und GRASP SAT-Engines-Seminar WS 2000/01 Stefan Disch.

GRASP

Algorithmus (1)Der Algorithmus besteht aus folgenden Grundkomponenten:

Decide(), hier wird ein decision assignment gewählt. In der Regel werden Heuristiken verwendet. Im folgendem Beispiel wird diese greedy Heuristik verwendet:

Deduce(), hier wird BCP angewandt und der entsprechende implication graph erstellt.

Diagnose(), hier werden die Konflikte identifiziert und die clause database mit Implikanten erweitert.

Erase(), diese Prozedur löscht die assignments im aktuellen decision level.

An jedem Knoten im decision tree wird die Anzahl der direkt erfüllten Klauseln ermittelt. Dies wird für jede Variable und Zuweisung gemacht. Es wird die Variable und Zuweisung gewählt, die am meisten Klauseln erfüllt.

Page 26: Recursive Learning und GRASP SAT-Engines-Seminar WS 2000/01 Stefan Disch.

GRASP

Beispiel für Deduce() ,...2@1,2@1,3@0,3@0,1@0 131211109 xxxxx

6@11 x

13879

818

12717

656

11645

10544

4323

9312

211

xxx

xx

xxx

xx

xxx

xxx

xxx

xxx

xx

1

2

3 4

5

6

6

5

4

2

36@11 x

6@12 x

3@010 x

6@15 x

6@14 x

6@13 x 6@16 x

1@09 x 3@011 x

K

Assignment:

Decision Assignment:

Klauselmenge:

Implication Graph

Page 27: Recursive Learning und GRASP SAT-Engines-Seminar WS 2000/01 Stefan Disch.

GRASP

Die Diagnose() ProzedurConflict_Induced_Clause()

Hier wird eine Klausel omega_C_K wie folgt generiert:

)()()()(,)(

)()()()(,)(

xyxAyvyx

xyxAyvyx

Partition von A(x) nach decision level

sonst )()(

)(wenn )(,

)(

)()(,

xyvyC

C yAx

xAxvx

xA

und :gilt wobei)( 10

)()(,

)( xxxxxKKAxvx

xvC

C

Page 28: Recursive Learning und GRASP SAT-Engines-Seminar WS 2000/01 Stefan Disch.

GRASP

Die Diagnose() ProzedurIm Beispiel würde dies zu folgendem Ergebnis führen:

111091

111091

)(

0,0,0,1)(

xxxxK

xxxxKA

C

C

Page 29: Recursive Learning und GRASP SAT-Engines-Seminar WS 2000/01 Stefan Disch.

GRASP

Beispiel 2 ,...2@1,2@1,3@0,3@0,1@0 131211109 xxxxx

6@01 x

111091

13879

818

12717

656

11645

10544

4323

9312

211

)( xxxxK

xxx

xx

xxx

xx

xxx

xxx

xxx

xxx

xx

C

Assignment:

Decision Assignment:

Klauselmenge:

Implication Graph

8

7

9

9

9

7

6@01 x

2@112 x

6@18 x

6@17 x

2@113 xK´

Page 30: Recursive Learning und GRASP SAT-Engines-Seminar WS 2000/01 Stefan Disch.

GRASP

Beispiel 2 / CDBHier führt FDA zu einem erneuten Konflikt:

121211109

131211109

´)(

1,1,0,0,0´)(

xxxxxK

xxxxxKA

C

C

Nun muss ein Backtrack-Schritt zum backtrack level (CDB) erfolgen:

´)()(,)(max KAxvxx C

Im Beispiel würde = 3 sein. Dies würde zu einem FDA in Level 3 führen.Die Klausel wird der clause database hinzugefügt. => conflict-induced necessary assignments

´)(KC

Page 31: Recursive Learning und GRASP SAT-Engines-Seminar WS 2000/01 Stefan Disch.

GRASP

Algorithmus (2)

// Global variables: clause database phi // variable assignment A // Return value: FAILURE or SUCCESS // Auxiliary variables:backtracking level beta // GRASP() { return (Search (0,beta) != SUCCESS) ? FAILURE:SUCCESS; }

Page 32: Recursive Learning und GRASP SAT-Engines-Seminar WS 2000/01 Stefan Disch.

GRASP

Algorithmus (3)// input argument: current decision level d // output argument: backtracking level beta // return value: CONFLICT or SUCCESS // Search (d, &beta) { if (Decide (d) == SUCCESS) return SUCCESS;

while (true) { if (Deduce (d) != CONFLICT) { if (Search (d + 1, beta) == SUCCESS)

return SUCCESS; else if (beta != d) {

Erase(); return CONFLICT; }

} if (Diagnose (d, beta) == CONFLICT) { Erase(); return CONFLICT;

} Erase();

} }

Page 33: Recursive Learning und GRASP SAT-Engines-Seminar WS 2000/01 Stefan Disch.

GRASP

Algorithmus (4)Diagnose (d, &beta) {

omega_C_K = Conflict_Induced_Clause(); Update_Clause_Database (omega_C_K); beta = Compute_Max_Level(); if (beta != d) { add new conflict vertex K to I; record A(K);

return CONFLICT; }

return SUCCESS; }

Page 34: Recursive Learning und GRASP SAT-Engines-Seminar WS 2000/01 Stefan Disch.

Experimentelle Ergebnisse#M: Anzahl Class members

#S: Anzahl Class members, für die der Algorithmus terminiert

Page 35: Recursive Learning und GRASP SAT-Engines-Seminar WS 2000/01 Stefan Disch.

InhaltRecursive Learning

GRASP

GRASP und Recursive Learning

Combinational Equivalence Checking und SAT

Page 36: Recursive Learning und GRASP SAT-Engines-Seminar WS 2000/01 Stefan Disch.

GRASP und Recursive Learning

GRASP und Recursive Learning

Recursive Learning kann in GRASP als Teil der Preprocessing Engine oder in der Deduction Engine eingesetzt werden.

Idee:

Es wird in beiden Fällen versucht mittels RL die notwendigen assignments zu finden.

Diese werden der clause database als unit clause hinzugefügt.

Innerhalb der Deduction Engine wird BCP durch RL ersetzt.

Page 37: Recursive Learning und GRASP SAT-Engines-Seminar WS 2000/01 Stefan Disch.

GRASP und Recursive Learning

Beispiel:

Assignments:

Klauseln (CNF):

Es folgt:

neue Klausel: (Lernschritt)

)(

)(

)(

3

2

1

zyw

yx

wxu

}0,1{ uz

)1()0()1( xuz

)(4 xuz

Page 38: Recursive Learning und GRASP SAT-Engines-Seminar WS 2000/01 Stefan Disch.

GRASP und Recursive Learning

ProblemDer Umfang der clause database wird schnell zu groß!

Strategie 1: Relevance-Based Learning

Wenn eine größere Anzahl an Literalen einer gelernten Klausel unassigned werden, wird sie gelöscht.

Strategie 2: k-bounded Learning

Nur Klauseln mit max. k Literalen werden aufgezeichnet.

Page 39: Recursive Learning und GRASP SAT-Engines-Seminar WS 2000/01 Stefan Disch.

GRASP und Recursive Learning

Experimentelle Ergebnisse

k-bounded learning: k = 6relevance-based learning: Anzahl der unassigned Literale = 3

2max r

Page 40: Recursive Learning und GRASP SAT-Engines-Seminar WS 2000/01 Stefan Disch.

InhaltRecursive Learning

GRASP

GRASP und Recursive Learning

Combinational Equivalence Checking und SAT

Page 41: Recursive Learning und GRASP SAT-Engines-Seminar WS 2000/01 Stefan Disch.

Combinational Equivalence Checking und SAT

Combinational Equivalence Checking und SAT

Das CEC-Problem wird auf das SAT-Problem übertragen.

Page 42: Recursive Learning und GRASP SAT-Engines-Seminar WS 2000/01 Stefan Disch.

Combinational Equivalence Checking und SAT

Prinzip1. Es wird ein miter erzeugt.

2. Der erhaltene Schaltkreis wird in CNF überführt.

3. Ist der CNF-Ausdruck erfüllbar, sind die Schaltkreise nicht äquvivalent.

miter:

SK 1

SK 2

A

BC

Page 43: Recursive Learning und GRASP SAT-Engines-Seminar WS 2000/01 Stefan Disch.

Experimentelle Ergebnisse