Blatt5 - TU Ilmenau

Werbung
K
TU Ilmenau, Fakultät IA
Institut TI, FG Komplexitätstheorie und Effiziente Algorithmen
Prof. Dr. (USA) M. Dietzfelbinger, Dr. M. Brinkmeier, Dr. E. Hübel
http://www.tu-ilmenau.de/fakia/afs ws07.html
Algorithmen und Datenstrukturen, SS08
Übungsblatt Blatt 05
für die 20./21. Woche 2008
Aufgabe 1 (Dynamische Mengen)
Mengen über einem Universum U seien als aufsteigend sortierte Listen mit Sentinel (Schlusselement mit Eintrag ∞) implementiert.
Geben Sie (in Pseudocode) ein Verfahren zur Implementierung der Operationen intersect(S1 , S2 )
und symdiff (S1 , S2 ) an, das Laufzeit O(n1 + n2 ) hat, wo n1 = |S1 | und n2 = |S2 |.
Aufgabe 2 (Binärbäume)
Beweisen Sie die folgenden Aussagen für jeden binären Baum T mit N ≥ 1 äußeren Knoten.
(a) T hat genau n = N − 1 innere Knoten.
(b) Auf Level 0, 1, . . . , l zusammen liegen höchstens 2l Blätter (äußere Knoten).
Aufgabe 3 (Listenimplementierung Dünn besetzter Matrizen“)
”
Implementieren Sie die Datenstruktur Dünn besetzte Matrix“.
”
Erklärung:
Es gibt Fälle, in denen man vorab weiß, dass eine ziemlich große Matrix ziemlich wenige Einträge
enthält, die ungleich Null sind. Dies kommt z.B. bei Berechnungen in der Wettervorhersage vor.
In so einem Fall wäre es unsinnig, die Matrix als zweidimensionales Array abzuspeichern, da
dies Speicherplatz für alle Nullen beansprucht. Eine Alternative besteht darin, für eine (m × n)Matrix A ein Array A der Länge m anzulegen, wobei der i-te Arrayeintrag auf den ersten Eintrag
einer linearen Liste Li verweist, die die i-te Matrixzeile darstellt. In dieser Liste Li gibt es für
jeden Matrixeintrag aij 6= 0 einen Knoten, der die Daten j und aij enthält. Die Liste ist gemäß
den Indizes j aufsteigend sortiert.
(a) Implementieren Sie die folgenden Operationen in dieser Darstellung für quadratische
Matrizen A, B ∈ n×n , c ∈ und einen Vektor x ∈ n , als Array gegeben.
(Nulleinträge im Ergebnis sollen weggelassen werden!):
Q
Q
Q
a) Skalarmultiplikation C := c A
b) Matrixaddition C := A + B
c) Transposition C := AT
(!)
d) Matrix-Vektor-Multiplikation y := A x
(b) Begründen Sie, weshalb in Ihrer Implementierung die Rechenzeit für jede der Operationen
O(n + e) ist, wobei e = Anzahl der Matrixeinträge 6= 0.
2
Algorithmen und Datenstrukturen, SS08
Übungsblatt Blatt 05
Aufgabe 4 (Binärbäume)
(a) Beschreiben Sie, wie ein binärer Baum mit n inneren Knoten (leere Blätter) aussieht, der
Tiefe n − 1 hat!
Wenn man von den Knotenbeschriftungen absieht, wieviele verschiedene Formen kann ein
solcher Binärbaum haben?
(b) Beschreiben Sie, wie ein binärer Baum mit n = 12 m (m + 1) ≈
√
Blätter) aussehen könnte, der Tiefe m (≈ 2n) hat.
m2
2
inneren Knoten (leere
(c) Man kann auf den Knoten eines Binärbaums T eine Orientierung einführen.
Wir sagen, dass Knoten v links von“ Knoten w ist, wenn es einen inneren Knoten u in T
”
gibt, so dass v im linken Unterbaum von Tu und w im rechten Unterbaum von Tu ist.
Zeigen Sie: Wenn u, v Knoten sind, dann trifft genau eine der folgenden fünf Möglichkeiten
zu:
1.) u = v
2.) u ist echter Nachfahr von v
3.) v ist echter Nachfahr von u
4.) u ist links von v
5.) v ist links von u
Welche dieser Möglichkeiten zutrifft, kann man auch an der Reihenfolge ablesen, in der u
und v im Präorder- und im Postorder-Durchlauf von T besucht werden.
Wie geht das?
Herunterladen