15.07.2013 Aufrufe

Effiziente Algorithmen (SS11)

Effiziente Algorithmen (SS11)

Effiziente Algorithmen (SS11)

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!