recursive learning und grasp sat-engines-seminar ws 2000/01 stefan disch

Post on 05-Apr-2015

104 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Recursive Learningund 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

InhaltRecursive Learning

GRASP

GRASP und Recursive Learning

Combinational Equivalence Checking und SAT

Recursive Learning

Recursive Learning

Lösung von Entscheidungsproblemen

Ursprünglich für kombinatorische Schaltkreise

Bei GRASP Teil der Preprocessing Engine oder der Deduction Engine

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

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

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.

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

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:

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

}

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

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

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

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

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 }

}

}

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

Recursive Learning

Experimentelle Ergebnisse5max r

InhaltRecursive Learning

GRASP

GRASP und Recursive Learning

Combinational Equivalence Checking und SAT

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

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

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.

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.

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

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

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.

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

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

GRASP

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

111091

111091

)(

0,0,0,1)(

xxxxK

xxxxKA

C

C

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´

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

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; }

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();

} }

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; }

Experimentelle Ergebnisse#M: Anzahl Class members

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

InhaltRecursive Learning

GRASP

GRASP und Recursive Learning

Combinational Equivalence Checking und SAT

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.

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

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.

GRASP und Recursive Learning

Experimentelle Ergebnisse

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

2max r

InhaltRecursive Learning

GRASP

GRASP und Recursive Learning

Combinational Equivalence Checking und SAT

Combinational Equivalence Checking und SAT

Combinational Equivalence Checking und SAT

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

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

Experimentelle Ergebnisse

top related