Recursive Learning und GRASP SAT-Engines-Seminar WS 2000/01 Stefan Disch.
-
Upload
aldric-schnall -
Category
Documents
-
view
104 -
download
0
Transcript of Recursive Learning und GRASP SAT-Engines-Seminar WS 2000/01 Stefan Disch.
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