Beispiel-Prüfungsfragen für Eziente Algorithmen II M. Dietzfelbinger, 1. Februar 2012. Vorbemerkung: Die Liste der Beispielfragen soll bei der Vorbereitung helfen. Sie deniert nicht den Prüfungssto um. (Der Prüfungssto ist, was in der Vorlesung besprochen wurde. Mit weniger Gewicht auch Erweiterungen oder Ergänzungen, die in der Übung behandelt wurden.) Allgemein: Wann immer eine Frage ein Berechnungsproblem erwähnt, muss man unbedingt in der Lage sein, dieses zu spezizieren. Manchmal ist schon diese Aufgabe etwas komplizierter. Beispiel : Der Input ist ein Flussnetzwerk. Dies besteht aus einem gerichteten Gra- G = (V, E), in dem eine Quelle q ∈ V und eine Senke s ∈ V ausgezeichnet sind. (u, v) eine Kapazität c(u, v) ≥ 0. Ein Fluss f in einem Flussnetzwerk ordnet jeder Kante (u, v) einen Fluss f (u, v) zu, wobei zwei Bedingungen phen Zudem hat jede Kante zu erfüllen sind: • 0 ≤ f (u, v) ≤ c(u, v) • an jeder Kante (u, v); Flusserhaltung (Kirchho-Regel) an jedem Knoten. P (q,v)∈E f (q, e), der Fluss aus der Senke hinaus. Die Aufgabe ist, einen Fluss mit maximalem Wert zu nden. Der Wert w(f ) des Flusses f ist Ganz wichtig ist, dass man die Algorithmen beschreiben kann. Dabei ist es normalerweise nicht wesentlich, dass man den Pseudocode (wenn er in der Vorlesung vorkam) hinschreiben kann, sondern dass man weiÿ, was gemacht wird. Dabei ist normalerweise eine korrekte allgemeine Beschreibung der Vorgehensweise besser als die Durchführung an einem Beispiel. Aber auch Beispiele sollte man können. Viele Algorithmen haben Namen. Diese Namen (z. B. Algorithmus von Edmonds und Karp) gehören zur Fachsprache, man muss sie kennen und dem Problem zuordnen können. Ebenso wichtig ist, dass man die asymptotischen Laufzeiten der Algorithmen kennt. (Tipp: Wenn es nicht anders geht, herausschreiben und auswendiglernen.) Für eine gute oder sehr gute Note ist es notwendig, auch Implementierungsdetails und Beweise für Korrektheit bzw. Laufzeitschranken vortragen zu können. Für ein 1 sehr gut wird das Beherrschen des (gesamten) Stoes der Vorlesung verlangt. Soweit Übungen sich direkt auf den Vorlesungssto beziehen (führen Sie Algorithmus XYZ auf der folgenden Eingabe aus, oder wenn Algorithmen angewendet oder verallgemeinert werden), sind sie ebenfalls gut zur Prüfungsvorbereitung geeignet. Es folgen Beispielfragen. 1 Flussalgorithmen 1.1 Was ist ein Flussnetzwerk (FNW)? 1.2 Gegeben ein FNW G = (V, W, q, s, c). Was ist ein (zulässiger) Fluss in G? (Was heiÿt Flusserhaltung bzw. Kirchho-Regel?) 1.3 Wie ist der Wert 1.4 Gegeben FNW w(f ) G eines Flusses und Fluss f f deniert? Was ist ein maximaler Fluss? dazu. Wie ist das Restnetzwerk (RNW) Gf deniert? 1.5 Gegeben ein man p q -s-Weg p im RNW Gf . Was ist die Kapazität von p? Wie kann benutzen, um den Fluss zu vergröÿern? G = (V, W, q, s, c). Was ist ein Schnitt (Q, S) in G? Was ist c(Q, S) eines Schnittes (Q, S)? Was ist ein minimaler Schnitt? 1.6 Gegeben ein FNW die Kapazität G = (V, W, q, s, c), Fluss f , Schnitt (Q, S). Formulieren Sie eine zwischen w(f ) und c(Q, S). Wie funktioniert der Beweis? (Prinzip 1.7 Gegeben FNW Beziehung kennen, nicht vorrechnen.) 1.8 Formulieren Sie das Max-Flow-Min-Cut-Theorem. 1.9 Beweisen Sie das (bzw. einen Schritt im) Max-Flow-Min-Cut-Theorem. ((a) Wenn f maximaler Fluss, dann hat das RNW keinen (b) Wenn das RNW keinen q -s-Weg q -s-Weg. hat, dann gibt es einen Schnitt (Q, S) mit f (w) = c(Q, S). (c) Wenn es einen Schnitt (und c(Q, S) (Q, S) mit f (w) = c(Q, S) gibt, dann ist f maximal minimal).) Jeder dieser Schritte hat seinen ganz eigenen Beweisgedanken. (c) ist fast trivial, (a) und (b) sind interessant. 2 1.10 Formulieren Sie die Ford-Fulkerson-Methode (FF-Methode) zur Berechnung eines maximalen Flusses. Beweisen Sie die Korrektheit für ganzzahlige Kantenkapazitäten (insbesondere: weshalb terminiert der Algorithmus?). 1.11 Formulieren Sie das Ganzzahligkeitsprinzip bei Flüssen (wenn alle c(u, v) ganz- zahlig sind, dann exisitert ein ganzzahliger maximaler Fluss). Wieso folgt dies aus der FF-Methode? 1.12 Schätzen Sie die Laufzeit der FF-Methode ab (mit Begründung). Kennen Sie ein Beispiel, wo der Faktor C (mit C = c({q}, V − {q})) tatsächlich relevant ist? 1.13 Der Algorithmus von Edmonds und Karp ist nur eine spezielle Ausformung der FF-Methode. Wie wird dazu der Algorithmus spezialisiert? Was ist die Laufzeit? O(m2 n) ist O(mn) 1.14 Wie beweist man die Laufzeitschranke rithmus? (Die Anzahl der Iterationen Zeit O(m) für den Edmonds-Karp-Algo wieso? Eine Iteration kostet wieso?) 1.15 Was ist das Niveaunetzwerk (NNW) G0f ? 1.16 Was ist ein Sperruss? Zu welchem Netzwerk gehört er? (Zum NNW!) 1.17 Wieviele Sperrussberechnungen benötigt man bei der Sperruss-Methode höchstens? 1.18 Beweisen Sie, dass es bei der Sperrussmethode nicht mehr als n−1 Iterationen geben kann. 1.19 Beschreiben Sie die Methode Forward-Backward-Propagation zur Sperrussberechnung. Wie viele Propagationsphasen gibt es maximal? (n − 1) Beweis hierfür? 1.20 Geben Sie die Zeitanalyse für eine Propagationsphase an. 1.21 Was ist die Gesamtlaufzeit der Sperrussmethode mit Forward-Backward-Propagation? 1.22 In der Übung wurde eine andere Methode zur Sperrussberechnung angegeben, nämlich der Algorihmus von Dinitz. Was ist hier anders? Welche Laufzeit ergibt sich für die Flussberechnung? 3 2 Matchingalgorithmen 2.1 Was ist ein Matching (in einem allgemeinen Graphen)? 2.2 Was ist ein inklusionsmaximales Matching? Ist es schwer zu nden? (Nein, ein naiver Algorithmus führt zum Ziel.) 2.3 Was ist ein kardinalitätsmaximales Matching (maximum matching)? 2.4 Welches Problem löst der Algorithmus Auktions-Matching? Wie geht er vor? 2.5 Denieren Sie die für die Analyse des Algorithmus Auktions-Matching nötigen Begrie ( δ -zufrieden) und formulieren Sie die Invariante. Zeigen Sie, dass nach Terminierung aus der Invarianten folgt, dass das Ergebnis optimal ist. Wie lange dauert es, bis der Algorithmus terminiert? 2.6 Was sind matchingvergröÿernde Wege in einem Graphen mit Matching hängen sie mit der Frage zusammen, ob M M ? Wie maximal ist? Wie beweist man den Zusammenhang? 2.7 Wie sucht man in bipartiten Graphen (mit Matching M) systematisch nach matchingvergröÿernden Wegen? 2.8 Transformieren Sie eine Instanz für das Problem kardinalitätsmaximales Matching in bipartiten Graphen in eine äquivalente Instanz des Flussproblems. Formulieren Sie die Äquivalenz, zeigen Sie, wie sich die Lösungen ineinander transformieren lassen. 2.9 Was ist ein einfaches (Fluss-)Netzwerk? Was ist mit dem RNW FNW G G0 , wenn das einfach ist? Wieso? 2.10 Wir wenden die Sperrussmethode auf ein einfaches FNW obere Schranke für die Anzahl der Runden an √ (2 n) G an. Geben Sie eine und beweisen Sie sie. (Es gibt zwei Phasen: Wenn der erreichte Fluss noch weiter als √ n vom Optimum entfernt ist, dann kann dass RNW nicht tief sein. [Wieso?] Es kann nur Phasen geben, in denen der schon erreichte Fluss näher als √ n √ n viele am Optimum ist.) 2.11 Wie lange dauert eine Sperrussberechnung in einem einfachen Netzwerk? (Wenn man es richtig macht, und das geht wie?) 4 2.12 Was tut der Algorithmus von Hopcroft-Karp? (Maximale Matchings mit der Sperrussmethode in Flussnetzwerken.) Was ist seine Laufzeit? 2.13 Welches Problem löst man mit der ungarischen Methode? (Gewichtsmaximale perfekte Matchings in vollständigen bipartiten Graphen, oder auch: das Zuordnungsproblem bei Kosten bzw. Nutzen für jede Paarung.) 2.14 Wie vergröÿert man ein Matching M mit Hilfe eines alternierenden Weges? Was ist ein alternierender Baum? Wie sieht ein alternierender Baum aus, wenn es keinen alternierenden Weg von der Wurzel aus gibt? Was kann man über die Kardinalitäten der Levels sagen? 2.15 Was ist der zentrale Trick bei der ungarischen Methode? (Knotenmarkierungen!) 2.16 Was ist der Gleichheitsgraph G` ? 2.17 Formulieren und beweisen Sie den Satz von Kuhn/Munkres. 2.18 Wie wird bei der ungarischen Methode die Knotenmarkierung in einem Schritt geändert? (Gemeint ist die allgemeine Formulierung mit Mengen T S [links] und [rechts].) 2.19 Beschreiben Sie den Algorithmus Ungarische Methode! (Auch an einem Beispielinput.) Was ist die asymptotische Laufzeit? 2.20 Was ist eine Instabilität in einem Matching in einem bipartiten Graphen mit Rangordnungen? Spezizieren Sie das Problem Stabile Paarung. 2.21 Beschreiben Sie den Algorithmus von Gale und Shapley. 2.22 Beweisen Sie, dass der Algorithmus terminiert und eine stabile Paarung liefert. 2.23 Beweisen Sie die Verschärfung der Analyse: Der Algorithmus liefert immer dieselbe Paarung, nämlich {(best(w), w) | w ∈ W }. (Das ist natürlich eine eher schwierige Frage.) 2.24 Wenn wir im Problem Stabile Paarung die Bedingungen ändern (manche Beteiligte akzeptieren mehrere Partner gleichzeitig, es gibt eine ungleiche Anzahl an Männern/Frauen), wie kann man den Algorithmus anpassen oder die Eingabe geeignet transformieren? (Übung Blatt 4 Aufgabe 2.) 5 3 Amortisierte Analyse 3.1 Was ist der Zweck einer amortisierten Analyse eines Algorithmus oder einer Datenstruktur? 3.2 Was ist der Ansatz der direkten oder Aggregationsmethode? Führen Sie sie am Beispiel eines Binärzählers durch. 3.3 Geben Sie die Ad-hoc-Analyse der Aufbauzeit für einen binären Heap an. 3.4 Was ist der Ansatz der Bankkontomethode? Was muss man feststellen bzw. denieren? (Feststellen: die echten Kosten für jede Operation; denieren: die amortisierten Kosten für jede Operation.) Was ist der zentrale (und schwierigste) Schritt? (Die Formulierung einer Induktionsbehauptung über den Kontostand.) Was muss man über den Kontostand beweisen? (Dass er immer nichtnegativ bleibt.) 3.5 Was folgt für die Summe der echten Kosten? (≤ Summe der amortisierten Kosten.) 3.6 Erklären Sie die Bankkontomethode am Beispiel Stack mit multipop-Operation [Binärzähler, Stack mit Verdopplungs- und Halbierungsstrategie]. 3.7 Was ist der Ansatz der Potenzialmethode? Was muss man feststellen bzw. denieren? (Feststellen: die echten Kosten für jede Operation; denieren: das Potenzial für jeden Zustand der Datenstruktur.) Was muss man berechnen/abschätzen? (Die amortisierten Kosten für jede Operation.) Was ist der schwierige Schritt? (Die Denition des Potenzials; aber auch die Abschätzung der amortisierten Kosten kann etwas schwieriger sein.) Was muss man dann beweisen? (Dass das Potenzial am Ende mindestens so groÿ ist wie am Anfang.) 3.8 Was folgt für die Summe der echten Kosten? (≤ Summe der amortisierten Kosten.) 3.9 Erklären Sie die Potenzialmethode am Beispiel Stack mit multipop-Operation [Binärzähler, Stack mit Verdopplungs- und Halbierungsstrategie]. 3.10 Wo haben wir die Potenzialmethode noch verwendet? (Bei der Analyse von Fibonacci-Heaps.) 6 4 Implementierungen von Priority Queues 4.1 Welche Operationen gibt es bei Priority Queues? (Varianten: Grundform mit new, makePQ, insert, min, extractMin. Adressierbare PQ mit den zusätzlichen Operationen decreaseKey und delete. Verschmelzbare PQ mit der zusätzlichen Operation meld/merge/union.) 4.2 Welche Variante benötigt der Algorithmus von Dijkstra? (Die mit decreaseKey.) Wie viele insert-, extractMin-, decreaseKey-Operationen kommen im Algorithmus von Dijkstra höchstens vor? (n, n, m.) 4.3 Beschreiben Sie die Datenstruktur Binomial Queues zur Implementierung von Priority Queues. (Dazu braucht man Binomialbäume mit ihren Grundeigenschaften, die Heapbedingung und die Binärdarstellung von n, der Anzahl der Einträge.) Welche Zeiger benötigt ein Knoten, damit man die notwendigen Navigations- und Umformungsschritte ausführen kann? 4.4 Beschreiben Sie, wie bei Binomialheaps die Operationen new, insert, min, union, extractMin auszuführen sind. Geben Sie die Laufzeiten an und begründen Sie sie. (Interessant besonders: die Operation Union mit Laufzeit O(log n).) 4.5 Beschreiben Sie, wie bei Binomialheaps die Operation decreaseKey auszuführen ist. (gemeint ist die nicht ganz triviale Variante, die keine Knoteninhalte kopiert.) 4.6 Beschreiben Sie den Aufbau eines Fibonacci-Heaps. Geben Sie an, welche Zeiger ein Knoten benötigt. Wann wird eine Markierung gesetzt, wann wieder entfernt? 4.7 Wie ist die Potentialfunktion Φ für Fibonacci-Heaps deniert? 4.8 Beschreiben Sie die Hilfsoperationen join (für zwei Bäume) und cleanup. Was sind jeweils die tatsächlichen Kosten? Die amortisierten Kosten? 4.9 Beschreiben Sie die (einfachen) Operationen new, min, insert, makePQ, extractMin. Jeweils unter Angabe der tatsächlichen Kosten und der amortisierten Kosten. 4.10 Beschreiben Sie die Operation decreaseKey. Was sind die tatsächlichen Kosten, was die amortisierten Kosten? 7 4.11 In der Analyse wird eine Schranke D(n) für den maximalen Grad eines Kno- n Knoten benutzt. Welche Schranke ist das? = 1.4405 log n = O(log n).) Wie beweist man sie? (Man deniert den Rang rank(v) eines Knotens v als die Anzahl der Kinder von v und zeigt, dass ein Knoten mit Rang i mindestens Fi+2 Nachfahren hat. Wie geht dieser Beweis, tens in einem Fibonacci-Heap mit (D(n) in dem der Markierungsmechanismus die Hauptrolle spielt?) 5 Algorithmen für Textsuche 5.1 Was ist das Textsuch-Problem? Wie läuft der naive Algorithmus hierfür ab, welche Rechenzeit benötigt er? 5.2 Denieren Sie: u ist echter Rand von 5.3 Wie ist die MP-Fehlerfunktion w. q 7→ f (q) im Algorithmus von KMP deniert? 5.4 Beschreiben Sie den Algorithmus von Knuth-Morris-Pratt, unter Benutzung der Fehlerfunktion. (Idee und Ablauf erklären, am Beispiel ausführen, oder Pseudocode: was Ihnen am besten liegt.) 5.5 Zeigen Sie, dass der KMP-Algorithmus Laufzeit O(n) hat (wenn f gegeben ist). 5.6 Formulieren Sie die im Korrektheitsbeweis benutzten Invarianten. 5.7 Wie wird die Fehlerfunktion f berechnet? Welche Laufzeit ergibt sich? 5.8 Wie ist die verfeinerte KMP-Fehlerfunktion f f0 deniert? Wie kann man sie aus berechnen? (Blatt 7, Aufgabe 1; auch in den Notizen.) 5.9 Welches Problem löst der Algorithmus von Aho-Corasick? 5.10 Man kann Textsuche mit einer endlichen Menge von Suchmustern auch mit Hilfe von endlichen Automaten durchführen. Wie ist ein solcher Automat zu denieren? (Blatt 7, Aufgabe 3.) Inwiefern unterscheidet sich der im AC-Algorithmus verwendete Graph hiervon? (Die Knotenmengen sind gleich! Der endliche Automat hat für jeden Zustand (im Prinzip) hat für jeden Knoten nur einen Wert.) 8 |Σ| Ausgangskanten, die Fehlerfunktion 5.11 Wie ist der AC-Graph deniert? (Knotenmenge: alle Präxe aller Muster in Kante von Knoten v zu Knoten f (v), wenn . . . Π. Ein Knoten ist als Ausgabekno- ten markiert, wenn . . . ) 5.12 Wie läuft die Suche mit dem Algorithmus von Aho-Corasick ab? (Starten, Navigieren im Graphen, wann wird eine Ausgabe erzeugt?) Formulieren Sie die verwendete Invariante. S[1..n] mit dem AC-Algorithmus nach einem Muster aus Π, ohne Vorverarbeitung? (O(n + k), wobei k die Anzahl der gefundenen Vorkommen von Wörtern aus Π ist.) 5.13 Wie lange dauert die Suche in einem Text 5.14 Wie läuft die Vorverarbeitung im AC-Algorithmus ab, d. h. die Berechnung der Funktionen f und g? Was ist die Laufzeit? 5.15 Was sind die drei zentralen (anderen) Ideen im Algorithmus von Boyer und Moore? (Muster mit Text von rechts nach links vergleichen. Verschieben des Musters in Sprüngen (shifts), mit zwei Regeln: Anhand des Buchstabens, der zum letzten Mismatch geführt hat (bad character rule); Anhand des Suxes im Muster, das verglichen wurde, eventuell inklusive des ersten MismatchBuchstabens: good-sux-Regel.) 5.16 Erläutern Sie BM-Textsuche, wenn man ausschlieÿlich die (einfache) BC-Regel benutzt. (Das ist die Variante von Horspool.) 5.17 Wann ist ein Shift s nach der GS-Regel zulässig? Wie begründet man dies? (Bilder aus der Vorlesung.) Die GS-Funktion wählt die kleinste zulässige Shiftweite. 5.18 Wie läuft BM-Textsuche ab, wenn man ausschlieÿlich die GS-Regel benutzt? Was ist die Laufzeit (kein Beweis)? 5.19 Wie läuft BM-Textsuche ab, wenn man beide Regeln kombiniert benutzt? Was ist die Laufzeit (kein Beweis)? S[1..n] deniert? Wie kann man sie berechnen? (Erläutern Sie die Rolle der Zahlen ri bzw. li und 5.20 Wie sind die Präx- oder Z-Werte Z2 , . . . , Zn eines Textes skizzieren Sie die möglichen Fälle.) Welchen Zeitbedarf hat das Verfahren? 5.21 Bei der Berechnung der GS-Shiftwerte wird die Z-Funktion benutzt. Wie? (Man benutzt die Z-Werte der Umkehrung die Suxwerte P [m]..P [1] des Musters P [1..m]. Dies liefert N (k).) 9 5.22 Welchen Zeitbedarf hat die Vorverarbeitungsphase, die die GS-Shiftwerte für ein Muster P [1..m] berechnet? (O(m).) Viel Spaÿ bei der Vorbereitung und viel Erfolg bei der Prüfung! 10