Universität Leipzig Institut für Informatik Bioinformatik/IZBI Algorithmen und Datenstrukturen I WS 2016/2017 – Extrablatt Ausgabe am 23.01.2017 Prof. P.F. Stadler Abgabe am – Seite 1/4 Dieses Extra-Übungsblatts ist nicht relevant für die Zulassung zur Klausur! Die Lösungen der Aufgaben können in den Übungen diskutiert werden, werden aber weder eingesammelt noch korrigiert. 25 Komplexität Binärer Bäume In dieser Aufgabe soll nur die Struktur von Binärbäumen betrachtet werden, d.h. die Schlüsselwerte an Knoten werden ignoriert (bzw. alle als identisch betrachtet). Die Anzahl strukturell verschiedener Binärbäume der Höhe h lässt sich für h > 0 rekursiv berechnen: "h−2 # X f (h) = 2 f (i) · f (h − 1) + f (h − 1) · f (h − 1), (1) i=0 wobei für Höhe 0 gilt: f (0) = 1. (Beachten Sie: h=0 entspricht dem Fall “leerer Baum”.) a) Geben Sie für h ∈ {0, 1, 2, 3} jeweils alle strukturell verschiedenen Binärbäume der Höhe h und deren Anzahl an. (4 Punkte) b) Berechnen Sie die Anzahl der Binärbäume der Höhe h = 4 nach der Formel aus Gleichung (1). Stellen Sie die Berechung nachvollziehbar dar. (2 Punkte) c) Beweisen Sie (mittels vollständiger Induktion über h), dass die Rekursionsformel (1) tatsächlich (wie oben behauptet) die Anzahl strukturell verschiedener Binärbäume der Höhe h liefert. (4 Punkte) Anmerkung zu (c): Hier hilft die Beobachtung, dass die Formel (1) einer systematischen Konstruktion der Bäume mit Höhe h aus niedrigeren Bäumen entspricht. Universität Leipzig Institut für Informatik Bioinformatik/IZBI Prof. P.F. Stadler Algorithmen und Datenstrukturen I WS 2016/2017 – Extrablatt Ausgabe am 23.01.2017 Abgabe am – Seite 2/4 Lösung: a) f (0) = 1 0.5 Punkte. f (1) = 1 0.5 Punkte. f (2) = 3 0.5 Punkte und 0.5 Punkte für Begründung (alle drei Fälle aufmalen). f (3) = 21 2 Punkte für aufmalen aller Bäume. Je 0.5 Punkte Abzug für kleinere Fehler (d.h. im Fall von 3, z.B. ”ein Baum vergessen”, “doppelt” etc.). b) f (4) = 2 ∗ (f (0) ∗ f (3) + f (1) ∗ f (3) + f (2) ∗ f (3)) + f (3) ∗ f (3) = 2 ∗ (21 + 21 + 3 ∗ 21) + 212 = 210 + 441 = 651. 1 Punkt für Ergebnis, +1 Punkt bei nachvollziehbarer Angabe des Rechenwegs. c) • Induktionshypothese: Die Anzahl der verschiedenen Binärbäume der Höhe h0 ist f (h0 ). (0 < h0 < h). (Die Angabe der IH kann ohne Punktabzug entfallen, wenn diese durch restlichen Beweis klar erkennbar korrekt angenommen wird.) • Induktionsstart h=0: f(0)=1, denn es gibt genau einen Baum der Höhe 0, nämlich den leeren. • Induktionsschritt h0 < h → h: Ein Baum der Höhe h habe Teilbäume der Höhen hl und hr . 1) nehme zunächst an hl < hr . Dann muss hr = h − 1 sein! Nach I.H. gibt es dann f (hl )∗f (h−1) verschiedene solche Binärbäume, da jeder linke mit jedem rechten Teilbaum kombiniert werden kann, d.h. die Anzahlen multiplizieren sich. Zu jedem Baum gibt es einen dazu symmetrischen bei dem linker und rechter Tocherbaum vertauscht sind. Dies erklärt den ersten Term Ph−2 2 · i=0 f (i) · f (h − 1), da sich die Anzahlen für alle möglichen 0 ≤ hl < h − 1 addieren. 2) Im Fall, hl = hr gilt hl = hr = h − 1 (!) Wieder kann man jeden linken mit jedem rechten Teilbaum kombinieren, d.h. die Anzahlen multiplizieren sich. Dann gibt es (ebenfalls nach I.H.) f (h − 1) ∗ f (h − 1) viele verschiedene Binärbäume. Bewertung von (c): Noch 2 Punkte falls Induktionsbeweisstruktur fehlt oder wesentlich unvollständig ist (z.B. weder expliziter noch impliziter Bezug auf Induktionshypothese), aber die Begründung der Rekursionsgleichung ansonsten korrekt ist. Universität Leipzig Institut für Informatik Bioinformatik/IZBI Prof. P.F. Stadler Algorithmen und Datenstrukturen I WS 2016/2017 – Extrablatt Ausgabe am 23.01.2017 Abgabe am – Seite 3/4 26 Suffixbäume Gegeben sei der Text T =xyxyxzyx. a) Konstruieren Sie den Suffixbaum für T nach dem Algorithmus aus der Vorlesung “Suffixbäume”, Folie 8. Geben Sie den finalen Suffixbaum an (vgl. Folie 9). b) Suchen Sie das Muster xyx gemäß Folie 13. Markieren Sie in ihrem Baum alle Blätter, die den gefundenen Match-Positionen entsprechen. c) Zeichnen Sie die Suffixlinks xzyx$→zyx$ und zyx$→yx$ ein. d) Geben Sie das Suffixarray für T an (1-basierte Indizierung von Text und Array). Universität Leipzig Institut für Informatik Bioinformatik/IZBI Algorithmen und Datenstrukturen I WS 2016/2017 – Extrablatt Ausgabe am 23.01.2017 Prof. P.F. Stadler Seite 4/4 Abgabe am – Lösung: $ x yx zyx$ d) Indizierte Suffixes: k 1 2 3 4 5 6 7 8 9 A ist das Suffix-array. $ yx zyx$ yxzyx$ zyx$ b b $ yxzyx$ zyx$ Sufk xyxyxzyx$ yxyxzyx$ xyxzyx$ yxzyx$ xzyx$ zyx$ yx$ x$ $ Sortieren ⇒ A: i 1 2 3 4 5 6 7 8 9 A[i] 9 8 1 3 5 7 2 4 6 SufA[i] $ x$ xyxyxzyx$ xyxzyx$ xzyx$ yx$ yxyxzyx$ yxzyx$ zyx$