Sie sind auf Seite 1von 2

Prof. Dr. Christian Scheideler 19.

April 2024
Abgabe: 01. Mai 2024, 23:59 MESZ (in PANDA)

Datenstrukturen und Algorithmen


Sommersemester 24
Heimübung 2

Hinweise: Geben Sie die Lösung online über PANDA als PDF ab. Eingescannte, handschriftliche
Lösungen sind ebenfalls möglich, solange sie gut lesbar sind. Unleserliche Abgaben führen zu
Punktabzug. Lösungen sind in Abgabegruppen von 2-3 Personen einzureichen. Schreiben Sie die
Namen und Uni-Mail-Adressen aller Gruppenmitglieder gut sichtbar in Ihre Abgabe. Für Plagiate,
Einzelabgaben und Abgaben in mehr als einer Gruppe gibt es für den gesamten Zettel null Punkte.

AUFGABE 1 (4 Punkte):
Seien f, g : N → N monoton wachsende Funktionen. Beweisen Sie die folgenden Aussagen mit
Hilfe der Definitionen 2.6 - 2.9:

a) f (n) = Ω(g(n)) ⇒ g(n) = O((f (n))2 )

b) Sei h : N → N eine weitere monoton wachsende Funktion. Zudem sei h(n) = O(f (n) +
g(n)) und g(n) = O(f (n)). Dann gilt auch h(n) = O(f (n)).

AUFGABE 2 (8 Punkte):
Beschreiben Sie in Pseudocode einen Algorithmus mit Laufzeit O(n), der bei Eingabe eines Arrays
A[1, . . . , n] (mit ganzen Zahlen als Einträgen) die maximale Länge eines Teilarrays mit absteigen-
den Zahlen berechnet.
Beispiel: In [5, 1, 3, 2, 1, 3, 6, 4, 3, 2, 4, 2, 1] ist das Ergebnis 4, da das längste Teilarray mit absteigen-
den Zahlen das Array mit den Einträgen 6, 4, 3, 2 ist.
Zeigen Sie die Korrektheit ihres Algorithmus und die Laufzeitschranke O(n). Formulieren und
beweisen Sie für den Korrektheitsbeweis eine geeignete Schleifeninvariante.

AUFGABE 3 (8 Punkte):
Ordnen Sie die folgenden fünf Funktionen in aufsteigender Reihenfolge nach ihrem asymptoti-
schen Wachstum bezüglich der O-Notation und beweisen Sie ihre Ergebnisse.
√ √
log( n)
3n log(n) 42 n 220 n15 6n−1

AUFGABE 4 (5 Punkte):
Betrachten Sie den folgenden Sortieralgorithmus.
Algorithm 1 Sort A[1 . . . n]:
1: for i ← 1 to length(A) − 1 do
2: for j ← length(A) downto i + 1 do
3: if A[j − 1] > A[j] then
4: A[j − 1] ↔ A[j]
5: end if
6: end for
7: end for

a) Beschreiben Sie intuitiv in Textform, wie der Algorithmus funktioniert.

b) Zeigen Sie, dass der Algorithmus korrekt ist, dass also nach Terminierung die Elemente in
A aufsteigend sortiert sind.
Hinweis: Bestimmen Sie zunächst eine geeignete Invariante für die innere Schleife (Schritte
2–4). Finden Sie dann mit deren Hilfe eine Invariante für die äußere Schleife (Schritte 1–4).

c) Bestimmen Sie die konkrete Anzahl an Basisoperationen bei Eingabe eines Arrays der Größe
n. Geben Sie anschließend die worst-case Laufzeit im Θ-Kalkül an.

Das könnte Ihnen auch gefallen