Übungsblatt 1 - Institut für Informatik - Humboldt

Werbung
Humboldt-Universität zu Berlin
Berlin, den 20.04.2015
Institut für Informatik
Prof. Dr. Ulf Leser
Übungen zur Vorlesung
M. Bux, B. Gruÿien, J. Sürmeli, S. Wandelt
Algorithmen und Datenstrukturen
Übungsblatt 1
Abgabe: Montag den 4.5.2015 bis 11:10 Uhr vor der Vorlesung im Hörsaal oder bis 10:45 Uhr
in den Fächern im Raum RUD25 4.402. Die Übungsblätter sind in Gruppen von 2 Personen
zu bearbeiten. Sie können auf diesem Übungsblatt bis zu 50 Punkte erhalten. Zur Erinnerung:
Jedes Übungsblatt muss bearbeitet werden. Sie müssen mindestens ein Blatt für wenigstens
eine Aufgabe jedes Übungsblattes abgeben. Die Lösungen sind auf nach Aufgaben
getrennten Blättern abzugeben.
Vermerken Sie auf allen Abgaben Ihre Namen, Ihre
Matrikelnummern, den Namen Ihrer Goya-Gruppe und welchen Übungstermin bei welchem
Übungsleiter Sie besuchen. Heften Sie bitte die zu einer Aufgabe gehörenden Blätter
vor der Abgabe zusammen.
Beachten Sie auch die aktuellen Hinweise auf der Übungswebsite unter:
https://u.hu-berlin.de/alg_ds_ss15_u
Konventionen:
•
Für ein Array
A
ist
|A|
die Länge von
A,
A. Die
|A|). Bitte
also die Anzahl der Elemente in
Indizierung aller Arrays auf diesem Blatt beginnt bei
1
(und endet also bei
beginnen Sie die Indizierung der Arrays in Ihren Lösungen auch bei 1.
•
Mit der Auorderung Analysieren Sie die Laufzeit ist hier gemeint, dass Sie eine
möglichst gute obere Schranke der Zeitkomplexität angeben sollen und diese begründen
sollen.
•
Mit
•
Die Menge der natürlichen Zahlen
•
Ein Stern markiert eine tendenziell schwierigere Aufgabe.
log
wird der Logarithmus
log2
zur Basis
N
2
bezeichnet.
enthält die Zahl
0.
Aufgabe 1 (Eigenschaften der O -Notation)
a)
2+3+3 = 8 Punkte
abbilden, gilt
O(f + g) ⊆
p : N → R mit p(n) = ad nd + ad−1 nd−1 + · · · + a1 n + a0 ein
d mit ai ∈ R für 0 ≤ i ≤ d und ad > 0, dann gilt p(n) ∈ O(nd ).
Polynom in
Beweisen Sie: Für alle Funktionen
f
und
g,
die von
N
nach
R
O(max(f, g)).
b)
Beweisen Sie: Sei
n
∗
c)
vom Grad
Eine Funktion
f: N → R
Es gibt strikt positive monoton wachsende
g∈
/ O(f ).
f (n) > 0, für alle n ∈ N. Beweisen Sie:
Funktionen f und g , so dass f ∈
/ O(g) und
heiÿt strikt positiv, falls
Aufgabe 2 (Funktionen ordnen)
10 Punkte
Beweisen oder wiederlegen Sie für die Teilaufgaben (a) bis (e) die folgenden Aussagen:
1.
f ∈ O(g),
2.
f ∈ Ω(g).
Hinweis: Benutzen Sie entweder die Denitionen direkt, oder betrachten Sie den Grenzwert des
Quotienten der Funktionen und wenden Sie falls nötig den Satz von l'Hôpital an.
(a)
(b)
(c)
(d)
(e)
∗
f (n)
n+1
n
n
√
n
2n
g(n)
n + 1000
n log(n)
log(n)
(log(n))2
n2n
Aufgabe 3 (Pseudocodeanalyse)
(2+2+2+4)+(2+2+1) = 15 Punkte
1. Betrachten Sie den folgenden Algorithmus
N,
dem als Eingabe ein Array
chen Zahlen übergeben wird und der als Ausgabe die Zahl
x
A
aus
n
natürli-
liefert.
Algorithmus N(A)
Input: Array A der
Output: Zahl x
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
Länge
|A| = n
x := 0;
for i := 1 to n do
if A[i] > x then
x := A[i];
end if
if x > n then
x := n;
end if
end for
return x;
a) Was berechnet Algorithmus
N?
b) Analysieren Sie die Laufzeit des Algorithmus in Abhängigkeit von
n.
c) Bestimmen Sie die minimale und maximale Anzahl ausgeführter Zuweisungen für
Variable
x
in Algorithmus
N
in Abhängigkeit von
n
d) Wie lautet die Antwort auf a) - c), falls Sie zwischen Zeile 7 und Zeile 8 den Ausdruck
return
x;
einfügen? Begründen Sie Ihre Antwort. Markieren Sie Ihre Teillösungen
zu dieser Aufgabe mit a1), b1) bzw. c1).
2. Betrachten Sie den folgenden rekursiven Algorithmus
n
natürlichen Zahlen sowie zwei natürliche Zahlen
werden und der als Ausgabe die Zahl
x
i
P,
dem als Eingabe ein Array
und
j
mit
1≤i≤j ≤n
A
aus
übergeben
liefert.
Algorithmus P(A, i, j)
Input: Array A der
Output: Zahl x
1:
2:
3:
4:
5:
6:
Länge
|A| = n,
natürliche Zahlen
i, j
mit
1≤i≤j≤n
if j − i ≤ 1 then
x := A[i];
else
x := P(A, i + 1, j − 1);
end if
return x;
a) Was berechnet Algorithmus
natürliche Zahlen
i
und
j
P
mit
für ein gegebenes Array
A
mit
n
Elementen und zwei
1 ≤ i ≤ j ≤ n?
i und j . Geben Sie
wobei f nur von i und j
b) Analysieren Sie die Laufzeit des Algorithmus in Abhängigkeit von
also eine möglichst gute obere Schranke der Form
abhängt jedoch nicht von
O(f )
an,
n.
c) Analysieren Sie die Laufzeit des Algorithmus in Abhängigkeit von
n.
Aufgabe 4 (Algorithmenentwurf )
1. Seien
A
und
B
Arrays der Länge
(5+2+2)+(6+2) = 17 Punkte
n
von Zahlen aus
{1, . . . , n},
das heiÿt, in den Arrays
kann jede Zahl beliebig oft vorkommen, und es müssen nicht alle
n
verschiedenen Zahlen
vorkommen.
A
a) Entwerfen Sie einen möglichst ezienten Algorithmus, der bei Eingabe von
ausgibt, ob
A
und
B
und
B
die selben Zahlen (ungeachtet ihrer Häugkeit und Reihenfolge)
A = [1, 4, 3, 4] und B = [4, 1, 4, 3] soll zum Ergebnis
A = [1, 2, 3, 2] und B = [1, 2, 3, 4] dagegen zum Ergebnis false
enthalten. Beispiel: Die Eingabe
true,
die Eingabe
führen.
Notieren Sie diesen Algorithmus als Pseudocode.
Hinweis: Die Punktevergabe erfolgt gestaelt nach Ezienz bezüglich der Laufzeit.
Sie dürfen unbegrenzt zusätzlichen Speicherplatz verwenden.
b) Analysieren Sie die Laufzeit Ihres in Pseudocode vorgestellten Algorithmus.
c) Begründen Sie informell, warum das Problem nicht mit einer sublinearen Anzahl von
o(n)
liegen
{1, . . . , n}
genau
Elementzugrien gelöst werden kann (d.h. warum eine Lösung nicht in
kann).
2. Nun seien
A
und
B
Arrays der Länge
n,
die jeweils jede der Zahlen aus
einmal enthalten.
A
a) Entwerfen Sie einen möglichst ezienten Algorithmus, der bei Eingabe von
ein Array
C
der Länge
Für eine Zahl
Analog sei
iB
n
und
B
ausgibt, für das folgendes gilt:
i ∈ {1, . . . , n}
sei
iA
die Position, an der die Zahl
i
im Array
A
steht.
deniniert.
•
Falls
iA < iB ,
steht in
C
an Position
i
eine
1.
•
Falls
iA = iB ,
steht in
C
an Position
i
eine
2.
•
Falls
iA > iB ,
steht in
C
an Position
i
eine
3.
Beispiel : Die Eingabe
A = [2, 4, 3, 1]
und
B = [2, 3, 1, 4]
soll zum Ergebnis
[3, 2, 3, 1]
führen.
Notieren Sie diesen Algorithmus als Pseudocode.
Hinweis: Die Punktevergabe erfolgt gestaelt nach Ezienz bezüglich der Laufzeit.
Sie dürfen unbegrenzt zusätzlichen Speicherplatz verwenden.
b) Analysieren Sie die Laufzeit Ihres vorgestellten Algorithmus.
Herunterladen