Beispiel-Prüfungsfragen

Werbung
Beispiel-Prüfungsfragen
für “Effiziente Algorithmen II”
M. Dietzfelbinger, 6. Februar 2011.
Vorbemerkung: Die Liste der Beispielfragen soll bei der Vorbereitung helfen. Sie
definiert nicht den Prüfungsstoff um. (Der Prüfungsstoff 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 spezifizieren. Manchmal ist schon diese Aufgabe
etwas komplizierter.
Beispiel : Der Input ist ein Flussnetzwerk. Dies besteht aus einem gerichteten Graphen G = (V, E), in dem eine Quelle q ∈ V und eine Senke s ∈ V ausgezeichnet sind.
Zudem hat jede Kante (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
zu erfüllen sind:
• 0 ≤ f (u, v) ≤ c(u, v) an jeder Kante (u, v);
• Flusserhaltung (Kirchhoff-Regel) an jedem Knoten.
P
Der Wert w(f ) des Flusses f ist (q,v)∈E f (q, e), der Fluss aus der Senke hinaus.
Die Aufgabe ist, einen Fluss mit maximalem Wert zu finden.
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) Stoffes der Vorlesung verlangt. Soweit Übungen sich direkt auf den Vorlesungsstoff 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. „Kirchhoff-Regel“?)
1.3 Wie ist der Wert w(f ) eines Flusses f definiert? Was ist ein maximaler Fluss?
1.4 Gegeben FNW G und Fluss f dazu. Wie ist das Restnetzwerk (RNW) Gf
definiert?
1.5 Gegeben ein q-s-Weg p im RNW Gf . Was ist die Kapazität von p? Wie kann
man p benutzen, um den Fluss zu vergrößern?
1.6 Gegeben ein FNW G = (V, W, q, s, c). Was ist ein Schnitt (Q, S) in G? Was ist
die Kapazität c(Q, S) eines Schnittes (Q, S)? Was ist ein minimaler Schnitt?
1.7 Gegeben FNW G = (V, W, q, s, c), Fluss f , Schnitt (Q, S). Formulieren Sie eine
Beziehung zwischen w(f ) und c(Q, S). Wie funktioniert der Beweis? (Prinzip
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 q-s-Weg.
(b) Wenn das RNW keinen q-s-Weg hat, dann gibt es einen Schnitt (Q, S) mit
f (w) = c(Q, S).
(c) Wenn es einen Schnitt (Q, S) mit f (w) = c(Q, S) gibt, dann ist f maximal
(und c(Q, S) 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) ganzzahlig 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?
1.14 Wie beweist man die Laufzeitschranke O(m2 n) für den Edmonds-Karp-Algorithmus? (Die Anzahl der Iterationen ist O(mn) – wieso? Eine Iteration kostet
Zeit O(m) – wieso?)
1.15 Was ist das Niveaunetzwerk (NNW) G0f ?
1.16 Was ist ein Sperrfluss? Zu welchem Netzwerk gehört er? (Zum NNW!)
1.17 Wieviele Sperrflussberechnungen benötigt man bei der Sperrfluss-Methode höchstens?
1.18 Beweisen Sie, dass es bei der Sperrflussmethode nicht mehr als n−1 Iterationen
geben kann.
1.19 Beschreiben Sie die Methode „Forward-Backward-Propagation“ zur Sperrflussberechnung. 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 Sperrflussmethode mit Forward-Backward-Propagation?
1.22 In der Übung wurde eine andere Methode zur Sperrflussberechnung 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 finden? (Nein, ein
naiver Algorithmus führt zum Ziel.)
2.3 Was ist ein kardinalitätsmaximales Matching („maximum matching“)?
2.4 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.5 Was ist ein einfaches (Fluss-)Netzwerk? Was ist mit dem RNW G0 , wenn das
FNW G einfach ist? Wieso?
2.6 Wir wenden die Sperrflussmethode auf ein einfaches
√ FNW G an. Geben Sie eine
Sie sie. (Es
obere Schranke für die Anzahl der Runden an (2 n) und beweisen
√
gibt zwei Phasen: Wenn der erreichte Fluss noch weiter als n vom Optimum
√
n viele
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 am Optimum
ist.)
2.7 Wie lange dauert eine Sperrflussberechnung in einem einfachen Netzwerk? (Wenn
man es richtig macht, und das geht wie?)
2.8 Was tut der Algorithmus von Hopcroft-Karp? (Maximale Matchings mit der
Sperrflussmethode in Flussnetzwerken.) Was ist seine Laufzeit?
2.9 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.10 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.11 Was ist der zentrale Trick bei der ungarischen Methode? (Knotenmarkierungen!)
4
2.12 Was ist der Gleichheitsgraph G` ?
2.13 Formulieren und beweisen Sie den Satz von Kuhn/Munkres.
2.14 Wie wird bei der ungarischen Methode die Knotenmarkierung in einem Schritt
geändert? (Gemeint ist die allgemeine Formulierung mit Mengen S [links] und
T [rechts].)
2.15 Beschreiben Sie den Algorithmus „Ungarische Methode“! (Auch an einem Beispielinput.) Was ist die asymptotische Laufzeit?
2.16 Spezifizieren Sie das Problem „Stabile Paarung“.
2.17 Beschreiben Sie den Algorithmus von Gale und Shapley.
2.18 Beweisen Sie, dass der Algorithmus terminiert und eine stabile Paarung liefert.
2.19 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.20 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.)
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 Was ist der Ansatz der Bankkontomethode? Was muss man feststellen bzw. definieren? (Feststellen: die echten Kosten für jede Operation; definieren: 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.)
5
3.4 Was folgt für die Summe der echten Kosten? (≤ Summe der amortisierten Kosten.)
3.5 Erklären Sie die Bankkontomethode am Beispiel „Stack mit multipop-Operation“
[„Binärzähler“, „Stack mit Verdopplungs- und Halbierungsstrategie“].
3.6 Was ist der Ansatz der Potenzialmethode? Was muss man feststellen bzw. definieren? (Feststellen: die echten Kosten für jede Operation; definieren: 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 Definition 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.7 Was folgt für die Summe der echten Kosten? (≤ Summe der amortisierten Kosten.)
3.8 Erklären Sie die Potenzialmethode am Beispiel „Stack mit multipop-Operation“
[„Binärzähler“, „Stack mit Verdopplungs- und Halbierungsstrategie“].
3.9 Wo haben wir die Potenzialmethode noch verwendet? (Bei der Analyse von
Fibonacci-Heaps.)
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 „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 Navigationsund Umformungsschritte ausführen kann?
6
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. (Besonders interessant: 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 definiert?
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?
4.11 In der Analyse wird eine Schranke D(n) für den maximalen Grad eines Knotens in einem Fibonacci-Heap mit n Knoten benutzt. Welche Schranke ist das?
(D(n) = 1.4405 log n = O(log n).) Wie beweist man sie? (Man definiert 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,
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 Definieren Sie: „u ist echter Rand von w“.
5.3 Wie ist die „MP-Fehlerfunktion“ q 7→ f (q) im Algorithmus von KMP definiert?
7
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 0 definiert? Wie kann man sie aus
f berechnen?
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 definieren? (Blatt 6, Aufgabe 4.) Inwiefern unterscheidet sich der im AC-Algorithmus
verwendete Graph hiervon? (Die Knotenmengen sind gleich! Der endliche Automat hat für jeden Zustand (im Prinzip) |Σ| Ausgangskanten, die Fehlerfunktion
hat für jeden Knoten nur einen Wert.)
5.11 Wie ist der AC-Graph definiert? (Knotenmenge: alle Präfixe aller Muster in Π.
Kante von Knoten v zu Knoten f (v), wenn . . . Ein Knoten ist als Ausgabeknoten 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.
5.13 Wie lange dauert die Suche in einem Text 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.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
8
zum letzten Mismatch geführt hat („bad character rule“); Anhand des Suffixes im Muster, das verglichen wurde, eventuell inklusive des ersten MismatchBuchstabens: „good-suffix-Regel“.)
5.16 Erläutern Sie BM-Textsuche, wenn man ausschließlich die BC-Regel benutzt.
(Das ist die Variante von Horspool.) Es gibt zwei Varianten. Welche? (Nur das
am weitesten rechts stehende Vorkommen eines Buchstabens, alle Vorkommen
eines Buchstabens berücksichtigen.)
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)?
5.20 Wie sind die Präfix- oder Z-Werte Z2 , . . . , Zn eines Textes S[1..n] definiert?
Wie kann man sie berechnen? (Erläutern Sie die Rolle der Zahlen ri bzw. li und
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 P [m]..P [1] des Musters P [1..m]. Dies liefert
die Suffixwerte N (k).)
5.22 Was haben Suffixwerte mit den GS-Shifts zu tun? Geben Sie die entsprechenden
Bilder an. („Großer Shift“ um s = m − k ≥ j entspricht einem echten Rand von
P der Länge k; einen solchen echten Rand kann man an der Gleichheit N (k) = k
erkennen.) („Kleiner Shift“ um s = m − k < j ist zulassig nach Mismatch bei j
genau dann wenn N (k) = m − j.)
5.23 Was bedeuten die Hilfsfunktionen L(j) und `(j)? Wie kann man sie mit Hilfe
der Suffixfunktion N berechnen?
5.24 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!
9
Herunterladen