Effiziente Algorithmen (SS11)
Effiziente Algorithmen (SS11)
Effiziente Algorithmen (SS11)
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
<strong>Effiziente</strong> <strong>Algorithmen</strong> (<strong>SS11</strong>)<br />
Übungsblatt 4<br />
Prof. A. Schulz Abgabe: 13.05.2011 14:00 Uhr<br />
Thomas Kamps Briefkasten 96<br />
Alle Antworten müssen begründet werden, bzw. der Lösungsweg muss nachvollziehbar<br />
sein. Quellen sind anzugeben (auch aus dem Internet). Wenn Aufgaben<br />
in Gruppenarbeit gelöst wurden, geben Sie alle Mitarbeiter an. Alle Laufzeiten<br />
müssen bewiesen werden. Finden Sie <strong>Algorithmen</strong> mit schlechterer Laufzeit als<br />
die geforderte, kann es dennoch einen Teil der Punkte geben.<br />
Aufgabe 12 Präfixfunktion (4 Punkte)<br />
Wir betrachten ein unendliches Wort w, welches durch eine Funktion ω : N → {0, 1} beschrieben<br />
wird. Das heißt, w[i] := ω(i).<br />
(a) Sei w1 nach folgendem Schema definiert: w ist die Konkatenation von Wörtern u1, u2, . . . ,<br />
wobei<br />
<br />
1<br />
ui :=<br />
i 0<br />
wenn i ungerade,<br />
i wenn i gerade.<br />
Demnach beginnt w1 mit<br />
100111000011111000000111111100000000 . . .<br />
Bestimmen Sie die Präfixfunktion von w1 durch Angabe einer Funktion π : N → N.<br />
(b) Sei w2 definiert als die Konkatenation von 01-Wörtern. Der Anfang von w2 lautet also<br />
010101010101010101010101010101010101 . . .<br />
Bestimmen Sie die iterierte Präfixfunktion von w2 durch Angabe einer Funktion<br />
π ∗ : N → P(N) 1 .<br />
Aufgabe 13 Knuth-Morris-Pratt für Bäume(6 Punkte)<br />
Wir betrachten die folgende Modifikation des String Matching problems. Sei T ein Baum<br />
mit ausgezeichneter Wurzel und n Knoten. Wir orientieren die Kanten in T so, dass jede<br />
Kante auf den Knoten zeigt, der weiter von der Wurzel entfernt ist. Die Knoten aus T sind<br />
mit Zeichen aus Σ beschriftet. Wir sagen, dass ein Treffer am Knoten v vorliegt, wenn es<br />
einen gerichteten Pfad von v aus startend gibt, dessen Beschriftung (Zeichen des Pfades der<br />
Reihenfolge nach gelesen) dem Suchmusters P ∈ Σ ∗ entspricht.<br />
Wandeln Sie den Algorithmus von Knuth, Morris und Pratt so um, dass alle Treffer in T in<br />
O(n + m) Zeit gefunden werden, wobei m = |P |.<br />
1 P(X) bezeichnet die Potenzmenge von X, also die Menge aller Teilmengen von X
Übungsblatt 4 2<br />
o<br />
n<br />
i<br />
l<br />
Ein Baum T mit einem Treffer für P = ear.<br />
Aufgabe 14 Anzahl der Alignment Lösungen (6 Punkte)<br />
In der Vorlesung haben wir gelernt, wie man mit Dynamischer Programmierung das (globale)<br />
(Alignment) zweier Wörter X, Y in O(|X| · |Y |) Zeit bestimmt. Im Allgemeinen ist das<br />
” Alignment“nicht eindeutig. Modifizieren Sie den Algorithmus der Art, dass auch die Anzahl<br />
aller optimaler Alignments“ausgegeben wird. Achtung, wir betrachten folgende zwei<br />
”<br />
Ausrichtungen als unterschiedlich:<br />
w<br />
xa-y x-ay<br />
x-by xb-y<br />
Die Laufzeit soll weiterhin O(|X| · |Y |) Zeit betragen.<br />
<strong>Effiziente</strong> <strong>Algorithmen</strong> (<strong>SS11</strong>) Übungsblatt 4<br />
e<br />
r<br />
a<br />
t