Aufgabe 1 Aufgabe 2

Werbung
Übungen zu Algorithmik I
Wintersemester 2004/05
Prof. Dr. Herbert Stoyan, Dr.-Ing. Bernd Ludwig
Aufgabenblatt 11 vom 10.01.2005
Aufgabe 1
Binärbäume
28 Punkte
1. Beantworten Sie die nachstehenden Fragen zu diesem Binärbaum!
A
B
C
D
E
F
G
H
Abgabe:
(a) Wie heißt die Wurzel?
Aufgabe-11-1.pdf
Abgabe:
(b) Wie viele Knoten hat der Baum?
Aufgabe-11-1.pdf
Abgabe:
(c) Wie viele Blätter hat der Baum?
Aufgabe-11-1.pdf (d) Welche Höhe hat der Baum?
Abgabe:
Aufgabe-11-1.pdf (e) Welche Höhe hat der Baum mit Wurzel F?
Abgabe:
Aufgabe-11-1.pdf (f) Welche Kinder hat C?
Abgabe:
Aufgabe-11-1.pdf (g) Welche Vorgänger hat F?
Abgabe:
Aufgabe-11-1.pdf
Aufgabe 2
Konstruktion von Binärbäumen
Tafelübung
1. Konstruieren Sie einen Binärbaum der Höhe 3 mit 8 Knoten!
2. Können Sie auch einen Binärbaum der Höhe 2 mit 8 Knoten konstruieren?
3. Welche Höhe muss ein Binärbaum mindestens haben, wenn er n Knoten hat (1 ≤ n ≤
20)? Erstellen Sie durch Ausprobieren eine Tabelle!
1
4. Leiten Sie aus der Tabelle eine Vermutung ab, wie man die Höhe eines Binärbaums mit
n Elementen errechnet und beweisen Sie ihre Vermutung mit vollständiger Induktion!
Aufgabe 3
Höhe, Blätter und Knoten von Binärbäumen
28 Punkte
Wir bezeichnen mit L(T ) die Zahl der Blätter des Binärbaums T , mit N (T ) die Zahl
seiner Knoten und mit H(T ) seine Höhe.
Abgabe:
1. Beweisen Sie mit vollständiger Induktion:
Aufgabe-11-3.pdf
L(T ) ≤
N (T ) + 1
2
Abgabe:
2. Beweisen Sie mit vollständiger Induktion:
Aufgabe-11-3.pdf
N (T ) + 1
≤ 2H(T )
2
Abgabe:
3. Wieviele Knoten, Blätter und innere Knoten hat demzufolge ein vollständig besetzter
Aufgabe-11-3.pdf
Binärbaum?
Aufgabe 4
Korrektheit von Programmen
Tafelübung
1. Finden Sie eine Schleifeninvariante I für das nachstehende Programm! Geben Sie an,
welche Vorbedingung vor dem ersten Eintritt in die Schleife, und welche Zusicherung
nach Durchlauf der Schleife gilt! Werden tatsächlich zwei Zahlen a und b multipliziert?
int mult( int a, int b ) {
int x, y, z;
x = a; y = b; z = 0;
while( x > 0 ) {
if( odd( x ) ) z = z+y;
y = y*2;
x = x/2;
}
return z;
}
2. Beantworten Sie dieselben Fragen wie in der obigen Aufgabe f ür folgendes Programm!
2
int power( int a, int b ) {
int x, y, z;
x = a; y = b; z = 1;
while( y > 0 ) {
if( odd( y ) ) z = z*x;
y = y/2;
x = x*x;
}
return z;
}
Aufgabe 5
Korrektheit von Programmen
28 Punkte
Abgabe:
1. Beantworten Sie dieselben Fragen wie in der obigen Aufgabe f ür folgendes Programm!
Aufgabe-11-5.pdf
int fib( int n ) {
int a, b, i;
a = 0; b = 1; i = 0;
while( i < n ) {
i = i+1;
b = a+b;
a = b-a;
}
return a;
}
Aufgabe 6
Prioritätswarteschlangen
Tafelübung
In dieser Aufgabe wird eine Prioritätswarteschlange mit Hilfe einer Halde realisiert.
Indem der Knoten mit der höchsten Priorität aus der Halde entfernt wird, erfüllt man
genau das Axiom A1 für Prioritätswarteschlangen aus der Vorlesung.
1. Führen Sie folgende Operationen mit der Prioritätswarteschlange Patients durch:
(a) Patients.Initialize
(b) Patients.enq((a,40))
3
(c) Patients.enq((b,35))
(d) Patients.enq((c,40))
(e) Patients.enq((d,83))
(f) Patients.deq()
(g) Patients.deq()
2. Wann wird das Element a entnommen, wann c?
4
Herunterladen