Algorithmen und Datenstrukturen SS 2016 – ¨Ubung 1

Werbung
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.
Herunterladen