Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "Recursive Learning und GRASP SAT-Engines-Seminar WS 2000/01 Stefan Disch."—  Präsentation transkript:

1

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

3 Recursive Learning und GRASP Die Papers 1994: 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

4 Inhalt Recursive Learning GRASP GRASP und Recursive Learning Combinational Equivalence Checking und SAT

5 Recursive Learning Lösung von Entscheidungsproblemen Ursprünglich für kombinatorische Schaltkreise Bei GRASP Teil der Preprocessing Engine oder der Deduction Engine

6 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 = 1 c c = 1 a b c = 0 d = 0 unjustifiedjustified b = 0 a = 1

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

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

9 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 = 1 u = 1 x = 1

10 Recursive Learning Beispiel: 0. Learning level1. Learning level2. 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:

11 Recursive Learning Der naive Algorithmus demo_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.} }

12 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 = 0 b = 0 e 1

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

14 Recursive Learning Bsp. vollst. Implikation (1) G5 G6 G1 G2 G3 G4 a b k l m n c d e f g h i j r p = 1 q 0 0 0 0 0 0 0 1 0 1 X

15 Recursive Learning Bsp. vollst. Implikation (2) 0. Learning level1. Learning level2. 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 = 1 i = 0 (since n = 0) inconsistency at a current situation of value assignments inconsistent

16 Recursive Learning Alg. für vollständige Implikation initially: 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 } }

17 Recursive Learning Maximale Rekursionstiefe Der 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.

18 Recursive Learning Experimentelle Ergebnisse

19 Inhalt Recursive Learning GRASP GRASP und Recursive Learning Combinational Equivalence Checking und SAT

20 GRASP GRASP: 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

21 GRASP Definitionen und Notationen assigned: 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.

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

23 GRASP Konflikt-Management conflict-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.

24 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:

25 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:

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

27 GRASP Beispiel für Deduce() K Assignment: Decision Assignment: Klauselmenge: Implication Graph

28 GRASP Die Diagnose() Prozedur Conflict_Induced_Clause() Hier wird eine Klausel omega_C_K wie folgt generiert: Partition von A(x) nach decision level

29 GRASP Die Diagnose() Prozedur Im Beispiel würde dies zu folgendem Ergebnis führen:

30 GRASP Beispiel 2 Assignment: Decision Assignment: Klauselmenge: Implication Graph K´

31 GRASP Beispiel 2 / CDB Hier führt FDA zu einem erneuten Konflikt: Nun muss ein Backtrack-Schritt zum backtrack level (CDB) erfolgen: 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

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

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

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

35 Experimentelle Ergebnisse #M: Anzahl Class members #S: Anzahl Class members, für die der Algorithmus terminiert

36 Inhalt Recursive Learning GRASP GRASP und Recursive Learning Combinational Equivalence Checking und SAT

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

38 GRASP und Recursive Learning Beispiel: Assignments: Klauseln (CNF): Es folgt: neue Klausel: (Lernschritt)

39 GRASP und Recursive Learning Problem Der 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.

40 GRASP und Recursive Learning Experimentelle Ergebnisse k-bounded learning: k = 6 relevance-based learning: Anzahl der unassigned Literale = 3

41 Inhalt Recursive Learning GRASP GRASP und Recursive Learning Combinational Equivalence Checking und SAT

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

43 Combinational Equivalence Checking und SAT Prinzip 1.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 B C

44 Experimentelle Ergebnisse


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

Ähnliche Präsentationen


Google-Anzeigen