Datenstrukturen für Fortgeschrittene (WS10/11)

Werbung
Datenstrukturen für Fortgeschrittene (WS10/11)
Übungsblatt 6
Prof. A. Schulz
Guido Mörs
Abgabe: 23.11.2010 14:00 Uhr
Briefkasten 96
Alle Antworten müssen begründet werden. Bei Nutzung von Quellen sind diese
anzugeben (auch aus dem Internet). Wenn Aufgaben in Gruppenarbeit gelöst
wurden, geben sie alle Mitarbeiter an.
Aufgabe 16
Dynamisierung
(a) Entwerfen sie eine Operation für das schwache Löschen von Intervallen in Intervallbäumen. Das schwache Löschen soll in O(log n) Zeit durchführbar sein. Wenn
es notwendig sein sollte, können sie zusätzliche Informationen im Intervallbaum speichern. Dies darf aber keinen Einfluss auf die (asymptotische) Schranke für die Vorverarbeitungszeit bzw. Anfragezeit haben.
(b) Welche der folgenden Suchprobleme sind teilbar :
(b1) Finde das Minimum einer Menge von ganzen Zahlen.
(b2) Finde die 2 kleinsten Einträge in einem Array von ganzen Zahlen.
(b3) Finde den zweitkleinsten Eintrag in einem Array von ganzen Zahlen.
(b4) Finde ein Element in einer Menge von ganzen Zahlen, das weder das Maximum
noch das Minimum ist.
(b5) Finde zu einer Zahl in einer Menge von ganzen Zahlen das nächst-größere Element.
Aufgabe 17
Suchen im Suffixbaum
Sei T ein Text zu welchem ein Suffixbaum konstruiert wurde. Zeigen sie, dass folgende
Anfragen effizient beantwortet werden können. Dazu kann der Suffixbaum auch erweitert
werden; zum Beispiel kann man zusätzliche Informationen in den inneren Knoten speichern.
Allerdings sollten diese Erweiterungen in O(n) Zeit durchzuführen sein.
(a) Finde das erste Vorkommen eines Musters P in T in O(|P |).
(b) Finde die Anzahl der Vorkommen eines Musters P in T in O(|P |).
Zeigen sie, dass man folgende Probleme über Suffixbäume lösen kann. Der Suffixbaum zum
Text wurde aber noch nicht konstruiert.
(c) Finde das längste sich wiederholende Teilwort in einem Text T in O(|T |).
(d) Finde das längste Palindrom in einem Text T in O(|T |).
Übungsblatt 6
Aufgabe 18
2
Berechnung des LCP Arrays mit dem DC3 Algorithmus
Erweitern sie den DC3 Algorithmus der Art, dass mit ihm neben dem Suffixarray auch
nebenbei das LCP Array berechnet werden kann. Das Berechnen des LCP Arrays geschieht
am besten innerhalb des rekursiven Aufrufs nach dem Mischen der Suffixarrays von T̃ and
T3 .
Datenstrukturen für Fortgeschrittene (WS10/11)
Übungsblatt 6
Herunterladen