VL-23: Schlussbemerkungen
(Datenstrukturen und Algorithmen, SS 2017) Gerhard Woeginger
SS 2017, RWTH
DSAL/SS 2017 VL-23: Schlussbemerkungen 1/14
Organisatorisches
• Vorlesung: Gerhard Woeginger (Zimmer 4024 im E1) Sprechstunde: Mittwoch 11:15–12:00
• Übungen: Tim Hartmann, David Korzeniewski, Björn Tauer Email:dsal-i1@algo.rwth-aachen.de
• Webseite:http://algo.rwth-aachen.de/Lehre/SS17/DSA.php
DSAL/SS 2017 VL-23: Schlussbemerkungen 2/14
Stoffübersicht
In den letzten Monaten haben wir folgendes gesehen:
I Grundlagen:Zeitkomplexität & Platzkomplexität von Algorithmen;
Average, Best & Worst Case Analyse; O-Notation (undω undΩund Θundo); Rekursionsgleichungen & Mastertheorem
I Suchen und Sortieren:binäre Suche & bilineare Suche; MergeSort, HeapSort, QuickSort
I Datenstrukturen:ADTs; Stapel & Warteschlangen; Listen;
Binärbäume; Binäre Suchbäume & Rot-Schwarz-Bäume; Hashing
I Graphalgorithmen:BFS, DFS; Bestimmung von
Zusammenhangskomponenten; Minimale Spannbäume; kürzeste Wege; Matchings und Flüsse
I Methodik:Divide & Conquer; Dynamische Programmierung; Greedy Algorithmen
I Geometrische Algorithmen
DSAL/SS 2017 VL-23: Schlussbemerkungen 3/14
Weiterführende Vorlesungen:
I Berechenbarkeit und Komplexität (BuK):Grenzlinie zwischen algorithmisch lösbaren und unlösbaren Problemen; Grenzlinie zwischen effizient lösbaren und nicht-effizient lösbaren Problemen
I Effiziente Algorithmen: Fortsetzung von DSAL; Flüsse in
Netzwerken; Lineare Programmierung; Approximationsalgorithmen
Viele Spezialvorlesungen am i1:
I Algorithmische Geometrie
I Algorithmische Graphentheorie
I Algorithmische Kryptographie
I Algorithmische Spieltheorie
I Approximationsalgorithmen
I Online Algorithmen
I Randomisierte Algorithmen
I Theorie Verteilter und Paralleler Systeme
DSAL/SS 2017 VL-23: Schlussbemerkungen 4/14
Aufgabentypen bei der Klausur
DSAL/SS 2017 VL-23: Schlussbemerkungen 5/14
Aufgabentypen bei der Klausur (1)
• Fragen nach Definitionen, Sätzen, Beweisen, Algorithmen
Beispiel
Geben Sie die Definition eines Rot-Schwarz-Baumes an.
Beispiel
Beweisen Sie: Für jeden Flussf des FlussnetzwerkesG = (V,E,c)gilt f(X∪Y,Z) =f(X,Z) +f(Y,Z)fürX,Y,Z ⊆V mitX∩Y =∅.
Beispiel
Beweisen oder widerlegen Sie: Heapsort ist stabil.
Beispiel
Geben Sie die zugrundeliegende Rekursionsformel für das Dynamische Programm zur Matrix-Ketten-Multiplikation an.
DSAL/SS 2017 VL-23: Schlussbemerkungen 6/14
Aufgabentypen bei der Klausur (2)
• Direktes Anwenden von besprochenen Algorithmen auf konkrete Inputs
Beispiel
Wenden Sie diebuildHeap Prozedur auf das folgende Array an, und stellen Sie dadurch die Max-Heap-Eigenschaft her. Geben Sie das Array nach jeder Swap-Operation an.
Beispiel
Löschen Sie den Knoten 15 aus dem folgenden Rot-Schwarz-BaumT. Markieren Sie bei jeder Rotation, welcher Knoten in welche Richtung rotiert wird.
Beispiel
Wenden Sie den Cocke-Kasami-Younger Algorithmus auf das Wort w =abcabc und die folgende Grammatik G an.
DSAL/SS 2017 VL-23: Schlussbemerkungen 7/14
Aufgabentypen bei der Klausur (3)
• Adaption von bekannten Algorithmen auf neue Situationen
Beispiel
Gegeben ist eine endliche MengeS von Servern und eine Funktion b:S×S →N. Für zwei Serversi,sr ∈S gibt der Funktionswertb(si,sj) die Bandbreite an, mit der Daten vom Serversi direkt (ohne
Weiterleitung über einen anderen Server) zum Serversj gesendet werden können. Sollen nun Daten vons1 nachsk gesendet werden, so kann es jedoch sein, dass die maximale Bandbreite entlang eines Pfades von Serverns1, . . . ,sk höher ist als die Bandbreiteb(s1,sk)der direkten Verbindung. Da Bandbreiten Flaschenhälse darstellen, ist die maximale Bandbreite entlang des Pfadess1, . . . ,sk durch das Minimum
min{b(s1,s2), b(s2,s3), b(s3,s4), . . . ,b(sk−1,sk)}
gegeben. Skizzieren Sie einen Algorithmus, der zwischen jedem (geordneten) Paar von Servern die maximale Bandbreite ermittelt. Die Laufzeit des Algorithmus sollΘ(|S|3)sein.
DSAL/SS 2017 VL-23: Schlussbemerkungen 8/14
Aufgabentypen bei der Klausur (4)
• Entwicklung und Analyse von neuen Algorithmen
Beispiel
Eine FolgeB = (b1, . . . ,bm)von ganzen Zahlen heisstbitonisch, falls es einen Indexk mit 1<k <mgibt, sodass die Präfixfolge (b1,b2, . . . ,bk) streng monoton steigend und sodass die Suffixfolge(bk,bk+1, . . . ,bm) streng monoton fallend ist.
Gegeben ist eine FolgeA= (a1, . . . ,an)von ganzen Zahlen. Skizzieren Sie ein Dynamisches Programm, das die längste bitonische Teilfolge von Abestimmt. Analysieren Sie Laufzeit und Speicherplatz, und beweisen Sie die Korrektheit.
DSAL/SS 2017 VL-23: Schlussbemerkungen 9/14
Anmerkungen zur Klausur
DSAL/SS 2017 VL-23: Schlussbemerkungen 10/14
Anmerkungen zur Klausur (1)
I Schreiben Sie auf jedes Blatt Namen und Matrikelnummer
I Beantworten Sie die Aufgabenaufden Aufgabenblättern
I Geben Sie am Ende der Klausur alle Blätter zusammen mit den Aufgabenblättern ab
I Schreiben Sie mit dokumentenechten Stiften (nicht mit roten oder grünen Stiften, und auf keinen Fall mit Bleistift)
I Schreiben Sielesbarundsauber
I Formulieren Sie Ihre Antwortenklarundeindeutig
I Geben Sie für jede Aufgabemaximal eineLösung an (Streichen Sie alles andere durch). Andernfalls werden alle Lösungen der Aufgabe mit 0 Punkten bewertet
I Bei der Klausur sindkeineBücher, keineNotizen,keineMitschriften, keineUnterlagen,keineTaschenrechner erlaubt
I Werden Täuschungsversuche beobachtet, so wird die Klausur mit 0 Punkten bewertet
DSAL/SS 2017 VL-23: Schlussbemerkungen 11/14
Anmerkungen zur Klausur (2)
I Bei Aufgaben vom Typ “Beweisen oder widerlegen Sie folgende Aussage”werden Punktenurfür Argumente vergeben. Ein einfaches
“Ja” oder “Nein” oder “Wahr” oder “Falsch” bringt keine Punkte.
I Bei Aufgaben vom Typ “Wenden Sie den Algorithmus XYZ auf folgende Eingabe an”werden Punkte ausschliesslich für den Rechenweg vergeben. Für das Auflisten des Endergebnisses alleine gibt es keine (oder im besten Fall: sehr wenige) Punkte.
I Bei Aufgaben vom Typ “Wenden Sie den Algorithmus XYZ auf folgende Eingabe an”gibt es keine Punkte ab dem ersten Rechenfehler.
DSAL/SS 2017 VL-23: Schlussbemerkungen 12/14
Und ganz zum Schluss
DSAL/SS 2017 VL-23: Schlussbemerkungen 13/14
Ein allerletztes Übungsbeispiel
Betrachten Sie den folgenden Sortieralgorithmus, der ein Feld A[1. . .n]
mit Integer-Einträgen bearbeitet:
1 B l o e d S o r t ( A [ 1 . . n ]) 2
3 if ( n =2) and ( A [1] > A [ 2 ] ) 4 t h e n s w a p A [1] and A [2]
5
6 e l s e if ( n >2) t h e n 7 m := c e i l i n g (2 n /3) 8 B l o e d S o r t ( A [ 1 . . m ]) 9 B l o e d S o r t ( A [ n - m + 1 . . n ]) 10 B l o e d S o r t ( A [ 1 . . m ])
(a) Beweisen Sie, dass BloedSort das Eingabefeld tatsächlich sortiert.
(b) Ist dieser Algorithmus immer noch korrekt, wenn Zeile 7 mit m:= ceiling(2n/3)durch die Zeilem:= floor(2n/3)ersetzt wird?
(c) Stellen Sie eine Rekursionsgleichung für die Laufzeit auf.
(d) Lösen Sie Ihre Rekursionsgleichung.
Verdient dieser Sortieralgorithmus seinen Namen?
DSAL/SS 2017 VL-23: Schlussbemerkungen 14/14