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