1 / 49

Algorithm Engineering „ Teilmengen-Suche “

Algorithm Engineering „ Teilmengen-Suche “. Stefan Edelkamp. Motivation. Speicherplatzsparende Wörterbücher Programm/Modellprüfung (Model Checking ) Subzeichenketten-Erkennung : Editierdistanz-Problem, Approximative Zeichenkettensuche MSA (Multiple Sequence Alignment ) Problem

Download Presentation

Algorithm Engineering „ Teilmengen-Suche “

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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 SequenceAlignment) Problem • Teilwort-Erkennung: • Kreuzwort-Problem: EineAnfragewie B*T**R imKreuzworträtselproblemit 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 • UnlimitedBranchingTrees

  4. Übersicht • Speicherplatzsparende Wörterbücher • Bit-State Hashing • Kollaps-Kompression • Subzeichenketten-Erkennung: • Dynamische Programmierung • Teilwort-Erkennung: • Listen und Array • Hashing und Tries • UnlimitedBranchingTrees

  5. modeling language specification Abstraction state rep. transition system search Model Checking • Gegeben • EineModelleines Systems. • Die SpezifikationeinerEigenschaft • ProblemErfüllt das System die Eigenschaft?

  6. Beispiel: Prüfeneines C++ Programms Model checker igcc Compiler Virtual Machine char globalChar; intglobalBlocksize = 7; int main(){ allocateBlock(blocksize); } void allocateBlock(int size){ void *memBlock; memBlock = (void *) malloc(size); } Objectcode

  7. Interpretieren des Objectcodes VirtuelleMaschine Register char globalChar; intglobalBlocksize = 7; int main(){ allocateBlock(blocksize); } void allocateBlock(int size){ void *memBlock; memBlock = (void *) malloc(size); } Objectcode Text Section BSS Section Data Section Stack Memory Pool

  8. Zust. 1 Startzust. Zust. 2 Register Register Register TextSection BSSSection BSSSection BSSSection DataSection DataSection Stack Stack Stack MemoryPool MemoryPool Generierung von Zuständen VirtuelleMaschine Register Text Section BSS Section Data Section Stack Memory Pool

  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 W‘keit 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 • UnlimitedBranchingTrees

  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. B = a b a c Spurgraph der Editier-operationen 0 1 2 3 4 A = 1 1 1 2 3 b 2 1 2 2 3 a 3 2 2 2 3 a 4 3 3 3 2 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 = p1p2 ... pm ( Muster) und T = t1t2 ... tn (Text) Gesucht: Ein Intervall [j´, j], 1  j´  j  n, so dass das Teilwort Tj´, j = tj´ ... tj 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,Tj´, j)  D(P, Tk´, k) j T P

  23. Erster Ansatz Naives Verfahren: for all 1  j´  j  n do Berechne D(P,Tj´, j) wähle Minimum

  24. Trick j T Betrachte verwandtes Problem: i E(i, j) Für jede Textstelle j und jede Musterstelle i berechne die Editierdistanz des zu Piähnlichsten, bei j endenden Teilstücks Tj´,j von T. P

  25. Algorithmus Methode: for all 1  j  n do Berechne j´, so dass D(P,Tj´, j) minimal ist Für 1  i  m und 0  j  n sei: Optimale Spur: Pi = b a a c a a b c Tj´, j = b a c b c a c

  26. Rekursionsgleichung: Bemerkung: j´ kann für Ei-1, j-1, Ei – 1,j und Ei, j – 1 ganz verschieden sein. Teilspur einer optimalen Spur ist eine optimale Teilspur.

  27. Approximative Zeichenkettensuche Anfangsbedingungen: E0,0 = E(, ) = 0 Ei,0 = E(Pj ,) = i aber E0,j = E( ,Tj) = 0 Beobachtung: Die optimale Editiersequenz von P nach Tj´, j beginnt nicht mit einer Einfügung vontj´ .

  28. Abhängigkeitsgraph T = a b b d a d c b c P 0 0 0 0 0 0 0 0 0 0 = 1 0 1 1 1 0 1 1 1 1 a d 2 1 1 2 1 1 0 1 2 2 b 3 2 1 1 2 2 1 1 1 2 b 4 3 2 1 2 3 2 2 1 2 c 5 4 3 2 2 3 3 2 2 1

  29. Approximative Zeichenkettensuche Satz Gibt es im Abhängigkeitsgraphen einen Weg von E0, j´- 1 nach Ei, j , so ist Tj´, j ein zu Pi ähnlichstes, bei j endendes Teilstück von T mit D(Pi, Tj´,j) = Ei, j

  30. Übersicht • Speicherplatzsparende Wörterbücher • Bit-State Hashing • Kollaps-Kompression • Subzeichenketten-Erkennung: • Dynamische Programmierung • Teilwort-Erkennung: • Listen und Array • Hashing und Tries • UnlimitedBranchingTrees

  31. Teilmengen-Wörterbücher • Sei D eineMenge von n Teilmengenaus U. • Das SUBSET QUERY (CONTAINMENT QUERY) Problem fragtfür q ob esein p in D gibtmit q istTeilmenge von p (p istTeilmenge von q). • EinTeilmengenWörterbuchisteineabstrakteDatenstruktur die Einfügenerlaubt und Teilmengen- (Supermengen-) Anfragenanbietet

  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 ? einspezieller don’t care das jedenBuchstabenim Alphabet ersetzt (wildcard) • GegebeneineMenge D von n Zeichenketten, dannbeantworteteineDatenstrukturfür das PARTIAL MATCH Problem füreineAnfrage q (mit wildcards) ob eseinenEintrag 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: Anbulaganand 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(PARTIALMATCH)

  41. 3. Hashing (PARTIAL MATCH)

  42. 4. „Unlimited“ BranchingTrees (CONTAINMENT QUERY)

  43. Einfügen UBT

  44. Suche UBT

  45. Beispiel: Hex

  46. Virtuelle Verbindungen

  47. Zielmusterdatenbank

  48. UBT-Adaption

  49. Symmetrien

More Related