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
Hybrid-Ansatz (BDDs + Externe Suche)
a1 : (at package p c)
a2 : (in package p t)
Zustand : ¬ a1 a2
BDDs
a1
a1
a2
a2
a2
0
1
Binärer
Entscheidungsbaum
(RO)BDD
0
1
0
0
BDD-basierte Suche
Symbolische Repräsentation von
Zustandsmengen
Boole‘sche Formel States(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‘) = x States(x) Trans(x,x‘)
Pre-Image(x) = x States(x‘) Trans(x,x‘)
Forwärts- and Rückwärtssuche sehr ähnlich
Pseudo-Code
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 v commutieren) 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}
Pseudo-Code
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“ mit Träger R AP
Abstrakter Operator (P R,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)
1600000
1400000
1200000
1000000
800000
600000
400000
200000
0
# States
# BDD Nodes
Approximierung der
Datenbankgröße
Addition von vi zum Träger korrespondiert zur
Multiplikation seines Wertebereichs zur
Abstraktionsraumgröße
v1
|v2|*|v3|
1. Füge Variable
gierig hinzu, bis
geschätzter
Speicherbedarf
überschritten
wird
2. Konstruiere
DB mit
ausgewähltem
|v1|*|v2|*|v3|
Träger
Musterauswahl durch
„BinPacking“
Abstract Zustandsraumgröße < Speichergrenze
Approximationen
z.B. „first fit“
Größen = |v1|*|v2|*|v4| |v6|*|v7|
*|v10|
|v3|*|v8|
|v5|*|v9|
Genetische
Musterdatenbanken
Problem:
Auswahlstrategie beeinflusst
Effizienz
Viele Muster
Vorschlag:
GA mit Variablen Auswahl
Genen
Initialisiert mit Bin Packing
Spalte beschreibt 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(00 ) = h(01 ) = 1, h(10 ) = h(11 ) = 0
H = {(value state ),(value ,¬state )}
Implementation: Alle Mengen-A*
Fachoperations auf BDDs
Optimalität und completeness: Von A*/IDA*
geerbt (konsistenter Schätzer)
2
0,
2
0
2
1
2
0
Greedy Best-First
BDDA*
BDD B(g,h,x) für Zustandsmenge mit f=g+h
BDD für Transitionsrelation T(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
BDDA*
Duplikatserkennung mit
Boole’schen Operationen
Symbolische
Musterdatenbanken:
Schätzer mit Symbolic BFS
berechnet
BDDA*
h
Voraussetung:
0
Ungewichteter
Problemgraph
Konsistenter
Schätzer
1
2
3
4
BDD für
Zustände
5
6
0
1
g
∆h ={-1,0,1,2,…}
2
3
4
5
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}
fmin h(I)
while (fmin ≠ ∞)
g min{i | B(i, fmin − i) ≠ }
h fmin − g
B(g, h) Reduziere(B(g, h))
Succ GenerateNeighbors(B(g, h),T)
for each i = 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-andBound (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
▲1 T(x‘,x) = T(x‘,x) ▲1 H(x,x‘)
▲0 T(x‘,x) = T(x‘,x) ▲0 H(x,x‘)
▲-1 T(x‘,x) = T(x‘,x) ▲-1 H(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 symbolischexplizite Exploration
Viele disjunkte Musterdatenbanken als BDDs
(generiert in symbolischer Breitensuche)
bilde Maximum über additive
Musterdatenbanken
Externe und parallele explizite Suche
Look-up: BDD-Repräsentation(state)
BDD-Repräsentation(heuristik)
… H[i]
Beispiel: 35-Puzzle
1
3
2
18
20
4
5
6
7
25
24
8
15
10
11
21
28
12
13
14
9
27
28
22
30
34
35
17
16
29
31
33
34
26
32
Externalisierung
Packtierte Zustandscodierung: 32 Byte
(8 ints wobei 1 int = 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
Zusammenfassung
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