Tutoraufgabe 1 (SCC):

Ähnliche Dokumente
Tutoraufgabe 1 (Starke Zusammenhangskomponenten):

Tutoraufgabe 1 (2 3 4 Bäume):

Tutoraufgabe 1 (Vollständige Induktion): Tutoraufgabe 2 (Rotationen): Datenstrukturen und Algorithmen SS15 Übungsblatt 5 (Abgabe 3.6.

Tutoraufgabe 1 (Hoare-Kalkül):

Tutoraufgabe 1 (Verifikation):

Tutoraufgabe 1 (Implementierung eines ADTs):

Tutoraufgabe 1 (Listen):

Tutoraufgabe 1 (Programmanalyse):

2. Präsenzübung Datenstrukturen und Algorithmen SS 2014

Tutoraufgabe 1 (Auswertungsstrategie):

1. Klausur Datenstrukturen und Algorithmen SS 2014

Tutoraufgabe 1 (Casting): Programmierung WS17/18 Übungsblatt 2 (Abgabe ) Allgemeine Hinweise:

Datenstrukturen und Algorithmen (SS 2013)

2. Klausur Datenstrukturen und Algorithmen SS 2014

Tutoraufgabe 1 (Suchen in Graphen):

Datenstrukturen und Algorithmen

Globalübungsaufgabe1 (Rucksackproblem):

Tutoraufgabe 1 (Programmanalyse): Programmierung WS17/18 Übungsblatt 5 (Abgabe ) Allgemeine Hinweise:

Tutoraufgabe 1 (Programmanalyse):

Präsenzübung Datenstrukturen und Algorithmen SS 2014

Tutoraufgabe 1 (Programmanalyse):

15. Elementare Graphalgorithmen

void bellford ( List adjlst [n], int n, int i, int j){ int d[n] = + inf ; d[i] = 0;

f 1 (n) = log(n) + n 2 n 5 f 2 (n) = n 3 + n 2 f 3 (n) = log(n 2 ) f 4 (n) = n n f 5 (n) = (log(n)) 2

Tutoraufgabe 1 (Seiteneekte):

Graphdurchmusterung, Breiten- und Tiefensuche

Tutoraufgabe 1 (2 3 4 Bäume):

Wie wird ein Graph dargestellt?

Der Rekursionsbaum hat

Tutoraufgabe 1 (Klassenhierarchie):

Übersicht. Datenstrukturen und Algorithmen. Das Rechenproblem: kürzeste Pfade. Übersicht. Vorlesung 17: Kürzeste Pfade (K24) Bellman-Ford Dijkstra

Algorithmen & Datenstrukturen 2 Praktikum 3

NAME, VORNAME: Studiennummer: Matrikel:

Tutoraufgabe 1 (Seiteneekte):

Institut für Programmierung und Reaktive Systeme 31. Mai Programmieren II. 12. Übungsblatt

Aufgaben zur Klausurvorbereitung

Tutoraufgabe 1 (Fibonacci-Zahlen):

Übung 3 Musterlösung

Tutoraufgabe 1 (Sortieralgorithmus):

Rückblick: Starke Zusammenhangskomponenten

Technische Universität München SoSe 2018 Fakultät für Informatik, I Juli 2018 Dr. Stefanie Demirci. Aufgabe 1 Sortieren mit Heap Sort

Übung Informatik I - Programmierung - Blatt 8

Graphenalgorithmen I

Aufgabe 2 (Unendliche Listen in Haskell):

Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5

Keller, Schlangen und Listen. Elementare Datenstrukturen Keller, Schlangen und Listen 1 / 14

1. Aufgabe (6 Punkte): Java-Programmierung (Arrays)

Datenstrukturen und Algorithmen 2. Klausur SS 2001

Algorithmen und Datenstrukturen 1 VU 6.0 Nachtragstest SS Oktober 2014

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1

Institut für Programmierung und Reaktive Systeme 12. Juni Programmieren II. 12. Übungsblatt

Klausur Algorithmen und Datenstrukturen

Graphalgorithmen I. Katharina Reif Hallo Welt -Seminar - LS 2

Informatik II: Algorithmen & Datenstrukturen. Blättern Sie nicht um bevor Sie dazu aufgefordert werden!

Übersicht Datenstrukturen und Algorithmen. Übersicht. Probleme auf kantengewichteten Graphen. Vorlesung 14: Minimale Spannbäume

Tutoraufgabe 1 (Überladen von Methoden):

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2013 / 2014 Vorlesung 12, Donnerstag, 23.

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1

Tutoraufgabe 1 (Sortieren): Lösung: Datenstrukturen und Algorithmen SS14 Lösung - Übung 4

Definition Gerichteter Pfad. gerichteter Pfad, wenn. Ein gerichteter Pfad heißt einfach, falls alle u i paarweise verschieden sind.

Kürzeste Pfade. Organisatorisches. VL-17: Kürzeste Pfade. (Datenstrukturen und Algorithmen, SS 2017) Walter Unger

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Übersicht: Graphen. Definition: Ungerichteter Graph. Definition: Ungerichteter Graph

Wintersemester 2004/ Januar Aus der Vorlesung sind Datenstrukturen zur Repräsentation von Wäldern disjunkter Mengen bekannt.

Institut für Programmierung und Reaktive Systeme 28. Mai Programmieren II. 12. Übungsblatt

Algorithmen und Datenstrukturen

Kap. 6.5: Minimale Spannbäume ff

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Heaps. Vorlesung 8: Heapsort (K6) Joost-Pieter Katoen. 7. Mai 2015

Teil 2: Graphenalgorithmen

Tutoraufgabe 1 (Code-Analyse):

Formale Sprachen, Automaten, Prozesse SS 2010 Musterlösung - Übung 1 M. Brockschmidt, F. Emmes, C. Fuhs, C. Otto, T. Ströder

Minimale Spannbäume. Übersicht. 1 Spannbäume. 2 Minimale Spannbäume. 3 Greedy Algorithmen. 4 Die Algorithmen von Kruskal und Prim

Institut für Programmierung und Reaktive Systeme 5. Dezember Programmieren II. 12. Übungsblatt

(a, b)-bäume / 1. Datenmenge ist so groß, dass sie auf der Festplatte abgespeichert werden muss.

Informatik II, SS 2014

Gliederung. 5. Compiler. 6. Sortieren und Suchen. 7. Graphen

Definition Ein gerichteter Graph G = (V, E) ist ein Graph von geordneten Paaren (u, v) mit u V und v V.

Klausur Algorithmen und Datenstrukturen

Datenstrukturen & Algorithmen Lösungen zu Blatt 8 FS 16

Kürzeste (billigste) Wege

Kürzeste-Wege-Algorithmen und Datenstrukturen

Sortieren II / HeapSort Heaps

Organisatorisches. Programmierpraktikum Das Canadian Traveller Problem. Organisatorisches. Organisatorisches

Vorlesung Datenstrukturen

Algorithmen und Datenstrukturen

Aufgabe (Schreibtischtest, Algorithmenanalyse)

Übung Algorithmen und Datenstrukturen

Institut für Programmierung und Reaktive Systeme 27. Mai Programmieren II. 12. Übungsblatt

Algorithmen und Datenstrukturen (für ET/IT)

Informatik B Sommersemester Musterlösung zur Klausur am

Algorithmen und Datenstrukturen 1 VL Übungstest SS Juni 2009

lim log 2n n = > 0 Da es einen Limes gibt, gibt es auch einen Limes inferior, der gleich diesem Limes ist.

Tutoraufgabe 1 (Implementierung eines ADTs):

Algorithmus zur topologischen Nummerierung: while V = 0 do nummeriere eine Quelle mit der nächsten Nummer streiche diese Quelle aus V od

Informatik II, SS 2018

Abgabe: (vor der Vorlesung)

Lernmodul 7 Algorithmus von Dijkstra

9. Übung Algorithmen I

ADS: Algorithmen und Datenstrukturen 2

Transkript:

Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS F. Corzilius, S. Schupp, T. Ströder Allgemeine Hinweise: Die Hausaufgaben sollen in Gruppen von je bis Studierenden aus der gleichen Kleingruppenübung (Tutorium) bearbeitet werden. Namen und Matrikelnummern der Studierenden sind auf jedes Blatt der Abgabe zu schreiben. Heften bzw. tackern Sie die Blätter! Die Nummer der Übungsgruppe muss links oben auf das erste Blatt der Abgabe geschrieben werden. Notieren Sie die Gruppennummer gut sichtbar, damit wir besser sortieren können. Die Lösungen müssen bis Montag, den 07.07.0 um 9:00 Uhr in den entsprechenden Übungskasten eingeworfen werden. Sie nden die Kästen am Eingang Halifaxstr. des Informatikzentrums (Ahornstr. 55). Alternativ können Sie die Lösungen auch in Ihrem Tutorium vor der Abgabefrist direkt bei Ihrer Tutorin/Ihrem Tutor abgeben. Tutoraufgabe (SCC): Wenden Sie Sharir's Algorithmus an (siehe Folien zur Vorlesung) um die starken Zusammenhangskomponenten des folgenden Graphen zu nden. Geben Sie das Array color und den Stack S nach jeder Schleifeniteration der ersten und zweiten Phase (also nach Zeile 7 und nach Zeile ) an, falls DFS bzw. DFS ausgeführt wurde. Geben Sie zudem das Array scc nach jeder Schleifeniteration der zweiten Phase (also nach Zeile ) an, falls DFS ausgeführt wurde. Nehmen Sie hierbei an, dass scc initial mit Nullen gefüllt ist und der Knoten mit Schlüssel i in der Adjazenzliste den (i )-ten Eintrag hat, also der Knoten mit Schlüssel vom Algorithmus als erstes berücksichtig wird usw. 5 6 7 8

Datenstrukturen und Algorithmen SS Aufgabe (SCC): (5 Punkte) Wenden Sie Sharir's Algorithmus an (siehe Folien zur Vorlesung) um die starken Zusammenhangskomponenten des folgenden Graphen zu nden. Geben Sie das Array color und den Stack S nach jeder Schleifeniteration der ersten und zweiten Phase (also nach Zeile 7 und nach Zeile ) an, falls DFS bzw. DFS ausgeführt wurde. Geben Sie zudem das Array scc nach jeder Schleifeniteration der zweiten Phase (also nach Zeile ) an, falls DFS ausgeführt wurde. Nehmen Sie hierbei an, dass scc initial mit Nullen gefüllt ist und der Knoten mit Schlüssel i in der Adjazenzliste den (i )-ten Eintrag hat, also der Knoten mit Schlüssel vom Algorithmus als erstes berücksichtig wird usw. 5 6 7 8 9 0 Tutoraufgabe (Topologisches Sortieren): Geben Sie eine topologische Sortierung des folgenden Graphen an. Dafür reicht es, eine geordnete Liste der Knoten mit dem dazugehörigen Topologiewert in Klammern anzugeben. Die Tiefensuche berücksichtigt bei mehreren Kindern diese in aufsteigender Reihenfolge (ihrer Schlüssel). Des Weiteren ist jedes Array, welches Knoten beinhaltet, aufsteigend nach deren Schlüsseln sortiert. Beachten Sie, dass der Knoten mit Schlüssel i in der Adjazenzliste den (i )-ten Eintrag hat, also der Knoten mit Schlüssel vom Algorithmus als erstes berücksichtig wird usw. a) t 5 6 7 8 9

Datenstrukturen und Algorithmen SS b) t 5 6 7 8 9 0 5 6 7 8 9 0

Datenstrukturen und Algorithmen SS Aufgabe (Topologisches Sortieren): ( + = 6 Punkte) Geben Sie eine topologische Sortierung des folgenden Graphen an. Dafür reicht es, eine geordnete Liste der Knoten mit dem dazugehörigen Topologiewert in Klammern anzugeben. Die Tiefensuche berücksichtigt bei mehreren Kindern diese in aufsteigender Reihenfolge (ihrer Schlüssel). Des Weiteren ist jedes Array, welches Knoten beinhaltet aufsteigend nach deren Schlüsseln sortiert. Beachten Sie, dass der Knoten mit Schlüssel i in der Adjazenzliste den (i )-ten Eintrag hat, also der Knoten mit Schlüssel vom Algorithmus als erstes berücksichtig wird usw. a) t 5 6 7 8 9 0 5 6 7 8 9 0 5

Datenstrukturen und Algorithmen SS b) t 5 6 7 8 9 0 5 6 7 8 9 0 5 6 7 Tutoraufgabe 5 (Dijkstra): Der Dijkstra Algorithmus zur Berechnung kürzester Entfernungen von einem Startknoten zu allen anderen Knoten arbeitet gemäÿ dem folgenden Pseudo-Code: //Inp.: gerichteter gewichteter Graph mit n Knoten, Startknoten void dijkstra ( int adj [n], int n, int start ) { for ( int i = 0; i < n; i ++) key [i] = inf ; key [ start ] = 0; //start ist einziger Randknoten mit Kosten 0 Q = {0,..., n -}; //Q enthält alle ungesehenen Knoten und //alle Randknoten while ( Q not empty ) { //verschiebe den billigsten Randknoten v in den Baum: //extractmin(q) bestimmt ein Element e aus Q mit minimalem //Schlüssel key[e], entfernt e aus Q und gibt e zurück v = extractmin (Q ); // aktualisiere Kosten für Randnnoten for each ((u,w) in adj [v ]) if (u in Q and key [v] + w < key [u ]) key [u] = key [v] + w; } } Betrachten Sie den folgenden Graphen: 5

Datenstrukturen und Algorithmen SS F G 7 D A E 5 B C Führen Sie den Dijkstra Algorithmus auf diesem Graphen mit dem Startknoten A aus. Füllen Sie dazu die nachfolgende Tabelle aus, indem Sie den Wert von v und key nach jeder Iteration der while-schleife eintragen: v A key[a] key[b] key[c] key[d] key[e] key[f] key[g] 6

Datenstrukturen und Algorithmen SS Aufgabe 6 (Dijkstra): Betrachten Sie den folgenden Graphen: (6 Punkte) F G A D E 9 8 6 7 5 B C Führen Sie den Dijkstra Algorithmus auf diesem Graphen mit dem Startknoten A aus. Füllen Sie dazu die nachfolgende Tabelle aus, indem Sie den Wert von v und key nach jeder Iteration der while-schleife eintragen: v A key[a] key[b] key[c] key[d] key[e] key[f] key[g] 7