370 likes | 498 Views
Spezialvorlesung Suchalgorithmen. Thema: Symbolische Suche Stefan Edelkamp. Struktur des Buchs. Überblick. BDDs und BDD-basierte Suche Symbolische Exploration BDD-BFS, BDD-Dijkstra, BDDA* Symbolische Musterdatenbanken Musterauswahlproblem Bin-Packing Genetische Algorithmen
E N D
SpezialvorlesungSuchalgorithmen Thema: Symbolische Suche Stefan Edelkamp
Überblick • BDDs und BDD-basierte Suche • Symbolische Exploration • BDD-BFS, BDD-Dijkstra, BDDA* • Symbolische Musterdatenbanken • Musterauswahlproblem • Bin-Packing • Genetische Algorithmen • Hybrid-Ansatz (BDDs + Externe Suche)
BDDs a1 : (at package p c) a2 : (in package p t) Zustand : ¬ a1 a2 a1 a1 a2 a2 a2 1 0 0 1 0 0 (RO)BDD Binärer Entscheidungsbaum
BDD-basierte Suche • Symbolische Repräsentation von Zustandsmengen • Boole‘sche FormelStates(a1,…,an) • Effiziente Zustandskodierung: • States(v1,…,vk), mit „finite domain“ variablen vi • Reduziert # möglicher, nicht # erreichbarer Zustände • Variablenordnung wichtig, vgl.
Beispiel Kodierung Zustände States(x) = Zustandsmengen:
Symbolische Breitensuche • BFS:Si(x) repräsentiert alle Zustände die in i Schritten erreichbar sind • Relationales Produkt:
Symbolische Exploration • Trans(x,x‘) beschreibt Transition Relation für • Image(x‘) = xStates(x) Trans(x,x‘) • Pre-Image(x) = x States(x‘) Trans(x,x‘) Forwärts- and Rückwärtssuche sehr ähnlich
Bidirektionale symbolische Breitensuche Schnitt gefunden s g
Verfeinerungen: Duplikatserkennung (BFS vs. BF-Tree Search): Terminierung Partitionierte Berechnung: • 1 Relation Trans-O für jeden Operator O • ( and vcommutieren) Disjunktive Partition • Image(x‘) = VO (x States(x) Trans-O(x,x‘))
Symbolische Berechnung kürzester Pfade • Vorraussetzungen: • Relation • Gewichtete Transitionsrelation: T(x,x‘,w)= 1, Übergang von x nach x‘ hat Kosten w {0,1,…,C}
Symbolischer Schätzer • Heuristische Relation: H(w,x)= 1, Schätzwert von x zum Ziel hat Kosten w {0,1,…,C}
Symbolisches A* • Idee:
Symbolische Musterdatenbanken • Abstrakter Zustand (STRIPS): Original S AP„geschnitten“ mitTräger R AP • Abstrakter Operator(PR,A R,D R) Pfade bleiben erhalten! • Akkurate Zieldistanzen für jeden abstrakten Zustand • Untere Schranke für Zieldistanzen in Originalraum • BDD H[i] represäntiert Zustandsmenge { S | h(S) = i } • Konstruktion: Rückwärts-BFS • Symbolisch Musterdatenbanken: Wesentlich größere DB können in geringerer Zeit berechnet werden
Speicher- und Zeitgewinn (250 mio states/sec)
Approximierung der Datenbankgröße Addition von vi zum Trägerkorrespondiert zur Multiplikation seines Wertebereichs zur Abstraktionsraumgröße 1. Füge Variable gierig hinzu, bis geschätzter Speicherbedarf überschritten wird 2. Konstruiere DB mit ausgewähltem Träger v1 |v2|*|v3| |v1|*|v2|*|v3|
Musterauswahl durch „BinPacking“ Abstract Zustandsraumgröße <Speichergrenze Approximationen z.B. „first fit“ Größen = |v1|*|v2|*|v4| |v6|*|v7| |v3|*|v8| |v5|*|v9| *|v10|
Genetische Musterdatenbanken Problem: • Auswahlstrategie beeinflusst Effizienz • Viele Muster Vorschlag: • GA mit Variablen Auswahl Genen • Initialisiert mit Bin Packing • Spaltebeschreibt Variable • Zeile beschreibt Muster
Genetische Operatoren • Mutation (wichtigster Operator): • Hinzufügen/Löschen von Variablen durch Bit-flippen • Hinzufügen/Löschen von Mustern/Zeilen • Rekombination (selten genutzt): • 1-Bit „cross-over“ • Auswahl: • Abstracter Zustandsraum zu großgeringe Fitness • Basiert auf mittleren Heuristisch Wert als Fitness • Während des Lernens werden PDBs konstruiert - not benutzt!
Symbolisch Gerichtete Suche Schätzer H: Relation von Paaren H(value,state) = 1 h(state)=value Beispiel:h(002) = h(012) = 1, h(102) = h(112) = 0 H = {(value0,state0),(value1,¬state0)} Implementation: Alle Mengen-A* Fachoperations auf BDDs Optimalität und completeness: Von A*/IDA* geerbt (konsistenter Schätzer)
BDDA* • BDD B(g,h,x) für Zustandsmenge mit f=g+h • BDD für TransitionsrelationT(x,x´) - ein Ti für jeden Operator Oi, i = 1..k • Nachfolgermenge berechnet mit Succ = Vi $x Ti(x,x´) ^ B(g,h,x) • (partitionierte Berechnung) • BDD für H[i] (partitioniert, i = BFS Schicht) • BDD für min. Fach B(g+1,h,x) = Succ ^ H[h]
Synergien • Mengen A* • BDD für Zustandsmenge und (partitionierter) Übergangsrelation • Duplikatserkennung mit Boole’schen Operationen • Symbolische Musterdatenbanken: Schätzer mit Symbolic BFS berechnet BDDA*
BDDA* BDD für Zustände h • Voraussetung: • Ungewichteter Problemgraph • KonsistenterSchätzer ∆h ={-1,0,1,2,…} g Schnitt der Nachfolger mit H[0]H[1]H[2]H[3]H[4]H[5]H[6]
Pseudo-Code B(0,h(I)) {I} fminh(I) while (fmin ≠ ∞) g min{i | B(i, fmin − i) ≠ } hfmin − g B(g, h) Reduziere(B(g, h)) Succ GenerateNeighbors(B(g, h),T) for eachi = 1,...,max B(g + 1, i) B(g + 1, i) v (Succ ^ H[i]) fmin min{i + j > fmin | Open(i, j) ≠ } U {∞}
Anzahl Iterationen Quadratisch in optimaler Lösungslänge
Symbolisches Branch-and-Bound (BFHS) Gegeben untere Schranke U, Berechnung entweder intern oder extern
Branching Partitioning • Wert eines Bits hängt nicht von den anderen ab • Heuristische Differenz in die Transitionsfunktion • ▲1T(x‘,x) = T(x‘,x) ▲1H(x,x‘) • ▲0T(x‘,x) = T(x‘,x) ▲0H(x,x‘) • ▲-1T(x‘,x) = T(x‘,x) ▲-1H(x,x‘)
Kostenoptimale symbolische Suche • BDDs für lineare Ausdrücke (Bulzan, Barzis, STTT 2005) • Metrik/Constraint:F(x) = a1*v1 + … an*vn • Berechne minF,maxF • Kodiere Wertebereich [0,maxF-minF] • Konstruiere BDD für F • Komplexität • Platz & Zeit: O(n *(a1+…+an)) • … oft besser als mit ADDs
Gemischte symbolisch- explizite Exploration • Viele disjunkte Musterdatenbanken als BDDs (generiert in symbolischer Breitensuche) bilde Maximum über additive Musterdatenbanken • Externe und paralleleexplizite Suche • Look-up: BDD-Repräsentation(state) BDD-Repräsentation(heuristik) … H[i]
Beispiel: 35-Puzzle 1 3 2 18 20 25 24 4 5 6 7 21 28 8 15 10 11 12 13 14 9 27 28 22 30 34 35 17 16 29 31 33 34 26 32
Externalisierung • Packtierte Zustandscodierung: 32 Byte • (8ints wobei 1int = 5 Plättchen x 6 bits) • Datenbanken:2x6er (je 5x6+1x5), 2x5er (je 7x5), inkrementell generiert auf 16 GB, 7er gross, entspricht 36 x 35 x 34 x 33 x 32 x 31 x 30 Zuständen) • Symmetrischer Lookup: Transponierte Stellung wird auch nachgeschaut • Inkrementelle Berechnung: Pro additiver Datenbank zwei Einträge in den Zustandsvektor
Verteilte Berechnung • Annahme: Generierung schnell, Bewertung langsam • Abwechselnd: Generierung (Master, kein Datenbankzugriff) / Bewertung (Client) • Jeder Prozess ist für ein Plättchen zuständig 35 + 1 Prozesse • Prozess muss laut Plättchen pro Menge additiver DBen nur 1e ansprechen geringer Speicherplatz
Ausblick: Suche mit Automaten Presburger Arithmetik (lineare Ausdrücke über den natürlichen Zahlen) kann mit regulären Ausdrücken beschrieben werden • z.B. 4x + 5y ≤ 5 • Menge der akzeptierten Wörter im Automaten entsprechen Zustandsmengen • Idee: Tausche BDD durch EA, um unendliche Zustandsräume zu traversieren • Relationales Produkt: Konjunktion und Projektion • Automatenminimierung nach jedem Schritt, um Eindeutigkeit zu erhalten