Beispiel-Prüfungsfragen

Werbung
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
Herunterladen