U NIVERSIT ÄT-G ESAMTHOCHSCHULE PADERBORN FACHBEREICH 17 (M ATHEMATIK –I NFORMATIK ) Datenstrukturen und Algorithmen 3. Klausur SS 2000 Lösungsansätze Freitag, 9. März 2000 Name, Vorname: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Matrikelnummer: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Studiengang: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bitte Zutreffendes ankreuzen: Vordiplom: Schein: Bitte sorgfältig durchlesen und beachten! Legen Sie Ihren Studentenausweis auf den Tisch. Prüfen Sie die Vollständigkeit Ihres Klausurexemplares (Deckblatt, 6 Aufgaben). Schreiben Sie zu Beginn der Klausur auf das Deckblatt und jede weitere Seite DEUTLICH LESBAR Ihren Namen, Ihren Vornamen und Ihre Matrikelnummer. Blätter ohne diese Angaben werden nicht gewertet! Für Vordiplomkandidaten: Wer nicht ordnungsgemäß angemeldet ist oder hätte wissen müssen, daß sie/er nicht zugelassen ist, hat keinen Anspruch auf Anrechnung des Klausurergebnisses. Verwenden Sie keinen Rotstift, keinen Bleistift und kein eigenes Konzeptpapier. Benutzen Sie nur die zur Verfügung gestellten Blätter. Sollten Sie zusätzliche Blätter benötigen, so wenden Sie sich bitte an die Aufsicht. Werden zu einer Aufgabe mehrere Lösungen angegeben, so gilt die Aufgabe als NICHT gelöst. Als Hilfsmittel ist nur ein zweiseitig handbeschriebenes DIN A4 Blatt erlaubt. Täuschungsversuche können zum Nichtbestehen der Klausur führen. Aufgabe erreichbare Punkte 1 5 2 8 3 6 erreichte Punkte 1 4 8 5 6 6 5 38 Aufgabe 1 Simulieren Sie die Prozedur H EAPIFY () (siehe unten) auf folgender Eingabe (5P): A[1] 8 A[2] 7 H EAPIFY ( ) Für HEAPIFY ( A[3] 40 A[4] 33 A[5] 3 A[6] 20 A[7] 1 : HEAPIFY ( ) ) Stop; Falls )( "!#1$( %& ' %&$ ' 1( sonst: Sei so, dass -, ' (falls ' -,.$ ' 0/ , falls ' falls $ $ 1 Stop; falls $ $ ' : Vertausche $ und ' ; HEAPIFY ( 4' ); 1( 5( falls $ $ ' 2 : Vertausche $ 1 und ( ' HEAPIFY ( 4' ). +* 2 0/ 3 ; Aufgabe 2 Gegeben sei ein unsortiertes Array 6,1 in dem Werte abgespeichert sind. Zusätzlich wissen wir, dass jeder Wert maximal Positionen von der Position entfernt ist, an der er nach einer (aufsteigenden) Sortierung stehen muss. a) Modifizieren Sie Bubblesort so, dass dieses Zusatzwissen benutzt wird. (1P) b) Zeigen Sie dann mittels Induktion über die Anzahl der Vertauschungen, dass die Distanz eines Wertes zu seiner Position niemals den Wert überschreitet, wenn nur Vertauschungen von benachbarten ( ( Elementen 7. und 7 2 mit 7. 7 2 vorgenommen werden. (4P) ( Achtung: Vertauschung bedeutet hier natürlich, dass 78 und 7 ( 78 $ 7 . Sonst führt Bubblesort keine Vertauschung durch. 2 nur vertauscht werden, falls Lösungsidee: Induktionsanfang (noch keine Vertauschung) folgt direkt aus der Vorraussetzung für das Array . Induktionsschritt: Man hat ein Array gegeben, in dem kein Element mehr als von seiner letzendlichen Position entfernt ist. (Induktionsvorraussetzung) ( ( Angenommen 9, 7. und :;, 7 werden vertauscht, und danach steht auf Position 7 und damit mehr als Positionen von seiner eigentlich Position im sortierten Array entfernt. D.h. das im Zielarray an die Position 7$< oder davor gehört. Wo gehört : dann hin? Da :9=> ist gehört : im Zielarray noch vor . Dann erfüllte ( das Array aber schon vor der Vertauschung die geforderte Eigenschaft nicht, da : ja an Position 7 stand. Widerspruch. c) Zeigen Sie, dass die Anzahl der Inversionen in Array maximal ?A@BC"3 ist (eine Inversion ist ein Paar @ B7C3 mit =67 und $ 7. ). Sie dürfen dazu Aufgabenteil b) benutzen. (3P) Lösungsidee: (ohne Benutzung von b)) Ein Element Elemente hinter sich stehen haben. an Position 7 kann höchstens '. kleinere Beweis: Angenommen hat mehr als '. Elemente hinter sich stehen, die kleiner sind als . Dasjenige dieser Elemente, dass am weitesten rechts steht nennen wir : . Sei 78D die Position an der steht und 7FE die Position an der : steht. Dann gilt 7GEHI7#D ' , da ja mindestens ' Elemente zwischen und 2 : stehen. Bezeichne 1D und )E die endgültigen Position von bzw. : innerhalb des Arrays. Es gilt da : kleiner als ist. Man muß zeigen, dass entweder 1D0;7#D oder )E ;7#E ist. (dann hat man einen Widerspruch) E = D Fallunterscheidung: – Falls )D oder E nicht im Intervall 7GD B7#E# liegt, folgt der Widerspruch sofort. – Gelte also 7#E )E und )D 7#D E 7FD . Wenn man diese beiden Gleichung addiert erhält man 7 E 7#D '. . Oben hatten wir aber schon gesehen, dass 7 E 7#D '. größer als ' sein muß. Also können nicht beide Gleichungen gelten. Da also kein Element mehr als ' kleinere Elemente hinter sich stehen hat kann die Anzahl der Inversionen nicht größer als 'C sein. Aufgabe 3 Entwickeln Sie eine Datenstruktur (hier ist kein Pseudocode für die einzelnen Operationen verlangt!), die die folgenden Operationen in Laufzeit ?A@ H"3 unterstützt ( ist die Anzahl der Elemente, die gerade in der Datenstruktur gespeichert sind): (6 P) )3 : Eine Zahl wird in die Datenstruktur eingefügt D ELETE @ )3 : Eine Zahl , die sich bereits in der Datenstruktur befindet, wird aus der DatenI NSERT @ struktur gelöscht F3 : Die Anzahl der Zahlen in der Datenstruktur, deren Wert zwischen ) wird zurückgegeben. C OUNT @B1 (o.b.d.A. und liegt Lösungsidee: Man kann einen AVL-Baum nehmen, bei dem man sich bei jedem Knoten zusätzlich merkt wie viele Elemente im linken und rechten Teilbaum gespeichert sind. Man muß argumentieren, dass man diese Datenstruktur bei einem I NSERT oder D ELETE in Zeit ?A@ H"3 wieder aktualisieren kann. (Insbesondere muß man zeigen, dass man die zusätzlichen Informationen bei einer Rotation in konstanter Zeit berechnen kann.) C OUNT @+1 F3 kann man dann folgendermaßen implementieren. Man zählt erst wieviele Elemente kleiner oder gleich sind. Dann zählt man wieviele Elemente kleiner oder gleich sind. Die Differenz dieser beiden Werte liefert C OUNT @+1 F3 . COUNT LESS OR EQUAL @)4 3 !#"" &$ %'() %./0%12 3 40576 if ( ) return ; return COUNT if ) ( ( else return ) LESS OR EQUAL @ )+*-, 4 3 COUNT LESS OR EQUAL @ 8:91;,#4 3 Aufgabe 4 < >= :? @ H $3 ein zusammenhängender Graph mit Knoten und mindestens Kanten und KantengeSei wicht @ G3 für jede Kanten . Seien weiterhin die Kantengewichte paarweise verschieden. Der unten angegebene Algorithmus berechnet einen zweitkleinsten Spannbaum von . @ >A AB? < a) Analysieren Sie die Laufzeit des Algorithmus im ? -Kalkül. Nehmen Sie an, dass ein minimaler 3 berechnet wird. (1P) Spannbaum in Zeit @ C D = E ? ? Lösungsidee: Es gibt eine Schleife, die über alle Kanten läuft ( Durchläufe). Bei jedem Schleifendurchlauf wird einmal auf Zusammenhang getestet und ein MST wird berechnet. Test auf Zu3 durchgeführt werden, wird also durch die Laufzeit des MSTsammenhang kann in Zeit ?A@ Algorithmus ( @ @ 3 ) dominiert. Insgesamt hat man also Laufzeit ?A@ @ 33 . C D =F? E ? : ? D ?'GHC D = E ? 3 b) Beweisen Sie die Korrektheit des Algorithmus. (5P) Lösungsidee: < – Der Algorithmus berechnet Gewichte für ganz viele verschiedene Spannbäume von und speichert diese in dem Feld . Man muß zeigen, dass nach dem Durchlauf der Schleife sowohl das Gewicht eines kleinsten als auch das Gewicht eines zweitkleinsten Spannbaums enthält. Dann wird durch die Wahl von und die Berechnung von ein zweitkleinster Spannbaum ausgegeben. (Da durch die paarweise verschiedenen Kantengewichte der Wert eines minimalen Spannbaums eindeutig ist enthält das Feld mit zweitkleinstem Gewicht das Gewicht eines zweitkleinsten Spannbaums) A C 3 4 < C 3 4 A ? C 3 4 ein minimaler Spannbaum. Dann existiert eine Kante , die nicht in enthal– Sei ten ist. ( hat mindestens Kanten, aber nur > viele.) ist auch ein minimaler Spannbaum für den Graphen @ ! * 3 . @ 3 enthält nach Ende der Schleife den Wert eines minimalen Spannbaums. < C 3 4 = D? A < C D6 3 4 C 34 < = D? A A < A ein zweitkleinster Spannbaum in . Dann enthält dieser Spannbaum eine Kante , – Sei die nicht in liegt, sonst wären beide Bäume gleich. Wenn ich diese Kante aus entferne ( @ ! * 3 ) und einen minimalen Spannbaum berechne, sollte entweder herauskommen, oder ein Spannbaum mit gleichem Gewicht. (sonst wäre kein Spannbaum mit zweitkleinstem Gewicht) Also enthält @ 3 nach dem Durchlauf der Schleife das Gewicht eines zweitkleinsten Spannbaums. C D6 3 4 >A c) Finden Sie einen verbesserten Algorithmus mit Laufzeit ?A@ < C :6 3 4 GHC@D = ? 33 . (2P) Lösungsidee: Man kann am Anfang des Algorithmus das Gewicht eines minimalen Spannbaums berechnen und in einfügen. Danach muß man nur noch nacheinander die Kanten von @ ! *G3 einen MST berechnen. entfernen und für C 3 4 C 34 A < = D? A >@ =H:?3 ) < A ? do < @>=H:? !EA*G3 if < ist verbunden then FA = Wert des MST von < else FA / Sei A eine Kante, so dass FA zweitkleinstes Gewicht im Feld < @ = D? ! A *G3 return MST @< 3 A LGORITHMUS (G RAPH for each edge hat Aufgabe 5 Die folgenden Teilaufgaben geben jeweils 2 Punkte: a) Fügen Sie hintereinander und in dieser Reihenfolge die Zahlen 13, 21, 4, 9, 25, 88, 7 per Hashing mit Linear Probing in ein Array $ , ein! Die Hashfunktion ist dabei durch @ 13 MOD gegeben: A[0] A[1] A[2] A[3] A[4] A[5] 4 A[6] A[7] b) Sei eine Konstante. Bestimmen Sie das größte für das ?A@H"3 wahr wird: 0 Hinweis: Für jedes gilt 9 2 / C c) Ein rekursiver Algorithmus hat die Rekursionsformel $@ C@ "3 @ G3 @ "3 @ "3 "3 Hinweis: Fall 1. des Mastertheorems. 5 . Deshalb kommt nur '&C$@ 3 @ ( "3 in Frage. mit C@ G3 . Es gilt @ 1@ "3&3 Aufgabe 6 Die folgenden Aufgaben geben pro richtige Antwort einen Punkt. Für eine falsche Antwort wird ein Punkt abgezogen! Falls keine Antwort angekreuzt wird, so wird auch kein Punkt abgezogen. Weniger als 0 Punkte können bei dieser Aufgabe nicht erreicht werden. Elementen kann das -kleinste Element in ?A@ a) In einem Heap mit Ja 3 Zeit gefunden werden. Nein Hinweis: Die kleinen Elemente in einem Heap können fast überall stehen. H"3 Knoten hat im Durchschnitt ?A@ b) Ein AVL-Baum mit Ja Blätter. Nein Hinweis: Ein balancierter Baum sollte schon linear viele Blätter haben. c) ' 24 @ "3 Hinweis: ' d) Ja 24 Nein ' 2 ' @B' 2 3 @+) 3 -Bäume brauchen im Mittel ca. 1.44 viele Rotationen beim Einfügen. Ja Hinweis: Nein @ ) 3 -Bäume machen überhaupt keine Rotationen. e) Topologisches Sortieren ist ein optimales Verfahren zur Sortierung von natürlichen Zahlen. Ja Nein Hinweis:Topologisches Sortieren hat nichts mit dem Sortieren von Zahlen zu tun. 6