Lösung Extra Aufgabenblatt - bioinf leipzig

Werbung
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$
Herunterladen