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.