Informatik III Universität Augsburg Wintersemester 2016/17 Prof. Dr. W. Vogler Moritz Laudahn, M.Sc. Aufgabenblatt 4 Aufgabe 1 Geben Sie einen Entscheidungsbaum für das im Skript beschriebene Insertion Sort Verfahren für eine Eingabe bestehend aus drei verschiedenen Zahlen an. (8P) Aufgabe 2 Ähnlich der O-Notation sei definiert A(g) = {f : IN0 → IN0 | ∀c ∈ Q+ , d ∈ Z ∃n ∈ IN : f (n) ≤ cg(n) + d}. Finden Sie Funktionen f, g und h für die gilt f ∈ A(g) und g ∈ A(h) und beweisen Sie die beiden Aussagen. (12P = 6P je bewiesener Aussage) Aufgabe 3 Bestimmen Sie die Laufzeit von Programm5. Geben Sie möglichst enge asymptotische obere und untere Schranken an. (6P) (1) void Programm5(int[ ] A) { (2) for (int i = 1; i < A.length; i++) { (3) for (int j = 0; j < i; j++) (4) System.out.println(A[j]); (5) for (int k = A.length − 1; k > A.length − i; k- -) (6) System.out.println(A[k]); (7) } (8) } 1 Aufgabe 4 Analog zur Max-Halde ist eine Min-Halde ein vollständig ausgeglichener Baum mit der Eigenschaft, dass die Markierung jedes Knotens immer kleiner gleich den Markierungen seiner Kinder ist. Das Minimum befindet sich somit immer an der Wurzel. Sei H eine Min-Halde mit n = 2i − 1 ≥ 15 paarweise verschiedenen Elementen. (16P) a) An wie vielen verschiedenen Positionen in H könnte sich das zweitkleinste Element befinden? Wo? b) An wie vielen verschiedenen Positionen in H könnte sich das drittkleinste Element befinden? Wo? c) Geben Sie eine Funktion an, die aussagt an wie vielen verschiedenen Positionen in H sich das j-kleinste Element befinden könnte, wenn 2 ≤ j ≤ i. (Begründung!) d) An wie vielen verschiedenen Positionen in H könnte sich das größte Element befinden? Wo? e) Seien die Position des kleinsten, des zweitkleinsten und des drittkleinsten Elements bekannt. An wie vielen verschiedenen Positionen kann sich nun das viertkleinste Element noch befinden? (Begründung!) 2 Aufgabe 5 Erweitern Sie derart das folgende Programm um höchstens 500 Zeichen, dass daraus eine funktionierende Warteschlange mit den Methoden Queue (n), deq ( ), enq (x), isEmpty ( ) und isFull ( ) wird, die – wie in der Vorlesung beschrieben – die Elemente der Warteschlange in einem Array elem speichert. Unzulässige Aufrufe der Methoden sind mit einer RuntimeException abzufangen. (12P) public class Queue { private int[] elem; public Queue(int n) { // Leere Warteschlange fuer bis zu n Elemente erzeugen. ... } public int deq() { // Erstes Element der Liste zurueckgeben. ... } public void enq(int x) { // Element hinten einfuegen. ... } public boolean isEmpty() { // Testen, ob die Liste leer ist. ... } public boolean isFull() { // Testen, ob die Liste voll ist. ... } } Informationen: • Abgabe: Bis spätestens Donnerstag, den 17.11.2016, um 12:00 im entsprechend beschrifteten Briefkasten. • Die Vorlesung am 10.11.2016 entfällt. 3