Prof. Dr. R. Schrader Ch. Hagemeier SS 2002 3. Übung zur Informatik I Abgabe: 7. und 8.5.2002 in den Übungen Aufgabe 8: (5+1+4+2+3 Punkte) Gegeben sei ein Feld a[0], a[1], . . . , a[N ] mit a[0] = −1 und a[i] ∈ IIN für i = 1, . . . , N . Betrachten Sie das folgende Programmstück: Sortieren(int a[], int N) { int i, j, hilfe; for (i = 2; i <= N; i++) { hilfe = a[i]; j = i; while (a[j-1] > hilfe) { a[j] = a[j-1]; j = j - 1; } a[j] = hilfe; } } a) Beschreiben Sie mit Worten, wie der obige Algorithmus funktioniert, und was er leistet. Wozu dient die Vereinbarung a[0] = −1, wie könnte man diese umgehen? Zählen Sie die maximale und minimale Anzahl der durchgeführten Vergleiche Vmax (N ) bzw. Vmin (N ) und die maximale und minimale Anzahl der Bewegungen von Datensätzen Bmax (N ) bzw. Bmin (N ). b) Das Paar (i,j) ist eine Inversion, falls i < j und a[i] > a[j] ist. Wie korrespondieren die Anzahl der Inversionen der Eingabefolge und die Laufzeit des Algorithmus? c) Geben Sie für die nachstehenden Zahlenfolgen die Anzahl der Vergleiche und die Anzahl der Bewegungen in asymptotischer Notation an, und begründen Sie Ihre Aussagen. (a) 1, N2 + 1, 2, N2 + 2, . . . , N2 , N (N gerade) (b) N, 1, N − 1, 2, N − 2, 3, . . . , N − (c) N, 1, 2, 3, . . . , N − 1 (d) 2, 3, 4, . . . , N, 1 N 2 + 1, N2 (N gerade) d) Ein Sortieralgorithmus heißt stabil, wenn die Sortierreihenfolge von Elementen mit gleichem Sortierschlüssel während des Verfahrens nicht vertauscht wird. Untersuchen Sie den Algorithmus auf Stabilität, und überlegen Sie ein Beispiel, für das die Stabilität beim Sortieren ausgenutzt wird. e) Was passiert, wenn jedes Element der zu sortierenden Menge nicht nur aus dem Schlüssel, nach dem sortiert wird, sondern aus einem umfangreichen Datensatz besteht? Modifizieren Sie das Verfahren entsprechend, um dieses Problem effizienter zu lösen. Aufgabe 9: (3 Punkte) Warum ist folgende Argumentation falsch? T sei ein binärer Baum, auf dessen Knoten in symmetrischer Durchmusterung ein Verfahren durchgeführt wird, das in jedem Knoten höchstens 5 Elementarschritte benötigt. Wir zeigen mit vollständiger Induktion, daß die Gesamtlaufzeit für den Baum O(1) berägt: • Die Aussage ist trivialerweise erfüllt, wenn der Baum nur aus einem Knoten besteht. • T sei ein Binärbaum mit n Knoten. Er besteht aus der Wurzel r, dem linken Teilbaum Tl und dem rechten Teilbaum Tr . Nach Induktionsannahme betragen die Laufzeiten für Tl und Tr jeweils O(1). Also erhält man eine Gesamtlaufzeit für T von O(1) + 5 + O(1) = O(1). Aufgabe 10: Durchmusterung von Binärbäumen (2+6 Punkte) a) Bei der Durchmusterung eines Binärbaumes in Präordnung werden die Knoten in der Reihenfolge OBTHKENSUC durchlaufen, während sich bei der symmetrischen Durchmusterung des Baumes die Reihenfolge HTBEKNOUSC ergibt. Zeichnen Sie einen Binärbaum, dessen Durchmusterung des Baumes die Zeichenfolgen liefert. Ist die Lösung eindeutig? b) Zeigen Sie, daß man einen binären Baum immer rekonstruieren kann, wenn die Durchmusterungsreihenfolgen in Präordnung und der symmetrischen Durchmusterung bekannt sind. Was passiert, wenn man Präordnungs- und Postordnungsreihenfolge beziehungsweise Postordnungsreihenfolge und symmetrische Durchmusterungsfolge kennt?