Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1

Ähnliche Dokumente
Beispiellösung zur Prüfung Datenstrukturen und Algorithmen D-INFK

Datenstrukturen & Algorithmen

Klausur Algorithmen und Datenstrukturen

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen

Algorithmen & Datenstrukturen 1. Klausur

Klausur Informatik B April Teil I: Informatik 3

Kapiteltests zum Leitprogramm Binäre Suchbäume

Untersuchen Sie, inwiefern sich die folgenden Funktionen für die Verwendung als Hashfunktion eignen. Begründen Sie Ihre Antwort.

Klausur Datenstrukturen und Algorithmen SoSe 2012

Binäre Suchbäume. Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps

Algorithmen und Datenstrukturen

Datenstrukturen & Algorithmen

Geometrische Algorithmen

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

12 (2-4)-Bäume Implementierbare Funktionen. (2-4)-Bäume sind durch folgende Eigenschaften deniert: 1. Alle Äste sind gleich lang

Algorithmen & Datenstrukturen Lösungen zu Blatt 9 HS 16

Was bisher geschah ADT Menge mit Operationen: Suche nach einem Element Einfügen eines Elementes Löschen eines Elementes Realisierung durch

1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert

Grundlagen Datenstrukturen Transitive Hülle Traversierung Kürzeste Wege Spannender Baum Max. Fluss Zuordnungen. 6. Graphen

Graphen: Datenstrukturen und Algorithmen

Datenstrukturen. einfach verkettete Liste

13. Binäre Suchbäume

Zeichnen von Graphen. graph drawing

Prof. Dr. Heinrich Müller; Dr. Frank Weichert 7. September 2015

Dynamische Mengen. Realisierungen durch Bäume

Lernziele: Ausgleichstechniken für binäre Bäume verstehen und einsetzen können.

Proseminar Online Algorithmen, Prof. Dr. Rolf Klein

Geometrische Algorithmen

Tutorium Algorithmen & Datenstrukturen

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen

Grundlagen der Programmierung

Name: Seite 2. Beantworten Sie die Fragen in den Aufgaben 1 und 2 mit einer kurzen, prägnanten Antwort.

Algorithmen II Vorlesung am

Datenstrukturen. Mariano Zelke. Sommersemester 2012

κ(k) k K S Algorithmus zur Bestimmung eines spannenden Baumes mit minimalen Kosten (Kruskal, 1965).

Was bisher geschah. 1. Zerlegung in monotone Polygone 2. Triangulierung der monotonen Teilpolygone

Klausur Informatik B. Teil 1: Informatik 3 Juli 2005

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Übung zur Vorlesung Algorithmische Geometrie

Algorithmen und Datenstrukturen 1 VL Übungstest WS 2010/ November 2010

1 topologisches Sortieren

Vorlesung Datenstrukturen

DAP2-Klausur

4 Greedy-Algorithmen (gierige Algorithmen)

Algorithmen und Datenstrukturen

Klausur Grundlagen der Informatik Hochschule Ravensburg-Weingarten

Datenstrukturen & Algorithmen

Informatik II, SS 2014

MafI I: Logik & Diskrete Mathematik (F. Hoffmann)

Kapitel : Andere dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2013/14. Prof. Dr. Sándor Fekete

Algorithmen und Datenstrukturen 1

Übungsblatt 2 - Lösung

Rekurrenzen T(n) = T(n 1) + N beschreibt Laufzeitverhalten eines rekursiven Algorithmus

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14

Abschnitt 18: Effizientes Suchen in Mengen

JAVA - Suchen - Sortieren

14. Rot-Schwarz-Bäume

Kapitel : Andere dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete

Kurs 1661 Datenstrukturen I Klausur am Seite 1. Hinweise zur Bearbeitung der Klausur zum Kurs 1661 Datenstrukturen I

Theoretische Informatik 1 WS 2007/2008. Prof. Dr. Rainer Lütticke

Universität des Saarlandes

Verkettete Datenstrukturen: Bäume

Proseminar Kodierverfahren bei Dr. Ulrich Tamm Sommersemester 2003 Thema: Codierung von Bäumen (Prüfer Codes...)

Informatik II, SS 2014

Sortierverfahren für Felder (Listen)

3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel

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

2 i. i=0. und beweisen Sie mittels eines geeigneten Verfahrens die Korrektheit der geschlossenen Form.

Wiederholung zu Flüssen

kontextfreie Grammatiken Theoretische Informatik kontextfreie Grammatiken kontextfreie Grammatiken Rainer Schrader 14. Juli 2009 Gliederung

Routing Algorithmen. Begriffe, Definitionen

Algorithmen und Datenstrukturen 2

3 Klassifikation wichtiger Optimierungsprobleme

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie

Algorithmen und Datenstrukturen Suchbaum

Felix Brandt, Jan Johannsen. Vorlesung im Wintersemester 2008/09

Algorithmen & Programmierung. Rekursive Funktionen (1)

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete

4. Hashverfahren. geg.: Wertebereich D, Schlüsselmenge S = {s 1,..., s n } D. Menge A von Speicheradressen; oft: A = {0,..., m 1}

4.7 Der Algorithmus von Dinic für maximalen Fluss

ABITURPRÜFUNG 2009 LEISTUNGSFACH INFORMATIK

Kap. 4.2: Binäre Suchbäume

Algorithmen und Datenstrukturen Kapitel 10

Ausarbeitung zum Modulabschluss. Graphentheorie. spannende Bäume, bewertete Graphen, optimale Bäume, Verbindungsprobleme

1. Einführung. Was ist ein Algorithmus (eine Datenstruktur)? Welche Probleme kann man damit lösen? Warum betrachten wir (effiziente) Algorithmen?

Algorithmen - Eine Einführung

Datenstrukturen und Algorithmen

Algorithmen und Datenstrukturen

Vorlesung 4 BETWEENNESS CENTRALITY

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Abgabe: (vor der Vorlesung) Aufgabe 2.1 (P) O-Notation Beweisen Sie die folgenden Aussagen für positive Funktionen f und g:

Suchen und Sortieren Sortieren. Heaps

Name:... Vorname:... Matrikel-Nr.:... Unterschrift:...

Bäume, Suchbäume und Hash-Tabellen

6. Triangulation von Polygonen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen. (20 Graphen) T. Lauer

Übrigens: um den Algorithmus im Unterricht einzuführen, sind keine Formeln notwendig! Warum reicht die normale ASCII-Codierung nicht aus?

Kapitel 6 Elementare Sortieralgorithmen

2 Sortieren. Beispiel: Es seien n = 8 und a = i : a i : ϕ(i) : a ϕ(i) :

Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)).

Transkript:

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1 Aufgabe 1. / 16 P Instruktionen: 1) In dieser Aufgabe sollen Sie nur die Ergebnisse angeben. Diese können Sie direkt bei den Aufgaben notieren. 2) Sofern Sie die Notationen, Algorithmen und Datenstrukturen aus der Vorlesung Datenstrukturen & Algorithmen verwenden, sind Erklärungen oder Begründungen nicht notwendig. Falls Sie jedoch andere Methoden benutzen, müssen Sie diese kurz soweit erklären, dass Ihre Ergebnisse verständlich und nachvollziehbar sind. 3) Als Ordnung verwenden wir für Buchstaben die alphabetische Reihenfolge, für Zahlen die aufsteigende Anordnung gemäss ihrer Grösse. a) Führen Sie auf dem folgenden Array zwei Iterationen des Sortieralgorithmus Sortieren durch Einfügen aus. Das zu sortierende Array ist durch vorherige Iterationen bereits bis zum Doppelstrich sortiert worden. 3 7 10 15 8 6 9 5 2 13 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 b) Fügen Sie die Schlüssel 20, 24, 31 und 7 in dieser Reihenfolge in die untenstehende Hashtabelle ein. Benutzen Sie offenes Hashing mit der Hashfunktion h(k) = k mod 11. Lösen Sie Kollisionen mittels quadratischem Sondieren auf. Im Falle einer Kollision soll die Sondierung zunächst nach links und erst danach nach rechts erfolgen. 11 15 5 19 9 0 1 2 3 4 5 6 7 8 9 10

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 2 c) Führen Sie auf der folgenden Union-Find-Datenstruktur Union(h, Find(g)) mithilfe des Verfahrens Vereinigung nach Höhe aus und zeichnen Sie die resultierende Datenstruktur nach der Operation. Nach der Operation: a c h b d e f g d) Das folgende Array enthält die Elemente eines in üblicher Form gespeicherten Min-Heaps. Entfernen Sie das minimale Element aus dem Heap, stellen Sie die Heap-Bedingung wieder her, und geben Sie das resultierende Array an. 1 3 6 4 9 7 10 13 8 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 e) Geben Sie eine kürzeste Folge von Anfragen an, welche ausgehend von der Liste A B C D E F unter Anwendung der Move-to-Front-Regel folgende Liste ergibt: D A C B E F Anfragen:

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 3 f) Der folgende Graph wird ausgehend von Knoten A traversiert. Die Nachbarn eines Knoten werden in alphabetischer Reihenfolge abgearbeitet. Geben Sie die beiden Reihenfolgen an, in der eine Tiefensuche und eine Breitensuche die Knoten inspizieren. A B C Tiefensuche: E G A,,,,,. Breitensuche: F A,,,,,. g) Zeichnen Sie den natürlichen Suchbaum T, der entsteht, wenn die Schlüssel 5, 4, 8, 7, 1, 6, 10 in dieser Reihenfolge in einen anfangs leeren natürlichen Suchbaum eingefügt werden. Geben Sie die Preorder-, Postorder- und Inorder-Reihenfolgen der Schlüssel in T an. natürlicher Suchbaum T : Preorder-Reihenfolge: Inorder-Reihenfolge: Postorder-Reihenfolge:

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 4 / 2 P h) Kreuzen Sie bei jeder der folgenden Datenstrukturen an, ob der darin verwendete Baum balanciert ist (d.h. eine Höhe logarithmisch in der Anzahl der gespeicherten Schlüssel garantiert) oder nicht balanciert ist. Jede korrekte Antwort gibt 0.5 Punkte, für jede falsche Antwort werden 0.5 Punkte abgezogen. Eine fehlende Antwort gibt 0 Punkte. Insgesamt gibt die Aufgabe mindestens 0 Punkte. Sie müssen Ihre Antworten nicht begründen. B-Baum balanciert nicht balanciert Heap balanciert nicht balanciert AVL-Baum balanciert nicht balanciert Natürlicher Suchbaum balanciert nicht balanciert i) Welcher AVL-Baum entsteht, wenn im folgenden AVL-Baum zuerst Schlüssel 7 gelöscht wird und anschliessend Schlüssel 5 eingefügt wird? 8 6 9 2 7 10 1 4 6 8 6 2 9 2 9 4 9 1 4 8 10 1 5 10 2 5 8 10 5 4 6 1 8 5 8 5 9 2 8 2 9 2 6 10 1 4 6 9 4 6 10 1 4 10 1 5

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 5 / 3 P j) Gegeben ist die folgende Rekursionsgleichung: { 5 T (n/8) + 8 n > 1 T (n) := 1 n = 1 Geben Sie eine geschlossene (nicht-rekursive) und möglichst einfache Formel für T (n) an und beweisen Sie diese mit vollständiger Induktion. Hinweise: (1) Sie können annehmen, dass n eine Potenz von 8 ist. Benutzen Sie also n = 8 k oder k = log 8 (n). (2) Für q 1 gilt: k i=0 qi = qk+1 1 q 1. Herleitung (falls benötigt): Geschlossene und vereinfachte Formel: T (n) = T (8 k ) = Induktionsbeweis:

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 6 Induktionsbeweis (Fortsetzung):

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 7 k) Geben Sie die asymptotische Laufzeit in Abhängigkeit von n N für den folgenden Algorithmus (so knapp wie möglich) in Θ-Notation an. Sie müssen Ihre Antwort nicht begründen. 1 for ( int i = n; i >= 1; i = i - 5 ) { 2 int j = n; 3 while ( j > 1 ) { 4 j = j / 2; 5 } 6 } Laufzeit in möglichst knapper Θ-Notation: l) Geben Sie die asymptotische Laufzeit in Abhängigkeit von n N für den folgenden Algorithmus (so knapp wie möglich) in Θ-Notation an. Sie müssen Ihre Antwort nicht begründen. 1 for ( int i = 1; i <= n; i = i + 1 ) { 2 for ( int j = 1; j < 2 * i; j = j + 2) { 3 ; 4 } 5 } Laufzeit in möglichst knapper Θ-Notation: m) Geben Sie für die untenstehenden Funktionen eine Reihenfolge an, so dass folgendes gilt: Wenn eine Funktion f links von einer Funktion g steht, dann gilt f O(g). Beispiel: Die drei Funktionen n 3, n 7, n 9 sind bereits in der entsprechenden Reihenfolge, da n 3 O(n 7 ) und n 7 O(n 9 ) gilt. n 2 log(n), log(n2 ), 6 n, 2 15, n n, ( ) n, n log(n) 6 Lösung:,,,,,,.

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 8 Aufgabe 2. / 10 P Ein Palindrom ist eine Zeichenfolge, die sich von vorne wie von hinten gleich liest, also z.b. das Wort RENTNER. Formal ist ein Palindrom eine Zeichenfolge der Länge 0 oder 1, oder eine Zeichenfolge a 1,..., a l, wobei a 1 = a l gilt und a 2,..., a l 1 ein Palindrom ist. Gegeben sei eine Zeichenfolge Z = a 1,..., a n der Länge n. Wir sagen, dass Z ein Palindrom P enthält, wenn P eine (nicht notwendigerweise zusammenhängende) Teilfolge von Z ist. Gesucht ist das längste in Z enthaltene Palindrom. Beispiel: Die Zeichenfolge Z = A, N, A, N, A, S enthält das Palindrom der Länge 0, sowie die Palindrome A, N, S, AA, NN, AAA, ANA, NAN, ANNA sowie ANANA (einige dieser Palindrome kommen mehrfach vor). Das längste in Z enthaltene Palindrom ist also ANANA. Entwerfen Sie für das obige Problem einen Algorithmus, der nach dem Prinzip der dynamischen Programmierung arbeitet. Gehen Sie dabei auf die folgenden Aspekte ein. 1) Was ist die Bedeutung eines Tabelleneintrags, und welche Grösse hat die DP-Tabelle? 2) Wie kann die Tabelle initialisiert werden, und wie berechnet sich ein Tabelleneintrag aus früher berechneten Einträgen? 3) In welcher Reihenfolge müssen die Einträge berechnet werden? 4) Wie lässt sich die Lösung aus der DP-Tabelle auslesen? Geben Sie auch die Laufzeit Ihrer Lösung an, und begründen Sie Ihre Antwort.

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 9 Grösse der DP-Tabelle / Anzahl Einträge: Bedeutung eines Tabelleneintrags: DP [ ]: Berechnung eines Eintrags: DP [ ] = Berechnungsreihenfolge:

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 10 Auslesen des längsten enthaltenen Palindroms: Laufzeit (mit Begründung):

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 11

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 12 Aufgabe 3. / 7 P Zwei Computer sollen über ein Netz zuverlässig kommunizieren. Die Computer sind nicht unbedingt direkt miteinander verbunden, sondern schicken im Allgemeinen Pakete über verschiedene Zwischenstationen durchs Netz. Es soll sichergestellt werden, dass ein Computer dem anderen Computer auch bei einem Ausfall einer einzigen, beliebigen Verbindung im Netz Pakete schicken kann. Das Netz ist durch eine Menge V von Knoten und eine Menge E von (gerichteten) Verbindungen zwischen je zwei Knoten gegeben. Weiterhin sind zwei Knoten s und t in V gegeben, die miteinander kommunizieren sollen. / 3 P a) Wir wollen entscheiden, ob s auch dann noch Pakete an t schicken kann, wenn eine einzige, beliebige Verbindung in E unterbrochen wird. Modellieren Sie dazu das Problem als Flussproblem. Beschreiben Sie dazu die Konstruktion eines geeigneten Netzes N a = (V a, E a, c a ) und geben Sie an, welche Kapazitäten c a die Kanten besitzen sollen. Wie kann aus dem Wert eines maximalen Flusses abgelesen werden, ob die Kommunikation von s nach t möglich ist, wenn eine einzige, beliebige Verbindung in E unterbrochen wird? s a b c d e t Beispiel: Im links dargestellten Netz kann der Knoten s auch dann noch Pakete an den Knoten t schicken, wenn eine einzige, beliebige Kante entfernt wird. / 4 P b) Jetzt möchten wir entscheiden, ob der Knoten s auch dann noch Pakete an den Knoten t schicken kann, wenn ein Knoten aus V \ {s, t} defekt ist und nicht genutzt werden kann. Modellieren Sie dazu das Problem als Flussproblem und beschreiben Sie ein geeignetes Netz N b = (V b, E b, c b ). Wie kann aus dem Wert eines maximalen Flusses in diesem Netz abgelesen werden, ob die Kommunikation von s nach t möglich ist, wenn nur ein Knoten entfernt wird? Beispiel: Im oben dargestellten Netz kann der Knoten s keine Pakete an den Knoten t schicken, wenn der Knoten d nicht genutzt werden kann.

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 13 Teilaufgabe a) Definition des Netzes N a (wenn möglich in Worten und nicht formal): Knotenmenge V a : Kantenmenge E a : Kapazitäten c a : Schematische Darstellung / Zeichnung des Netzes: Eine Kommunikation von s nach t ist möglich, falls:

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 14 Teilaufgabe b) Definition des Netzes N b (wenn möglich in Worten und nicht formal): Knotenmenge V b : Kantenmenge E b : Kapazitäten c b : Schematische Darstellung / Zeichnung des Netzes: Eine Kommunikation von s nach t ist möglich, falls:

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 15

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 16 Aufgabe 4. / 9 P Gegeben sei eine Menge von n Punkten P 1,..., P n mit P i = (x i, y i ) Q 2 für alle i {1,..., n}. Keine zwei Punkte haben dieselben x- oder y-koordinaten. Gegeben sei ausserdem eine Menge von m achsen-parallelen Rechtecken R 1,..., R m in der Ebene. Jedes Rechteck R j mit j {1,..., m} ist durch seinen linken, unteren Eckpunkt (l j, u j ) Q 2 und seinen rechten, oberen Eckpunkt (r j, o j ) Q 2 gegeben. Keine zwei Rechtecke überlappen oder berühren sich, und kein Punkt P i liegt genau auf dem Rand eines Rechtecks. Gesucht sind alle Punkte, die sich nicht innerhalb eines der m Rechtecke befinden. Beispiel: In der Abbildung rechts sind fünf Rechtecke und acht Punkte gegeben. Die Punkte P 1, P 4 und P 7 befinden sich in keinem Rechteck. P 1 P 2 P 3 P 4 P 5 P 7 P 8 P 6 Entwerfen Sie einen möglichst effizienten Scanline-Algorithmus für das obige Problem. Gehen Sie in Ihrer Lösung auf die folgenden Aspekte ein. 1) In welche Richtung läuft die Scanline, und was sind die Haltepunkte? 2) Welche Objekte verwaltet die Scanline-Datenstruktur, und was ist eine angemessene Datenstruktur? 3) Was passiert, wenn die Scanline auf einen neuen Haltepunkt trifft? 4) Wie können diejenigen Punkte bestimmt werden, die sich nicht innerhalb eines Rechteckes befinden? 5) Welche Laufzeit in Abhängigkeit von n und m hat Ihr Algorithmus? Begründen Sie Ihre Antwort.

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 17 Scanline-Richtung (genau eine Möglichkeit ankreuzen): Die Scanline ist eine vertikale Gerade; sie bewegt sich von links nach rechts / von rechts nach links. Die Scanline ist eine horizontale Gerade; sie bewegt sich von oben nach unten / von unten nach oben. Die Scanline ist eine Halbgerade; sie rotiert im Uhrzeigersinn / im Gegenuhrzeigersinn um den Punkt. andere Richtung:. Haltepunkte: Menge der Haltepunkte: sortiert nach: Scanline-Datenstruktur: Operationen bei einem Haltepunkt:

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 18 Auslesen der Lösung: Laufzeit des Algorithmus: