Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Kap. 4.1 Datenstruktur und Eigenschaften

Ähnliche Präsentationen


Präsentation zum Thema: "Kap. 4.1 Datenstruktur und Eigenschaften"—  Präsentation transkript:

1 Kap. 4.1 Datenstruktur und Eigenschaften
Kap. 4 Positionsbäume Kap Datenstruktur und Eigenschaften Zweck:z.B. Textverarbeitung., genetische Information (Genom 109B) x = x1x2 ... xn  X*; xi  X (X ist Alphabet) Leerzeichen;  leere Zeichenreihe n sehr groß, z.B. 107, wie groß für großen Brockhaus? y = y1, ..., ym Def.: y kommt in x an Stelle i vor, wenn xi xi xi+m-1 = y

2 (P1) Finde alle Vorkommen von y in x,
z.B. für Buchindex ersetze überall INHALT durch VOLUMEN 1. Verwende y, um Textstellen zu identifizieren 2. Wird Stelle durch u eindeutig identifiziert? „Positionsidentifikator“ Def.: u heißt Positionsidentifikator für Pos. i in x, wenn u kürzeste, eindeutige Teilzeichenreihe von x beginnend in Pos. i ist, d.h. x = yuz  x = y`uz `  y = y` und u ist kürzeste Teilzeichenreihe mit dieser Eigenschaft. Hinw.: |y| = i-1, z = z` Problem: u existiert nicht immer, z.B. bbb, Ident. für Pos.2?

3 Lemma: Sei $ Sonderzeichen, d.h. $  X,
dann hat jede Position in x$ einen Positions-Identifikator (Umkehrung?) Bew.: In x1x2 ... xu$ kommt xi ... xu$ genau einmal vor, jetzt kürze xi ... xu$ sukzessive von hinten Beispiel: abab $ p(1) = aba; p(2) = ba; p(3) = ab$ p(4) = b $; p(5) = $ Def.: X-Baum: orientierter oder geordneter Baum mit Kantenmarken (Selektoren) aus X

4 Def.: Positionsbaum T für
x$ = x1x2 ... xu $ mit xi  X ist ein X  {$}-Baum mit: 1. T hat u + 1 Blätter markiert mit 1, 2, ..., u + 1 für Positionen von x$ 2. Markenfolge längs Pfad von Wurzel zu Blatt i ist Pos.Id. p(i) für i Problem: Invarianz von Pos.Ids., z.B. (Kap., Unterkap., Absatz, Wort) Lemma: x$ hat eindeutigen Positions-Baum Bew.: Eindeutigkeit der Pos.Ids. in x$

5 Beispiel: Für abab$ 1 2 3 4 5 a b $

6 Kap. 4.2 Konstruktions-Algorithmen
Lemma: Falls x  , dann hat jedes Blatt von x $ mindestens einen Bruder Bew.: d.h. p(i) = ... ab ist kürzeste identifizierende Teilzeichenreihe für Pos. i. Wenn keinen Bruder hätte, könnte man p(i) kürzen, siehe auch Beispiel für abab$ i b a i

7 4.2.1 Naive Konstruktion D A T E N S T R U K T U R E N $
1 2 3 4 . Hinw.: i.e. Algorithmus (n2) Bibel  100 MB = 108 Bytes Beobachtung: kurze Pos. Identifikatoren

8 4.2.2 Alg. für Rechts-links Konstruktion
von Pos. Baum Ti (xi xi xn$) konstruiere Ti-1 (xi-1 xi ... xn$) d.h. in Ti folge Pfad mit Marken: xi-1 xi ... bis Fall a: Blatt j erreicht wird, d.h. p(j) kommt auch an Stelle i-1 vor  p(j), p(i-1) verlängern j

9 Fall b: Zwischenknoten z erreicht wird, von dem aus p(i-1) nicht
weiterführt z . . . Beispiel: T (abba$) 12345 T5: T4: $

10 Ordnung nach Kantenmarken für schnellen Selektor-Zugriff!
Aufwand: mit Kostenamortisierung Nachteil: Konstruktion von T(x $) nach voller Eingabe von x. T für umgekehrten Text? x = x1 x2 ... xn x$ x = xn xn x x$ xi ... x2x1$  p`(i) Textstellen zur Identifizierung rückwärts eingeben

11 „on-line“ Verfahren, Konstruktion von T(x) in Realzeit mitlaufend.
Links-Rechts Konstr. „on-line“ Verfahren, Konstruktion von T(x) in Realzeit mitlaufend. Triviale Idee: Übergang von T(x1 ... xi$)  T (x1 ... xi xi+1$) Änderungen in T an vielen Stellen Def.: Partieller Pos. Baum PJ(x1...xi) mit J  [1:i] enthält für k  J genau kürzeste Zeichenreihe ab k: pJ(k), die Position k innerhalb von J identifiziert, (d.h. pJ(k) kommt an keiner anderen Stelle m  J vor. Anm.: PJ(x) existiert nicht immer

12 Übergang: P[1:3](x) zu P[1:4](x)
Beispiel: x = abbab P{1}(x) =  P{1,2}(x) = a b 1 2 P{2,3}(x) = P[1:3](x) =  P{1,4}(x) 3 Übergang: P[1:3](x) zu P[1:4](x) x = abbab P[1:4](x) existiert nicht P[1:4](xa) 1 2 3 a b P[1 : 5](abbaba) P[1 : 5](abbaba$) Jede Position hat Identifikator

13 Fortschreibung von P[1:4] (abbaba) zu P[1:5] (abbaba$)
2 3 1 4 Lemma: Für n = |x| gilt: P[1: n+1](x$) = T(x$) Bew.: nach Konstruktion, es werden genau die Pos. Identifikatoren eingefügt

14 Monotonie Lemma für Pos. Identifikatioren:
Sei e(i) die Pos., bei der p(i) endet, dann gilt: i < j  e(i)  e(j) Bew.: Trivial, falls i = e(i), sonst Bew. durch Widerspruch: Sei i < j und e(i) > e(j) p(i)  x i j e(j) e(i)  p(j) p(i) = xi xi xe(i) d.h. xi ... xe(i) kommt nochmals vor d.h. p(j) kommt auch nochmals vor, ist nicht Pos.Id.

15 Graphische Deutung: ... xi xi+1 ... xk ... deren Pos.Ids.
hier enden Intervall von Positionen z.B. a b a $ a b b

16 d.h. bei links-rechts Aufbau von T(x)
kann für i < j p(j) frühestens mit p(i) entstehen. Grundidee: für links – rechts Konstruktion des Positions-Baums: Für x1x2 ... xi konstruiere partiellen Pos.B. für alle Positionen mit Pos.Ids. einschl der in i endenden x1x xk xk ... xi d.h. P[1:k-1]

17 xk ... xi ist Anfang von p(k),
entspricht Pfad durch P[1:k-1] (x1 ... xi) Führe Marke in P[1:k-1] (x1 ... xi) k xk xi k Fortschreibung von P[1:k-1] (x1 ... xi) bei Eingabe von xi+1:

18 Fall 1: neben internem Knoten
1.1 verschiebe längs vorhandener Kante xi+1 weiter nach unten wird über neue Kante xi+1 zu Blatt , p(k) fertig. Führe ein, iteriere Fall 2: steht neben Blatt l: verlängere p(l) um 1 Zeichen y, neues Blatt k k k k k+1 k l l xi+1 y = xi+1 : l l iteriere für 2.2 y  xi+1 : xi+1 y k+1 l k

19 Eintrag von Blatt , schrittweiser Aufbau von p(k), gesamt |p(k)|
1.1 1.2 k k 2.1 2.2 k l k l Kosten: Eintrag von Blatt , schrittweiser Aufbau von p(k), gesamt |p(k)| für ganz T(x $): k | x | + 1 c | p ( i ) | å i = 1

20 Für sprachliche Texte typisch:
|p(i)| ~ log |x|  Gesamtkosten (|x|log|x|) wie bei rechts - links Konstruktion! Praktische Variante: partielle Pos.B. für Positionen entsprechend Wortanfängen, nach , CR, Seitenwechsel, etc. oder entsprechend Teilsatzanfängen (z.B. Lexikon für Zitate) nach. ; ! ? : etc.

21 4.2.4 Korrektur von Texten und zugehörigen Positions-Bäumen
Hauptproblem: Invarianz der Positionen, verwende Pos. #, die gegenüber typischen Änderungen weitgehend invariant sind, 4.20 für Folie 20 in Kap. 4 Korrekturoperationen: streichen: x = u v w z u, z : invariant; v : streichen; w : variant Ansatz: lösche vw; füge w mit neuen Pos. ein

22 2. einfügen: x = u w z v einfügen zu x` = u v w z u v w z wie vorher u w z wie vorher Ansatz: lösche w; füge v w mit neuer Position ein 3. ersetzen: v durch v`in x = u v w z zu x`= u v`w z Ansatz: lösche v w; füge v`w mit neuen Positionen ein Grundidee für Alg.: Schritt 1: bestimme y = v w in 1. und 3. y = w in 2. Schritt 2: delete (y, x) in x = u y z durch Übergang von T(x) zu partiellem Pos.Baum ohne diejenigen Positionen j, deren p(j) mit y überlappen.

23 Schritt 3: Sei y`, w, v w, v`w entsprechend 1., 2., 3.
Ergänze partiellen Pos.Baum aus Schritt 2 zu T(x`); x`= u y`z zu Schritt 2: delete y in u y z, welche p(j) überlappen y? u1u2 ... uk-1 yk ... ylz  Menge der Positionen j, deren p(j) zu entfernen sind

24 Def.: A(j) = {i: e(i) = j}, Menge von Anfangspositionen def
Anm.: nach Monotonie-Lemma ist A(j) ein Intervall y k l x p(j) j e(j) 1. e(j) < k keine Überlappung 2. j > l keine Überlappung (1.  2.) =  = e(j)  k  j  l Überlappung ~ A(k,l) = {j : j  l  e(j)  k} def

25 Überlegung: A(k,l) ist Intervall von Positionen:
~ Überlegung: A(k,l) ist Intervall von Positionen: min(j) : l e(j)  k Def.: T(x$)\ J = P[1:|x|+1]\J (x$) def Lemma: Sei x = u y z; u`= u y`z y k l y` m ~ T(x$)\A(k,l) = T(x`$)\A(k,m)

26 Bew.: Nach Konstruktion
Korrektur Alg.: ersetze y durch y` T(x$) sei vorhanden 1. Übergang von T(x$)  T(x$)\A(k,l) 2. ersetze Text x = u y z  x`= u y`z 3. Ergänze T(x`$)\A(k,m) zu T(x´$) ~ ~ Korrektur-Kosten: pro Entfernung von p(j) Aufwand  |p(j)|  log|x|, ebenso pro Einfügung  (|A(k,l) + |A(k,m)|) •log|x|

27 4.3 Anwendungen von Pos. Bäumen
für Texte und genetische Information: (P1) Finde alle Vorkommen von y in x y

28 (P3) Finde längste mehrfach vorkommende Teilzeichenreihe:
(P2) Text Korrektur (P3) Finde längste mehrfach vorkommende Teilzeichenreihe: Führe Pegel für tiefste Blätter bei Baumaufbau Beispiel: Haben Programme X,  größere gemeinsame Teile? (P4) Interne Mustergleichheit: längste Zeichenreihe ab Pos. i, die mehrfach vorkommt? Länge = |p(i)|-1 an Positionen in diesem Unterbaum i (P5) Muster in DNA-Ketten

29 Anwendung Genom Datenbanken
U : Uracil C : Cytosin A : Adenin G : Guanin Basen von Nukleotid-Bausteinen in Messenger-RNS Triplett codiert den Einbau einer von 20 Aminosäuren bei Proteinsynthese, z.B. UGG ~ Tryptophan (= Aminosäure) Einbau 43 Kombinationen = 64 Zeichen im Grundalphabet von Tripletts RNS-Sequenzen von Trippletts ~ Aminosäuren-Sequenzen in Proteinmolekülen (Primärstruktur) Problem: Finde gesuchte RNS-Sequenzen innerhalb von bekannten RNS-Sequenzen typisch 104 bis 105 Tripletts pro Protein

30 Mengengerüst menschliches Genom
ca Gene 1 Gen  Codierung eines Proteins Größe eines Gens: ca Basenpaare, einschließlich unverstandenes „Verpackungsmaterial“  menschl. Genom ca. 2• 109 Basen = 4• 109 Gbit = 500 MB = 1CD Quelle: Mannheimer Forum 90/91, Boehringer Mannheim, darin: H.P. Vosberg: Konstanz und Variabilität im menschlichen Genom, S

31

32

33 Struktur eines Chromosoms
ca. 100 Mill. Zeichen ••• A C G G T A C ...?? ••• 1 Gen Gen Gen ••• CTG GAT CTG TAC GGG ••• ca ••• Leuzin Asparagin Leuzin ••• zugehöriges Eiweiß = Protein Aminosäuren

34 Die Buchstaben: DNS-Basen
A : Adenin C : Cytosin T : Thymin G : Guanin 1 Buchstabe = 2 bit Aminosäuren: Leuzin Asparagin 20 Die Wörter: CTG ~ 6 bit GAT 64 „Universeller genetischer Code“ genetische Sprache  Genom (Wort der Sprache) Deutsch  Faust Zucker & Insulin: Erbgut o.k. Fabrik defekt

35

36 Umfang des menschlichen Erbgutes
23 Chromosomen  Gene (Schätzungen) 1 Chromosom  Gene 1 Gen  Wörter = Buchstaben = Seite Text = Kochrezept 105 Gene • 3 • 103 Buchstaben = 3 • 108 Buchstaben Umfang gesamtes Genmaterial: 1 Mill. Seiten Text = 3 Milliarden Buchstaben = 23 Bände (Chromosomen) je Seiten mit Rezepten 10 x größer ?? als informationstragendes Erbgut?

37 Variationen und Fehler
99.9 % gleich Kopierfehler Zeile fehlt, doppelt Seiten vertauscht Seite fehlt, doppelt Seite zerrissen fehlerhafte Gene haben andere Länge als richtige  Längenvergleich

38 Vererbung: Chromosomen von Vater Chromosomen von Mutter falsches Rezept für Protein, z.B. für Insulin Probleme - wo? - ausschneiden - Längenvergleich Sonde = identifizierender kleiner Text-Ausschnitt ~ Positions.Ident. Enzym = genetische Schere Southern Blot = Längenvergleich

39 Genom-Projekt 3 Milliarden Buchstaben 1 $ pro Buchstabe : A C T G  3 Milliarden $ = 6% des UMTS Erlöses 2005 fertig !!! (war Schätzung 1996) massiver Einsatz von Robotern, Sommer 2000 heute schon: Hefesequenzierung Bakterienstammbaum 2020: individuelles Genoprogramm auf 1 CD

40 Soziale Folgen Erbkrankheiten Erkennung Vermeidung
Auswahl gesunder Embryos Wunschkinder ? Erbkrankheiten Huntington Muskeldystrophie zystische Fibrose Hypercholestrolämie Dickdarmkrebs Brustkrebs Alzheimer Multiple Sklerose Diabetes Schizophrenie Alkoholismus kriminelles Verhalten ...

41 Zukunft: Genogramm - Berufswahl Einstellung durch Arbeitgeber Versicherungen Porsche Fahrer? vorbeugende Medizin (Medikamente ?) Partnerwahl

42 Kap. 4.4 Repräsentation von Positions-Bäumen
1. Geflecht Marke 1 Byte Zeiger 4 Bytes + Pos # 4 Bytes für Blatt a intern  Expansionsfaktor 9 über Text 2. Bitvektoren + Geflecht Bis zu 64 Söhne: i interne b Blätter ... j ... repräsentiert als 128 Bits Info für vorhandene Knoten

43 00 : nicht vorhanden : Blatt : interner Knoten 11 Marke codiert durch Position in Bit Vektor für internen Knoten: Zeiger auf Bit Vektor für alle Söhne für Blatt: Positionsnummer Speicherbedarf: für Knoten mit i internen Söhnen und b Blatt-Söhnen Geflecht Bitvektoren i • 5 + b • b • 4 Bitvektor Zeiger Bitvektoren besser? i • 5+b • 5  20 i + b  4

44 Hypride Repr.: lokal entscheiden, 1 Zusatzbit pro Knoten
Weitere Idee: Pfadkontraktion a a d.h. jetzt haben alle Knoten eine Verzweigung  2 darüber Info in internen Knoten ••• b1 b1...bm ••• bm •••

45 Nochmal Bitvektoren und Geflecht
Vorschlag: Art des Knotens nicht in Bitvektor kodieren, sondern bei Knoten selbst, 1 Bit provorhendenem Knoten, z.B. Zeiger mit 31 Bits anstatt 32 Problem: Zugriff auf Info für vorhandene Knoten! Vorher war Direktzugriff auf Knoteninfo anhand des Bitvektors bestimmbar. Lösung: alle vorhandenen Söhne sequentiell abarbeiten z11, z20, z31, ... Speicherbedarf: Geflecht Bitvektoren i • 5 + b • b • 4 Vektoren besser? i • 5 + b • 9  12 + b • 4 i + b  12 5


Herunterladen ppt "Kap. 4.1 Datenstruktur und Eigenschaften"

Ähnliche Präsentationen


Google-Anzeigen