Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Theresia Hemmerle Geändert vor über 10 Jahren
1
Algorithm Engineering Teilmengen-Suche Stefan Edelkamp
2
Motivation Speicherplatzsparende Wörterbücher Programm/Modellprüfung (Model Checking) Subzeichenketten-Erkennung: Editierdistanz-Problem, Approximative Zeichenkettensuche MSA (Multiple Sequence Alignment) Problem Teilwort-Erkennung: Kreuzwort-Problem: Eine Anfrage wie B*T**R im Kreuzworträtselproble mit BETTER, BITTER, BUTLER, oder BUTTER beantworten Spieleprogrammierung
3
Übersicht Speicherplatzsparende Wörterbücher Bit-State Hashing Hash-Compaction Subzeichenketten-Erkennung: Dynamische Programmierung Teilwort-Erkennung: Listen und Array Hashing und Tries Unlimited Branching Trees
4
Übersicht Speicherplatzsparende Wörterbücher Bit-State Hashing Kollaps-Kompression Subzeichenketten-Erkennung: Dynamische Programmierung Teilwort-Erkennung: Listen und Array Hashing und Tries Unlimited Branching Trees
5
Model Checking Gegeben Eine Modell eines Systems. Die Spezifikation einer Eigenschaft Problem Erfüllt das System die Eigenschaft? search specification state rep. modeling language transition system Abstraction
6
Objectcode Beispiel: Prüfen eines C++ Programms igcc Compiler Model checker Virtual Machine char globalChar; int globalBlocksize = 7; int main(){ allocateBlock(blocksize); } void allocateBlock(int size){ void *memBlock; memBlock = (void *) malloc(size); }
7
Interpretieren des Objectcodes char globalChar; int globalBlocksize = 7; int main(){ allocateBlock(blocksize); } void allocateBlock(int size){ void *memBlock; memBlock = (void *) malloc(size); } Register BSS Section Data Section Text Section Stack Memory Pool Virtuelle Maschine Objectcode
8
Generierung von Zuständen Register BSS Section Data Section Text Section Stack Memory Pool Virtuelle Maschine Register BSS Section Data Section Text Section Stack Memory Pool Startzust. Register BSS Section Stack Memory Pool Zust. 1 Register BSS Section Data Section Stack Zust. 2
9
Kollaps-Kompression für große Zustände
10
Fehlerhafte Wörterbücher sparen Platz
11
Fehlerwahrscheinlichkeit in Bit-State Hashing (Bloom Filter) n: Anzahl der Elemente m: Anzahl der Bits (Tabellengröße) i tes Element kollidiert mit 1…i-1 mit Wkeit von Wahrscheinlichkeit für einen fehlerhafte Suche
12
Senken der Fehlerrate h unabhängige Hashfunktionen, hn <=n Mit zwei Bits (Double Bit-State Hashing)
13
Übersicht Speicherplatzsparende Wörterbücher Bit-State Hashing Kollaps-Kompression Subzeichenketten-Erkennung: Dynamische Programmierung Teilwort-Erkennung: Listen und Array Hashing und Tries Unlimited Branching Trees
14
Editierdistanz-Problem Berechne für zwei gegebene Zeichenfolgen A und B möglichst effizient die Editier-Distanz D(A,B) und eine minimale Folge von Editieroperationen, die A in B überführt. i n f - - - o r m a t i k - i n t e r p o l - a t i o n
15
Sequenzalignierung
16
Größere Protein/DNA Sequenzen
17
Rekursionsgleichung
18
Programm
19
Beispiel: ABCD,BCD, DB
20
Spurgraph der Editier- operationen 0 1 2 3 4 1234 1123 1223 2223 3332 B = a b a c A = b a a c
21
Subgraph der Editieroperationen Spurgraph: Übersicht über alle möglichen Spuren zur Transformation von A in B, gerichtete Kanten von Knoten (i, j) zu (i + 1, j), (i, j + 1) und (i + 1, j + 1). Gewichtung der Kanten entsprechen den Editierkosten. Kosten nehmen entlang eines optimalen Weges monoton zu. Jeder Weg mit monoton wachsenden Kosten von der linken oberen Ecke zu rechten unteren Ecke entspricht einer optimalen Spur.
22
Approximative Zeichenkettensuche Gegeben: zwei Zeichenketten P = p 1 p 2... p m ( Muster) und T = t 1 t 2... t n (Text) Gesucht: Ein Intervall [j´, j], 1 j´ j n, so dass das Teilwort T j´, j = t j´... t j das dem Muster P ähnlichste Teilwort von T ist, d.h. für alle anderen Intervalle [k´, k], 1 k´ k n, gilt: D(P,T j´, j ) D(P, T k´, k ) T P j
23
Erster Ansatz Naives Verfahren: for all 1 j´ j n do Berechne D(P,T j´, j ) wähle Minimum
24
Trick Betrachte verwandtes Problem: T j i E(i, j) P Für jede Textstelle j und jede Musterstelle i berechne die Editierdistanz des zu P i ähnlichsten, bei j endenden Teilstücks T j´,j von T.
25
Algorithmus Methode: for all 1 j n do Berechne j´, so dass D(P,T j´, j ) minimal ist Für 1 i m und 0 j n sei: Optimale Spur: P i = b a a c a a b c T j´, j = b a c b c a c
26
Rekursionsgleichung: Bemerkung: j´ kann für E i-1, j-1, E i – 1,j und E i, j – 1 ganz verschieden sein. Teilspur einer optimalen Spur ist eine optimale Teilspur.
27
Approximative Zeichenkettensuche Anfangsbedingungen: E 0,0 = E(, ) = 0 E i,0 = E(P j, ) = i aber E 0,j = E(,T j ) = 0 Beobachtung: Die optimale Editiersequenz von P nach T j´, j beginnt nicht mit einer Einfügung von t j´.
28
Abhängigkeitsgraph 0 1 2 3 4 0000 0111 1121 2112 3212 0 0 1 2 3 0000 1111 0122 1112 2212 5432233221 T = a b b d a d c b c P = a d b b c
29
Approximative Zeichenkettensuche Satz Gibt es im Abhängigkeitsgraphen einen Weg von E 0, j´- 1 nach E i, j, so ist T j´, j ein zu P i ähnlichstes, bei j endendes Teilstück von T mit D(P i, T j´,j ) = E i, j
30
Übersicht Speicherplatzsparende Wörterbücher Bit-State Hashing Kollaps-Kompression Subzeichenketten-Erkennung: Dynamische Programmierung Teilwort-Erkennung: Listen und Array Hashing und Tries Unlimited Branching Trees
31
Teilmengen-Wörterbücher Sei D eine Menge von n Teilmengen aus U. Das SUBSET QUERY (CONTAINMENT QUERY) Problem fragt für q ob es ein p in D gibt mit q ist Teilmenge von p (p ist Teilmenge von q). Ein Teilmengen Wörterbuch ist eine abstrakte Datenstruktur die Einfügen erlaubt und Teilmengen- (Supermengen-) Anfragen anbietet
32
Subzeichenketten- vs. Teilzeichenkettenmatching Subzeichenkette: ADEK in Alphabet ABCD….XYZ Teilzeichenkette: STUV in Alphabet ABCD….XYZ
33
Anwendung Teilzeichenkettenmatching
34
Beispiel Subzeichenkettenmatching: Sokoban
35
Generierung größerer Muster
36
Anfragen mit Wildcards Sei ? ein spezieller dont care das jeden Buchstaben im Alphabet ersetzt (wildcard) Gegeben eine Menge D von n Zeichenketten, dann beantwortet eine Datenstruktur für das PARTIAL MATCH Problem für eine Anfrage q (mit wildcards) ob es einen Eintrag q in D gibt, so dass q zu p passt
37
Kreuzworträtsel - Konstruktionsproblem
38
State-of-the-Art !? Combus Crossword Puzzles as a Constraint Problem CP 2008: Anbulagan and Adi Botea (words 45K, UK 220K Einträge, T sek. N expan. Knoten)
39
Datenstruktur? 1. Array und Listen Arrays: Platz O(2^m), m =|U| Zu groß in der Praxis Anfragezeit O(m) Listen: Optimaler Platz O(n) Anfragezeit: O(nm) Zu groß in der Praxis
40
2. Tries (PARTIAL MATCH)
41
3. Hashing (PARTIAL MATCH)
42
4. Unlimited Branching Trees (CONTAINMENT QUERY)
43
Einfügen UBT
44
Suche UBT
45
Beispiel: Hex
46
Virtuelle Verbindungen
47
Zielmusterdatenbank
48
UBT-Adaption
49
Symmetrien
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.