Datenstrukturen Übungsblatt 0 - Professur für Theoretische Informatik

Werbung
Datenstrukturen
Sommersemester 2014
Prof. Dr. Georg Schnitger
Dipl.-Inf. Bert Besser
Arbeitsgruppe Theoretische Informatik, Institut für Informatik
Ausgabe: 15.04.2014
Abgabe : Diskussion in Übungsgruppen
Dieses
wird nicht abgegeben. Es wird in den Übungsgruppen der ersten
beiden Vorlesungswochen besprochen.
Das Ziel des Blattes ist zum Einen das Arbeiten mit Pseudocode und zum Anderen die Analyse
wie auch der Entwurf rekursiver Programme. Wir haben zum jetzigen Zeitpunkt unzureichende
Grundlagen. Deshalb benutzen wir dieses Blatt, um diese beiden wichtigen Fragestellungen mit
gemeinsamem Brainstorming in den Gruppen anzugehen.
Zur Vorbereitung ist das Skript inbesondere Abschnitt 1.2 hilfreich.
Übungsblatt 0
Hinweis:
Präsenzblatt
0.1. Aufgabe (0 Punkte)
Das Traversieren von Graphen
Betrachte den folgenden Pseusocode des rekursiven Algorithmus A, dessen Eingabe ein ungerichteter Graph G ist:
:
markiere v
für jeden unmarkierten Nachbarn v von v
führe f (v ) aus
A(G):
// die Knotennamen seien 1, . . . , n und kein Knoten ist markiert
führe f (1) aus
f (v)
0
0
Bereite Dich für die Teilnahme an der ersten Übungsgruppe auf die folgenden Fragen vor.
a) Was macht Algorithmus A?
b) Hält A für jeden ungerichteten Graphen G an oder gibt es Eingaben G auf denen A für
immer läuft?
b. w.
0.2. Aufgabe (0 Punkte)
Keine Rekursion mehr
Wir wollen Algorithmus A so ändern, dass keine Rekursion mehr nötig ist, d.h. wir wollen
innerhalb der Funktion f Aufrufe an die Funktion f selbst eliminieren.
a) Kannst dazu eine der folgenden Datenstukturen verwendet werden? Beschreibe jeweils,
wann welche Operationen auf der Datenstruktur auszuführen sind.
• Eine Liste,
• ein Keller oder
• eine Warteschlange.
b) Implementiere in Pseudocode eine nicht-rekursive Variante von Algorithmus A, die die
Aufrufreihenfolge der Knoten nicht verändert. Verwende dazu eine der Datenstrukturen
aus Aufgabenteil a).
0.3. Aufgabe (0 Punkte)
Laufzeitbestimmung
Analysiere die asymptotische Laufzeit von Algorithmus A.
Wir sollten die Laufzeit in Abhängigkeit von der Gröÿe des Eingabegraphen G bestimmen, aber
wie sollten wir die Gröÿe vernünftigerweise denieren?
Herunterladen