Rev. 2, 01.04.2016 TU Ilmenau, Fakultät für Informatik und Automatisierung FG Komplexitätstheorie und Effiziente Algorithmen Univ.-Prof. Dr. M. Dietzfelbinger, Dr. C. Mattern http://www.tu-ilmenau.de/iti/lehre/lehre-ss-2016/aud/ Algorithmen und Datenstrukturen SS 2016 – Übung 1 Besprechung: 15. Kalenderwoche (11. April - 15. April 2015) Aufgabe 1 (Groß-Oh, klein-oh) Erinnerung: • Sei h : R+ → R+ eine streng monoton wachsende Funktion mit limx→∞ h(x) = ∞. f (x) f (h(x)) = 0, dann folgt lim = 0. x→∞ g(x) x→∞ g(h(x)) Wenn lim • Sei k ≥ 0 und sei l > 1. Es gilt xk = 0. x→∞ l x lim • Sei k ≥ 0 und sei l > 0. Es gilt (log x)k = 0. x→∞ xl lim Betrachten Sie die folgenden 12 Funktionen. f1 (n) = n11 f5 (n) = n2 f2 (n) = 1.00001n f3 (n) = n · log n · log log n f6 (n) = n · log n f7 (n) = n! f4 (n) = log log n √ f8 (n) = log n f9 (n) = n10 · (log n)42 f10 (n) = n1.00001 f11 (n) = nn f12 (n) = n2 (a) Geben Sie eine Permutation π von {1, 2, . . . , 12} an, so dass für alle 1 ≤ i ≤ 12 gilt: fπ(i) (n) = O( fπ(i+1) (n)). Begründen Sie Ihre Wahl. (b) Geben Sie einen Index i an, für den nicht gilt: fπ(i) (n) = o( fπ(i+1) (n)). Weiter auf nächster Seite! 2 Algorithmen und Datenstrukturen SS 2016 – Übung 1 Aufgabe 2 (Maximale Teilsumme) Gegeben ist eine Sequenz a = (a1 , a2 , . . . , an ) reeller Zahlen. Jeder Teilsequenz (ai , ai+1 , . . . a j ), für i, j ∈ {1, 2, . . . , n}, wird eine Summe si, j = ai + ai+1 + . . . + a j zugeordnet. (Falls j < i handelt es sich um die leere Teilsequenz ()“ mit Summe si, j = 0.) Gesucht ist eine Teilsequenz mit maximaler nicht” negativer Summe, die Teilsequenz wird durch ein Indexpaar i, j repräsentiert. (Die maximale Summe ist stets nicht-negativ, da die leere Teilsequenz eine legale Lösung ist.) Zur Lösung dieses Problems gibt es verschiedene Herangehensweisen, für die jeweils ein Algorithmus konstruiert und bezüglich der Laufzeit analysiert werden soll: (a) Man berechnet die Summe si, j für jedes mögliche Indexpaar und ermittelt das Maximum. (b) Man verfährt wie bei (a), benutzt aber den Zusammenhang si, j+1 = si, j + a j+1 , für j ≥ i − 1, um unnötige Berechnungen zu vermeiden. (c) Wir nehmen vereinfachend an, dass n eine Zweierpotenz ist. Man zerlegt a in u = (a1 , . . . , an/2 ) und v = (an/2+1 , . . . , an ). Eine Teilsequenz mit maximaler Summe liegt entweder in u oder in v oder beginnt in u und endet in v. (d) Sei t j der Wert der maximalen positiven Summe, deren zugehörige nicht-leere Teilsequenz bei j endet, oder 0, falls es keine positive Summe gibt, deren zugehörige nicht-leere Teilsequenz bei j endet. Formal: t j = max ({ai + ai+1 + . . . + a j | 1 ≤ i ≤ j} ∪ {0}) Berechnen Sie t j iterativ und bestimmen Sie daraus eine Lösung.