• Keine Ergebnisse gefunden

Fragebogen zur Vorlesung Algorithm Engineering Stefan Edelkamp

N/A
N/A
Protected

Academic year: 2021

Aktie "Fragebogen zur Vorlesung Algorithm Engineering Stefan Edelkamp"

Copied!
4
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Fragebogen zur Vorlesung Algorithm Engineering

Stefan Edelkamp

Zusammenfassung

Dieser Fragebogen dient als Hilfestellung zur Vorbereitung auf eine mündli- che Modulprüfung als auch auf ein Fachgespächj. Er erhebt keinen Anspruch auf Vollständigkeit. So können tatsächliche Prüfungsfragen auch deutlich von den hier angegebenen abweichen.

1. (Einleitung)

(a) Machen Sie Angaben zur Historie des Algorithmen Engineerings!

(b) Erläutern Sie die Aufgaben des Algorithm Engineerings!

(c) Malen Sie den Kreislauf des Algorithm Engineering auf!

2. (Mathematische und komplexitätstheoretische Grundlagen)

(a) Was für drei grundlegende Ansätze zur amortisierten Analyse kennt man?

(b) Wie funktioniert eine amortisierte Analyse nach der Potentialmethode?

(c) Geben Sie möglichst alle Anwendungsgebiete der amortisierten Analyse aus der Vorlesung an.

(d) Wie ist dieO-Notation definiert und warum erleichtern Ableitungen die Analyse (Regel d’Hospital)?

(e) Was ist die Klasse NC bzw. ein P-vollständiges Problem. Setzen Sie dieses mit der NP-vollständigkeitstheorie in Verbindung.

3. (Sortieren)

(a) Nennen sie einige Kriterien für gute Sortierverfahren!

(b) Klassifizieren sie den State-of-the-Art im sequentiellen Sortieren anhand der worst- und average-case Laufzeiten!

(c) Erläutern Sie Clever-Quicksort und geben Sie die Rekursionsformel an!

(d) Erläutern Sie Weak-Heapsort und geben Sie Hinweise auf die worst-case Komplexität sowohl in der Aufbau- als auch in der Sortierphase!

(e) Erläutern Sie die Grundidee von Quick-Heapsort!

(f) Erklären Sie Radix-Exchange-Sort und dessen Laufzeitanalyse!

(g) Erläutern Sie die Sortierung durch Fachverteilung und geben Sie ihre Lauf- zeit im Vergleich zu Radix-Exchange-Sort wider!

1

(2)

4. (Vorangwarteschlangen / Priority Queues)

(a) Was sind die grundlegenden Operation von Priority Queues?

(b) Wozu werden Sie u.a. gebraucht (3 Beispiele)?

(c) Erläutern Sie die verschiedenen Bucket-Datenstrukturen (1-Level, 2-Level, Radix-Heaps)! Was ist die Grundannahme dieser Verfahren?

(d) Erläutern Sie die verschiedenen Heap-Implementierungen (Heaps, Weak- Heaps, Binomial Queues, Fibonacci-Heaps, Run-Relaxed Weak-Queues)?

Was ist die Grundannahme dieser Verfahren?

(e) Woraus bestehen Run-Relaxed Weak Queues und warum heißen Sie so?

Was macht die OperationλReduce?

5. (Zeichenkettensuche)

(a) Was sind die Unterschiede der Algorithmen von Knuth-Morris-Pratt, Boyer- Moore und Rabin-Karp?

(b) Wie erweitert man den Ansatz von Knuth-Morris-Pratt auf mehrere Strings und wo liegen die Anwendungen.

(c) Was ist ein Suffixbaum und warum hat er lineare Größe und kann in linearer Laufzeit konstruiert werden?

(d) Wie kann man Suffixbäume als Wörterbuchdatenstruktur auf mehrere Strings erweitern und wobei muss bei der Löschung von Strings achten?

(e) Wie hängen das Partial-Match, das Subset-Query und das Subset-Containment Problem zusammen?

(f) Nennen Sie mindestens drei Anwendungsbereiche in denen die Probleme auftreten?

(g) Erläutern Sie den Laufzeit/Platz-Kompromiss von Unlimited Branching Trees?

(h) Wie sucht man mit Wildcards und approximativ nach Zeichenketten?

6. (Hashing)

(a) Worin bestehen die wesentlichen Unterschiede und welche offenen und ge- schlossenen Hashverfahren kennen Sie?

(b) Wie lässt sich die erfolglose und die erfolgreiche Suche verbessern?

(c) Wie verbessern Suffix-Listen und BDD den Speicherverbrauch?

(d) Was ist Bit-State Hashing und Collapse Compression?

(e) Definieren Sie universelle Hashfunktion und geben Sie ein Beispiel!

(f) Erläutern Sie Cuckoo-Hashing inklusive der Suchlaufzeit und das prinzipi- ell existierende Problem bei der Einfügung!

(g) Worauf fußen der Ansatz von Botelho et al. und das theoretische Resultat von Dietzfelbinger et al.!

2

(3)

(h) Bei welcher Berechnung läßt sich der Ansatz von Botelho et al. vorteilhaft nutzen? Erläutern Sie das Prinzip Semi-Externer Algorithmen!

(i) Wie lassen sich Solid State Disks hier nutzbringend einsetzen?

(j) Geben Sie die Rank und Unrank Funktionen für Permutations- und weite- ren Brettspielen an!

(k) Was sind Musterdatenbanken und warum sind perfekte Hashfunktionen auch hier vorteilhaft?

7. (Externe Algorithmen)

(a) Wie sind externe Stacks, Queues und sortierte Listen aufgebaut?

(b) Erläutern Sie das Prinzip der verspäteten Duplikatserkennung nach Mun- agala und Ranade in ungerichteten Graphen! Was ist die Beweisidee zur Korrektheit?

(c) Welche Verallgemeinerungen für gerichtete und gewichtete Graphen ken- nen Sie?

(d) Warum sind implizit durch Regeln aufgespannte Graphen besser zu behan- deln als explizit gespeicherte Graphen?

(e) Wie lautet die Laufzeit von External A* und wie setzt sie sich zusammen?

(f) Wie funktioniert die Strukturierte Duplikatserkennung?

(g) Was ist ein Markov Decision Process Problem und wie läßt es sich mit Festplatten-Einsatz lösen? Stellen Sie eine Verbindung zum Algorithmus von Bellman und Ford her!

(h) Welchen Vorteil bieten Solid State Disks in der Duplikatserkennung? Ge- ben Sie einen effektiven Kompromiss aus Vorder- und Hintergrundspeicher an!

8. (Parallele Suche)

(a) Was sind die grundsätzlichen Problematiken der parallelen Suche insbe- sondere in der Partitionierung, dem Load Balancing, dem Locking und der Kommunikation?

(b) Wie erkennt und verbreitet man die Terminierung einer parallelen Berech- nung?

(c) Wie und warum funktioniert das Depth-Slicing in der Tiefensuche?

(d) Geben Sie in knappen Worten die Grundideen von Minimal Window Search, Stack Splitting und Transposition Driven Scheduling an!

(e) Wie kann man die verspätete Duplikatserkennung in einem Computernetz- werk (Cluster) realisieren?

(f) Wie kann man die Strukturierte Duplikatselimination parallelisieren?

(g) Was unterscheidet Treaps und Splay-Bäume und wie kann man sie effektiv in der parallelen Suche nutzen?

3

(4)

9. (Parallele Algorithmen)

(a) Wie berechnet man die Präfixsumme mitnProzessoren inO(logn)Zeit?

(b) Wie berechnet man die Matrix-Multiplikation mitn3Prozessoren inO(logn) (paralleler) Zeit? Wie verbessert man die Arbeit aufO(n3)(bei gleichblei- bender paralleler Laufzeitkomplexität)?

(c) Wie berechnet man den Listenrank aller Knoten mitnlognProzessoren in O(logn)Zeit? Wie verbessert man die Arbeit aufO(n)und letztendlich die Zeit wieder aufO(logn)?

10. (GPGPU Programmierung) (a) Wofür steht GPGPU?

(b) Wie ist eine GPU aufgebaut? Zeichnen Sie die Architektur und erläutern Sie die Funktionalität am Beispiel NVIDIA GTX 280!

(c) Wie wird ein CUDA Programm erstellt (Kompilieren des Kernels, Linken mit Host-Programm)?

(d) Was für GPU Sortierverfahren kennen Sie und worin besteht das Problem des Sortierens großer Vektoren?

(e) Was ist eine Jacobi-Iteration und wozu braucht man Sie?

(f) Erläutern Sie die 1- und 2- Bit Breitensuche auf der GPU! Warum ist der Einsatz von A* hier kritisch?

(g) Nennen Sie zwei Anwendungsgebiete von GPU an und sagen Sie in 2-3 Sätzen, worin dabei jeweils der Vorteil der GPU Programmierung liegt.

4

Referenzen

ÄHNLICHE DOKUMENTE

To process each new value x, start at the node representing the value prior to x in the sequence and follow the path from this node to the root of the tree until finding a value y

Bestimmung erreichbarer Zustände mittels SBFS  v: Anzahl Variablen für einen Zustand.  n: Anzahl BDD-Knoten zur Repräsentation aller

Bestimmung erreichbarer Zustände mittels SBFS  v: Anzahl Variablen für einen Zustand.  n: Anzahl BDD-Knoten zur Repräsentation aller

beantwortet eine Datenstruktur für das PARTIAL MATCH Problem für eine Anfrage q (mit wildcards) ob es einen Eintrag q in D gibt, so dass q zu p

„Wenn hier einer Anna nass macht“... Berechnung

„Wenn hier einer Anna nass macht“... Berechnung

(c) Beschreiben Sie, wie man in einem Suffixbaum nach allen Teilzeichen- ketten suchen kann, die lexikographisch zwischen zwei Zeichenketten m 1?. und m 2 fallen, z.B., liegt

(a) Abhängigkeitsgraphen für die approximative Zeichenkettensuche (b) Spurgraphen für die