Übungsblatt 9

Werbung
TU Ilmenau, Fakultät für Informatik und Automatisierung
FG Komplexitätstheorie und Effiziente Algorithmen
Univ.-Prof. Dr. M. Dietzfelbinger, Dr. C. Mattern, M.Sc. Stefan Walzer
http://www.tu-ilmenau.de/iti/lehre/lehre-ss-2016/aud/
Algorithmen und Datenstrukturen SS 2016 – Übung 9
Besprechung: 22. Kalenderwoche (6. Juni - 10. Juni 2016)
Aufgabe 1 (Laufzeitabschätzung von D-a-C-Algorithmen)
Für ein Problem P sind drei Algorithmen bekannt, die einen Input der Länge n wie folgt lösen:
• Algorithmus A spaltet das Problem in fünf Teilprobleme der Größe n/2, löst diese rekursiv, und
kombiniert die Lösungen der Teilprobleme zu einer Lösung des Gesamtproblems in Zeit O(n).
• Algorithmus B spaltet das Problem in zwei Teilprobleme der Größe n − 1, löst diese rekursiv, und
kombiniert die Lösungen der Teilprobleme zu einer Lösung des Gesamtproblems in Zeit O(n).
• Algorithmus C spaltet das Problem in neun Teilprobleme der Größe n/3, löst diese rekursiv, und
kombiniert die Lösungen der Teilprobleme zu einer Lösung des Gesamtproblems in Zeit O(n2 ).
Schätzen Sie die Laufzeit jedes Algorithmus entweder mit dem Master-Theorem (wenn anwendbar) oder
durch direktes Ausrechnen ab. Welcher Algorithmus ist asymptotisch am schnellsten?
Aufgabe 2 (Suche eines Gipfels)
Wir nennen ein Array A[1..n] aus n verschiedenen natürlichen Zahlen unimodal, wenn ein Index i ∈
{1, . . . , n} existiert, so dass A[1..i] aufsteigend und A[i..n] absteigend sortiert ist. Das Element A[i] nennen
wir den Gipfel von A. Geben Sie einen Divide-and-Conquer-Algorithmus an, der folgendes Problem in
Zeit O(log n) löst:
Gipfelbestimmung
Input: Ein unimodales Array A[1..n].
Output: Der Gipfel von A.
Aufgabe 3 (Bestimmung der maximalen Differenz)
Geben Sie einen Divide-and-Conquer-Algorithmus mit Laufzeit O(n log n) für folgendes Problem an:
Maximale Differenz
Input: Ein Array A[1..n] mit n natürlichen Zahlen.
Output: Zwei Indizes i, j, mit 1 ≤ i ≤ j ≤ n, so dass
A[ j] − A[i] = max{A[l] − A[k] | 1 ≤ k ≤ l ≤ n}.
Für Interessierte: Geben Sie einen Algorithmus mit Laufzeit O(n) an.
2
Algorithmen und Datenstrukturen SS 2016 – Übung 9
Aufgabe 4 (Majority Element)
Ein Element x hat die Mehrheit in einem Array A[1 . . . n], wenn es in mehr als der Hälfte der Einträge
von A vorkommt. Geben sie einen rekursiven Algorithmus an, der folgendes Problem in Zeit O(n) löst.
Majority Element
Input: Ein Array A[1..n].
Output: Dasjenige x, das die Mehrheit in A hat, falls ein solches Element existiert. None sonst.
Herunterladen