String Matching Algorithmen

Werbung
7. Aufgabenblatt vom 30.11.2009
WS 2009/2010
String Matching Algorithmen
Frank Hoffmann, Sven Scholz
Abgabe 09.12.2009 vor der Vorlesung
Zur Vorbereitung auf das Kapitel Approximatives Matching:
Wiederholung zum Thema Dynamisches Programmieren
Aufgabe 1 Längste aufsteigende Teilfolge
5 Punkte
Gegeben sei eine Folge a = (a1 , . . . , an ) von n natürlichen Zahlen. Gesucht ist lis(a),
die Länge der längsten aufsteigenden Teilfolge von a. Geben Sie ein Verfahren an,
das lis(a) in O(n2 ) Zeit berechnet und begründen Sie dessen Korrektheit.
Hinweis: Berechnen Sie zunächst für 1 ≤ k ≤ n die Länge der längsten aufsteigenden
Teilfolge von ak = (a1 , . . . , ak ), deren letztes Element gerade ak ist.
Aufgabe 2 Allgemeines Münzwechseln
5 Punkte
Gegeben seinen N ganze Zahlen 1 ≤ k1 < k2 < . . . < kN .
Überlegen Sie, auf wieviele Arten man n in der Form n = a1 k1 + a2 k2 + . . . + aN kN
mit ganzahligen Koeffizienten ai ≥ 0 darstellen kann. Geben Sie ein Verfahren an,
das die Anzahl dieser Darstellungen in O(N n) Zeit berechnet und begründen Sie
dessen Korrektheit.
Aufgabe 3 Triangulierung konvexer Polygone
5 Punkte
Ein Polygon P ist eine stückweise lineare geschlossene Kurve in der Ebene, beschrieben durch eine Folge von Strecken p1 − p2 − p3 − . . . − pn − p1 . Wir nehmen an, dass
P einfach ist, das heißt, durch die Kurve wird die Ebene in genau zwei Zusammenhangskomponenten zerlegt. Ein einfaches P heisst konvex, wenn das eingeschlossene
endliche Gebiet konvex ist. In einem solchen Polygon definieren je zwei nichtbenachbenarte Ecken pi , pj eine Diagonale, die das Polygon in zwei konvexe Polygone
unterteilt. Eine Triangulierung von P ist eine durch n − 3 Diagonalen definierte Unterteilung in n − 2 disjunkte Dreiecke.
Sei P ein konvexes Polygon auf n Ecken und w eine nichtnegative Bewertungsfunktion auf durch Eckentripeln definierten Dreiecken.
(a) Bestimmen Sie mittels dynamischer Programmierung eine bezüglich w minimale
Triangulierung, das heißt, die Summe der Bewertungen der an der Triangulierung beteiligten Dreiecke ist minimal unter allen möglichen Triangulierungen.
Was ist die Laufzeit/Speicherbedarf Ihres Verfahrens? Achten Sie auf ausreichende Kommentierung und Korrektheitsbeweis.
(b) Bestimmen Sie als Beispiel die optimale Triangulierung für ein reguläres Achteck (d.h. gleiche Innenwinkel) mit Seitenlänge 1. Das Gewicht eines Dreiecks
sei dabei definiert als die Summe seiner Seitenlängen.
BW
Aufgabe 4 Längster Weg
5 Punkte
Gegeben sei ein gerichteter, kreisfreier Graph G = (V, E) mit einer Gewichtsfunktion
w : E 7→ R. Geben Sie einen Algorithmus an, der in O(|E| + |V |) Zeit einen längsten
Weg in G (bezüglich w) berechnet.
Hinweis:. Benutzen Sie, dass sich G in O(|E| + |V |) Zeit topologisch sortieren lässt.
Aufgabe 5 Bitonisches Euklidisches TSP
5 Punkte
Das Euklidische TSP ist das Problem, für eine Menge von n Punkten in der Ebene die kürzeste (bezüglich euklidischer Länge) geschlossene Tour zu finden, die alle
n Punkte verbindet – also das (nicht notwendigerweise einfache) Polygon kleinster
Länge, welches die n Punkte als Eckpunkte hat. Im allgemeinen ist dieses Problem
NP-schwer. Die kürzeste Tour, die am linken Punkt beginnt, x-monoton bis zum
rechten Punkt verläuft und dann wieder x-monoton zum linken Punkt zurückkehrt
(eine bitonische Tour) kann jedoch in polynomieller Zeit berechnet werden. Beschreiben Sie einen Algorithmus, der die kürzeste bitonische Tour in Zeit O(n2 ) berechnet.
Lösen Sie drei Aufgaben Ihrer Wahl.
Herunterladen