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?