Hauptseminar - Themenvorschläge
Das Thema des Hauptseminars sind randomisierte Algorithmen. Hier finden Sie eine Liste von Themenvorschlägen. Für zusätzliche Vorschläge bin ich offen
Emo Welzls Vorlesungsskript zum Thema SAT
Zu den SAT-Themen gibt es kein einheitliches Lehrbuch. Es gibt aber das hervorragende Vorlesungsskript von Emo Welzl.
1. Kargers Algorithmus. Ein Cut in einem ungerichteten Graphen
Das Problem Minimum Cut fragt nach einem Cut
Vorteile. Ein schöner, anschaulicher und einfach genialer Algorithmus.
Ein Beispiel dafür, wie man mithilfe randomisierter Argumente interessante, nicht-randomisierte Aussagen beweisen
kann
(hier: ein ungerichteter Graphen kann höchstens
Nachteile. Eigentlich keine.
2. A random walk algorithm for 2-SAT. Hier sehen Sie eine Boolesche Formel in konjunktiver Normalform, kurz CNF:
SAT ist das Problem, für so eine gegebene CNF-Formel eine erfüllende Belegung zu finden. SAT ist ein zentrales NP-vollständige Problem und ist höchstwahrscheinlich schwierig, d.h. es gibt wohl keinen effizienten Algorithmus für SAT. Eine prominente Ausnahme ist 2-SAT; dies ist SAT auf Formeln, in denen jede Klausel nur zwei Variable enthält, zum Beispiel also
Für 2-SAT sind mehrere effiziente Algorithmen bekannt. Besonders elegant ist der randomisierte Algorithmus
von Papadimitriou. Man startet mit einer beliebigen Wahrheitsbelegung und wiederholt folgenden Schritt:
nimm eine beliebige unerfüllte Klausel, wähle zufällig eine der beiden Variablen darin und ändere deren Wert.
Wenn die Formel
Wenn es zeitlich passt, nehmen Sie noch Schönings Random-Walk-Algorithmus für
Vorteile. Bei diesem Thema setzen Sie sich mit Random Walks auseinander, die ein grundlegendes Objekt in der Analye zufallsbasierter Prozesse darstellen. Für eine Seminarpräsentation eignet sich, dass Sie viel mit Abbildungen, Animationen und Beispielen arbeiten können.
Nachteil. Das Problem SAT ist als algorithmisches Problem eventuell neu und ungewohnt für Sie.
3. Der PPZ-Algorithmus für SAT. Dies ist ein weiterer randomisierter
Algorithmus für
Vorteile. Thema und Technik sind nicht nur für die Algorithmik wichtig, sondern auch für die Komplexitätstheorie. Das Thema ist von allen vorgeschlagenen am nächsten an der "richtigen" Forschung dran. Wenn Sie an Komplexitätstheorie interessiert sind oder mit dem Gedanken spielen, Ihre Bachelor-Arbeit in der theoretischen Informatik zu schreiben, ist es Ihr Thema.
Nachteile. Der PPZ-Algorithmus ist nicht effizient. Er hat exponentielle Laufzeit. Vielleicht haben Sie emotionale oder moralische Probleme, über exponentielle Algorithmen zu sprechen. Auch entfaltet das Thema sein ganzes Potential erst dann, wenn jemand Anderes das vorherige Thema (Ranndom Walk Algorithms for SAT) übernimmt.
4. Primzahl-Tests. Wie überprüft man, ob eine gegebene Zahl
Vorteil. Primzahl-Tests sind ein Paradebeispiel für effiziente Algorithmen. Jeder sollte es einmal gesehen (und verstanden) haben. Das Material ist ein Klassiker und im Lehrbuch bereits gut aufgearbeitet.
Nachteil. Die Großteil der mentalen Arbeit liegt darin, die benötigte Zahlentheorie zu verstehen (keine Angst: es ist sehr elementare Zahlentheorie). Wenn man die verstanden hat, dann wirkt der Algorithmus beinahe trivial. Das Thema eignet sich schwer für graphische Darstellungen. Wenn Sie Computerfolien hassen und einen reinen Tafelvortrag halten wollen, dann ist dies Ihr Thema.
Mein Plan ist, dass wir uns in diesem Seminar gemeinsam einen "harten Brocken" der theoretischen Informatik vornehmen und uns durchbeißen. Dafür werden wir ihn in überschaubare Teile zerlegen und sie uns in mehreren Sitzungen und Vorträgen erarbeiten. Da ein Aspekt auf den vorherigen aufbaut, müssen wir uns gut absprechen und koordinieren.
Das Thema, das ich behandeln will, ist das allgemeine Derandomisierungsprojekt, das anstrebt, zu jedem effizienten randomisierten Algorithmus einen entsprechenden effizienten deterministischen Algorithmus zu konstruieren. Ein wichtiges Werkzeug dafür sind fehlerkorrigierende Codes, also ein Thema, das für sich genommen schon herausfordernd und interessant ist und welches den ersten Themenblock darstellen wird.
5. Error correcting codes. In diesem Themenblock will ich mit Ihnen die Begriffe der fehlerkorrigierenden Codes durchnehmen und erarbeiten, wie man solche konstruiert und was für Raten erreichbar sind.
5.1 Definitionen und erste Resultate. Sie führen grundlegende Begriffe ein und zeigen erste Konstruktionen (greedy, probabilistisch) und untere Schranken. Wir bekommen ein erstes Gefühl, was mit fehlerkorrigierenden Codes möglich ist.
5.2 Algebraische Konstruktionen und konkatenierte Codes. Hier sehen wir zum ersten Mal, wie man Codes mit positiver Rate konstruiert. Sie diskutieren auch, warum die probabilistischen Konstruktionen aus dem vorherigen Teilthema nicht wirklich praktikabel sind. Sie erläutern, was man unter einem konkatenierten Code versteht und wie man deren Minimalabstand und Rate verhalten.
5.3 Obere Schranken. Hier diskutieren Sie obere Schranken dafür, wie groß ein Code von bestimmten Minimalabstand werden kann. Stichwörter sind Johnson bound, Plotkin bound, Elias-Bassalygo bound. Literatur: Venkatesan Guruswamis Vorlesungsskript.
5.4 Zusätzliche Eigenschaften: lokal decodierbare Codes. Szenario: Sie
haben eine Datenbank fehlerkorrigierend auf einem Medium abgespeichert. Wenn Ihre Datenbank
6. Derandomisierung aller schneller Algorithmen? Das
Der Beweis besteht aus vielen Teilresultaten, jedes für sich selbst schon interessant. Wir haben Glück: das Thema ist im Lehrbuch Computational Complexity: A Modern Approach von Arora und Barak (draft pdf) bereits wunderbar aufbereitet.
6.1 Grundbegriffe. Hier wiederholen Sie Grundbegriffe wie P und BPP. Sie
führen Begriffe ein wie pseudo random generator, distingusher und beweisen ein erstes
überraschendes Ergebnis:
6.2 Distinguisher und Predictor Sie führen den Begriff des Predictors ein und zeigen, wie man aus einem Predictor einen Distinguisher baut. Sie rekapitulieren, wie sich das in das große Projekt der Derandomisierung einfügt.
6.3 Der Nisan-Wigderson-Generator. Hier taucht zum ersten Mal formal der
Begriff der Schaltkreiskomplexität auf, insbesondere der average-case hardness einer
Booleschen Funktion. Sie erklären die Konstruktion von Nisan und Wigderson und zeigen: wenn die verwendete
Boolesche Funktion
An diesem Punkt können wir zusammenfassen: wenn eine Boolesche Funktion
Als nächstes geht es um Hardness-Amplification. Grob gesagt geht es darum, aus einer Booleschen Funktion, die hohe Worst-Case-Komplexität hat, eine zu bauen, die hohe Average-Case-Komplexität hat.
6.4 Worst-case- und Average-case-Komplexität, und Impagliazzos Hardcore-Lemma.
Sie führen mehrere Begriffe der Schaltkreiskomplexität einer Booleschen Funktion ein
(worst-case, average-case) und diskutieren zwei Parameter, die uns interessieren: die Schaltkreisgröße
(mehr heißt schwieriger) und die Erfolgswahrscheinlichkeit (kleiner heißt schwieriger) und beweisen
Impagliazzos Hardcore-Lemma: wenn eine Funktion
6.5 Milde und Starke Komplexität: Yaos XOR-Lemma. Sie schlagen die Brücke von Impagliazzos Hardcore-Lemma und unseren Begriffen von Average-Case-Komplexität und zeigen, wie man das Hardcore-Lemma verwenden kann, um aus einer ein wenig schwierigen Funktion eine extrem schwierige bauen kann.
6.6 Teilderandomisierung mittels lokal decodierbarer fehlerkorrigierender Codes.
Sie rekapitulieren Begriffe fehlerkorrigierender Codes wie Rate, Abstand und lokale Decodierbarkeit. Sie
erinnern uns daran, was wir im Teilthema 1.4 gelernt haben. Dann zeigen Sie, wie man lokal decodierbare
fehlerkorrigierende Codes benutzt, um aus einer worst-case-schwierigen Booleschen Funktion einen
Pseudozufallsgenerator bauen kann. Sie erläutern, warum dies noch nicht ausreicht, um davon
6.7 Lokal listendecodierbare Codes. Dieses Thema geht nochmal zurück zu fehlerkorrigierenden Codes und zeigt, wie man deutlich bessere Code-Parameter erreichen kann (Rate, Abstand), wenn man zulässt, dass Codewörter nicht eindeutig rekonstruiert werden müssen, sondern akzeptiert, dass eine (kleine) Liste von möglichen Codewörtern zurückgeliefert werden. Sie zeigen, wie man diese listendecodierbaren Codes verwendet, um aus einer worst-case-schwierigen Funktion einen noch besseren Pseudozufallsgenerator bauen kann.
Eventuell müssen wir dieses Thema auf zwei Vorträge aufteilen: ein Vortrag zeigt, wie man diese listendecodierbaren Codes konstruiert, ein anderer zeigt, wie man diese im Kontext der Derandomisierung / der Pseudozufallsgeneratoren anwendet.