Blatt 5 - Professur für Theoretische Informatik

Werbung
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!
Herunterladen