1 2

Werbung
Übung Algorithmen und Datenstrukturen
Sommersemester 2015
Marc Bux, Humboldt-Universität zu Berlin
Organisatorisches
• Übungsgruppen, die sich über mehrere Termine erstrecken,
sind nicht zulässig!
• Weiterleitung der Nachrichten bei GOYA einrichten!
• Fragen?
2
Agenda
1. Vollständige Induktion und Rekursive Algorithmen
2. Besprechung des ersten Übungsblatts (Fortsetzung)
3. Vorstellen des zweiten Übungsblatts
3
Vollständige Induktion
• Beweismethode für den Beweis einer Aussage 𝐴(𝑛) über
natürliche Zahlen, d.h. 𝑛 ∈ ℕ
• Induktionsanfang (IA): Beweise, dass A(0) wahr ist
• Induktionsschritt (IS): Beweise, dass wenn 𝐴(𝑘) wahr ist (IV),
auch 𝐴(𝑘 + 1) (IB) wahr sein muss.
 Induktionsvoraussetzung (IV): Die Aussage 𝐴(𝑘) ist wahr für ein
bestimmtes 𝑘 ∈ ℕ
 Induktionsbehauptung (IB): Die Aussage 𝐴(𝑘 + 1) ist wahr
• Induktionsschluss: Gültigkeit der Aussage 𝐴(𝑛) für alle 𝑛 ∈ ℕ
folgt aus IA und IS
• vgl. Dominoeffekt
• Wichtiges Werkzeug für Korrektheitsbeweise rekursiver
Algorithmen
4
Übungsaufgabe zur Vollständigen Induktion
𝑖
2
5
Agenda
1. Vollständige Induktion und Rekursive Algorithmen
2. Besprechung des ersten Übungsblatts (Fortsetzung)
3. Vorstellen des zweiten Übungsblatts
6
Aufgabe 3-2
7
Aufgabe 4-2
8
Agenda
1. Vollständige Induktion und Rekursive Algorithmen
2. Besprechung des ersten Übungsblatts (Fortsetzung)
3. Vorstellen des zweiten Übungsblatts
9
Aufgabe 1
10
Aufgabe 2
11
Übungsaufgabe zu Aufgabe 2
12
Aufgabe 3
13
Finden des Majority-Elements
• Gegeben: Array A mit n Zahlen
 Zugriff auf Array nur mit Hilfe der Operation EQUAL(x, y)
 gibt True zurück, falls A[x] = A[y], andernfalls False
• Aufgabe: Prüfe, ob bel. Element x in A mehr als n/2mal vorkommt (d. h. Hx(A) > n/2)
• Beispiel:
0
1
2
3
4
5
6
7
8
9 10 11 12 13 14 15
2
3
7
2
5
2
9
3
3
2
0
1
2
3
4
5
6
7
8
9 10 11 12 13 14 15
2
3
7
7
2
5
2
2
3
2
0
1
2
3
4
5
6
7
8
9 10 11 12 13 14 15
2
3
3
2
3
2
3
3
3
2
2
2
2
5
5
3
2
2
2
4
4
3
2
2
2
2
2
2
H2(A1) = 8
kein Majority-El.
H2(A2) = 9
→2
H2(A3) = 8
H3(A3) = 8
kein Majority-El.
14
Naive Lösung
• Algorithmus: Majority mit Zählen
• if |A| = 1 then
 return A[0]
• else
 for i = 0 to ⌈n/2⌉ do
 c←1
 for j = i + 1 to n − 1 do
• if EQUAL(i, j) then c ← c + 1
 if c > n/2 then return A[i]
• Laufzeit
 Annahme: Kosten von EQUAL konstant
 Θ(n2)
 (⌈n/2⌉ + 1)-mal äußere For-Schleife
 Jeweils mindestens ⌊n/2⌋- und höchstens (n − 1)-mal EQUAL
15
Erinnerung: Divide & Conquer
• Idee
 Teile Problem in Teilprobleme auf (divide)
 Löse diese rekursiv (conquer)
 Setze aus den Lösungen der Teilprobleme die Lösung für das
Gesamtproblem zusammen (merge)
• Darstellung als Rekursionsbaum
 𝑇(𝑛) = Anzahl Operationen für Eingabe der Größe 𝑛
T(n)
divide
divide
Kosten pro innerer Knoten:
divide + merge
merge
T(m)
T(m)
…
…
wichtig: 𝑚 < 𝑛
T(m)
merge
T(2)
T(2)
T(2)
Abbruch, wenn
Eingabe klein genug
…
T(2)
T(2)
Kosten pro Blatt:
conquer
T(2)
16
Beispiel
2
1
2
3
4
5
6
7
8
9 10 11 12 13 14 15 16
2
3
7
7
2
5
2
2
3
2
2
5
2
4
2
2
null
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
2
3
7
7
2
5
2
2
3
2
2
5
2
4
2
2
null
1 2
2 3
null
1 2
2
2
2
3
4
1
2
3
4
7
7
2 5
null
1 2
2
2
3
2
7
1
2
7
7
3 7
2
1
1
1
7 2
1
1
2
3
7
7
2
5
1
2
2
2
2
5 2
1
1
2
1
5
2
2
null
1 2
3 2
null
1 2
3
2
3
4
1
2
3
4
2
5
null
1 2
2 4
null
1 2
2
2
2
3
2
5
2 2
2
4
5 2
1
2
2
2
2
4 2
2
1
1
1
1
1
1
1
1
3
2
2
5
2
4
2
2
17
Aufgabe 4
18
Ausblick: Nächste Woche
•
•
•
•
•
Rückgabe der Abgaben zum ersten Übungsblatt
Besprechung der Bewertung zum ersten Übungsblatt
Besprechung der Lösungen des zweiten Übungsblatts
Vorstellen der Aufgaben des dritten Übungsblatts
Fragen?
19
Herunterladen