Datenstrukturen Sommersemester 2014 Prof. Dr. Georg Schnitger Dipl.-Inf. Bert Besser Arbeitsgruppe Theoretische Informatik, Institut für Informatik Übungsblatt 5 Ausgabe: 17.06.2014 Abgabe : 24.06.2014 Aufgabe 5.1. (1+ 25 + 25 ) Gegeben sei das Array Heaps (Skript: Kapitel 3.5) H = [9, 7, 8, 6, 5, 3, 0, 1, 2, 4]. a) Zeichne den binären Baum des Heaps b) Zeige das Array c) Zeige das Array vor Vorlesungsbeginn H H H. delete_max(). Aufruf von insert(9). nach einem Aufruf von nach einem folgenden Aufgabe 5.2. (2+4) Heaps, die zweite (Skript: Kapitel 3.5) Wir wollen Heaps zu einer mächtigeren Datenstruktur erweitern und zwei neue Funktionen implementieren. Nimm an, dass eine Teilmenge der Prioritäten a) Beschreibe wie für eine Priorität p die Position von p gespeichert wird. im Heap-Array in konstanter Zeit 0 zurückgegeben werden. Hinweis: Verändere die Funktionen repair_up() und repair_down() so, dass deren asym- zurückgegeben werden kann. Ist p {1, . . . , n} nicht enthalten, soll ptotische Laufzeit unverändert bleibt. Nimm an, dass alle Operationen auf einem anfänglich leeren Heap stattnden. b) Beschreibe einen Algorithmus zur Ausgabe aller Prioritäten x mit x≥p für einen Parameter groÿen Prioritäten im Heap, also solcher p. Die Laufzeit soll linear in der Anzahl groÿer Prioritäten sein, die Funktion darf also nur Zeit O(|{x ∈ H : x ≥ p}|) beanspruchen. Aufgabe 5.3. (2+2+2) Wir wollen die Schlüsselmenge Binäre Suchbäume (Skript: Kapitel 4.1) S = {1, 2, 3, 4, 5, 6, 7} in einem binären Suchbaum verwalten. a) Führe auf einem anfangs leeren Baum die Operationen insert(4), insert(2), insert(7), insert(1), insert(3), insert(5) und insert(6) aus und stelle den resultierenden Baum bildlich dar. Führe dann die Operationen remove(3) und remove(4) aus und stelle wieder das Ergebnis dar. b) Wie viele binäre Suchbäume gibt es, die c) Wie viele binäre Suchbäume gibt es, die Aufgabe 5.4. (6) S S speichern und die Tiefe 6 haben? speichern und die Tiefe 2 haben? Im Kreis (Skript: Kapitel 3.4.3) Um die Parkplatznot zu mindern, beschlieÿt die Stadtverwaltung alle Straÿen in Einbahnstraÿen umzuwandeln, wobei Autofahrer allerdings weiterhin von jedem Ort zu jedem anderen gelangen G, in dem 0 Graph G stark können sollen. Wir interpretieren also das Straÿennetz als ungerichteten Graphen jeder Kante eine Richtung so zugewiesen werden soll, dass der resultierende zusammenhängend ist. Entwerfe einen möglichst ezienten Algorithmus, der falls möglich für einen ungerichteten Eingabegraphen G eine gerichtete Version Hinweis: Nimm an, dass G G0 mit den genannten Eigenschaften ausgibt. zusammenhängend ist. Zeige zuerst: wenn ein stark zusammenhän- gendes Einbahnstraÿennetzes G0 konstruiert werden kann, dann besitzt G keine Brücke. Um die Kanten zu richten, nutze Dein Wissen über Tiefensuche und ihre verschiedenen Kantentypen. Hinweis: Du kannst annehmen, dass es einen Linearzeitalgorithmus gibt, der prüft, ob eine Brücke existiert. Aufgabe 5.5. (4+4 Extrapunkte) Gegeben sei ein azyklischer gerichteter Spielgraphen (Skript: Kapitel 3.4.3) Spielgraph eine ausgehende Kante des aktuellen Knotens ausgewiesen, in dem Alice beginnt. Als G = (V, E), in dem Alice und Bob abwechselnd auswählen. Ein Knoten s sei als Startknoten Senke bezeichnen wir einen Knoten ohne ausgehende Kanten, d.h. in einer Senke endet das Spiel. Senken weisen abhängig vom ziehenden Spieler den Sieger aus: Sie tragen eine der Beschriftungen Alice gewinnt, Bob gewinnt, Wer dran ist, gewinnt oder Wer dran ist, verliert. Zum Beispiel lässt sich das Streichholzspiel modellieren, in dem mit wird und abwechselnd k ∈ {1, k1 , . . . , kn } mit 1 < ki < h − 1 h Streichhölzern begonnen Hölzer vom Tisch genommen werden, solange bis nur noch genau eines übrigbleibt und der ziehende Spieler verliert. a) Entwirf einen Algorithmus, der in Zeit O(|V | + |E|) entscheidet, ob Alice eine Gewinnstra- tegie hat, also einen Gewinn erzwingen kann obwohl Bob optimal spielt. b) Wir sagen, dass ein Spielbaum pfad s, . . . , b in G T den Spielgraphen ein Pfad von der Wurzel unterschiedliche Spielpfade in Gib einen Graphen G mit n G s von T G beschreibt, wenn für jeden Spiel- zu einem Blatt zu unterschiedlichen Blättern in Knoten an, für den T T b in T existiert und führen. möglichst groÿ ist. Fazit: Azyklische Spielgraphen sind Spielbäumen überlegen, formulieren allerdings nur sehr einfache Spiele. Hier ist ein wirklich schwieriges Spiel. Wir erlauben Kreise im Spielgraphen, fordern aber, dass kein Knoten zweimal besucht werden darf. Der Spieler verliert, der als erstes nicht mehr ziehen kann. (Auf diese Weise kann z.B. Städte raten modelliert werden: Abwechselnd werden Städtenamen genannt, wobei der aktuelle Name mit dem Endbuchstaben der vorangegangenen Stadt beginnen muss und keine Stadt zweimal genannt werden darf.) Wenn man stets ezient feststellen könnte, ob Alice eine Gewinnstrategie hat, so wäre man auch in der Lage das α, Ist α Erfüllbarkeitsproblem (gegeben eine aussagenlogische Formel erfüllbar?) ezient zu lösen. Wir geben in der Vorlesung GL-1 überzeugende Indizien dafür an, dass das Erfüllbarkeitsproblem keine ezienten Algorithmen besitzt. Die Existenz einer Gewinnstrategie für das schwierige Spiel ist also wahrscheinlich nicht ezient entscheidbar!