Übungsklausur Algorithmen I

Ähnliche Dokumente
Abschnitt: Algorithmendesign und Laufzeitanalyse

Datenstrukturen und Algorithmen

Suchen und Sortieren Sortieren. Heaps

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Divide-and-Conquer. Vorlesung 9: Quicksort (K7)

Sortierverfahren für Felder (Listen)

3. Übung Algorithmen I

1. Musterlösung. Problem 1: Average-case-Laufzeit vs. Worst-case-Laufzeit

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

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

Programmieren I. Kapitel 7. Sortieren und Suchen

2. Musterlösung. Problem 1: Least Common Ancestor

Sortierte Folgen 250

Klausur Datenstrukturen und Algorithmen SoSe 2012

Übersicht Datenstrukturen und Algorithmen. Literatur. Algorithmus: Wikipedia Definition. Vorlesung 1: Einführung. Prof. Dr.

Algorithmen und Datenstrukturen Wintersemester 2004/ November T(n) = T(n a) + T(a) + n

Übungsblatt 1. f(n) = f(n) = O(g(n)) g(n) = O(f(n)) Zeigen oder widerlegen Sie: 3 n = Θ(2 n ) Aufgabe 1.2 Gegeben sei die folgende Funktion:

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

Algorithmen & Datenstrukturen 1. Klausur

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

S=[n] Menge von Veranstaltungen J S kompatibel mit maximaler Größe J

Programmiertechnik II

Übung Algorithmen I

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

Suchen und Sortieren (Die klassischen Algorithmen)

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

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

16. All Pairs Shortest Path (ASPS)

HEUTE. Datenstrukturen im Computer. Datenstrukturen. Rekursion. Feedback Evaluation. abstrakte Datenstrukturen

Datenstrukturen & Algorithmen

Bäume, Suchbäume und Hash-Tabellen

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

Informatik II Musterlösung

Übersicht. Datenstrukturen und Algorithmen Vorlesung 5: Rekursionsgleichungen (K4) Übersicht. Binäre Suche. Joost-Pieter Katoen. 20.

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Informatik II, SS 2014

3. Musterlösung. Problem 1: Boruvka MST

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

Informatik II, SS 2014

Programmiertechnik II

Algorithmen und Datenstrukturen (für ET/IT)

Grundlegende Sortieralgorithmen

Codes und Informationsgehalt

Grundlagen: Algorithmen und Datenstrukturen

JAVA - Suchen - Sortieren

Vorlesung : Binäre Entscheidungsdiagramme (BDDs) Dr. Carsten Sinz

In vergleichsbasierten Suchbäumen wird nicht in Schlüssel hineingeschaut.

Effiziente Algorithmen und Datenstrukturen I. Kapitel 10: Lineare Algebra

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / Vorlesung 5, Donnerstag, 20.

14. Rot-Schwarz-Bäume

4 Greedy-Algorithmen (gierige Algorithmen)

Beispiellösungen zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 6

One of the few resources increasing faster than the speed of computer hardware is the amount of data to be processed. Bin Hu

! DBMS organisiert die Daten so, dass minimal viele Plattenzugriffe nötig sind.

Programmieren ++ Begleitende Übungen zu Veranstaltungen + Umsetzen des Algorithmus in ein lauffähiges Programm

Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen?

Graphen: Datenstrukturen und Algorithmen

Klausur C-Programmierung / / Klingebiel / 60 Minuten / 60 Punkte

Algorithmen und Datenstrukturen

ALP I. Funktionale Programmierung

Effiziente Algorithmen und Datenstrukturen I. Kapitel 9: Minimale Spannbäume

Einführung in die Informatik I Kapitel II.3: Sortieren

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

Customization (Zuschneiden)

AVL-Bäume Analyse. Theorem Ein AVL-Baum der Höhe h besitzt zwischen F h und 2 h 1 viele Knoten. Definition Wir definieren die nte Fibonaccizahl:

Vorlesung 5: DATENSTRUKTUREN UND ALGORITHMEN

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2012 / Vorlesung 9, Dienstag 18.

Suchen in Listen und Hashtabellen

Einführung Elementare Datenstrukturen. Der Konstruktor muß den Listenkopf head erzeugen. Der Vorgänger und Nachfolger von head ist head selbst.

8 Graphrepräsentation

Lösungsvorschläge. zu den Aufgaben im Kapitel 4

Algorithmen und Datenstrukturen Laufzeitabschätzung

Kapitel 3. Speicherhierachie. Beispiel für Cache Effekte. Motivation Externspeicheralgorithmen. Motivation Für Beachtung von Cache Effekten

Lösung zur Klausur zu Krypographie Sommersemester 2005

Kapiteltests zum Leitprogramm Binäre Suchbäume

Dateiorganisation und Zugriffsstrukturen

Algorithmen und Datenstrukturen

Programmiertechnik II

Kapitel 6. Komplexität von Algorithmen. Xiaoyi Jiang Informatik I Grundlagen der Programmierung

Algorithmentheorie Randomisierung. Robert Elsässer

Grundlagen der Programmierung

Kostenmaße. F3 03/04 p.188/395

Kostenmodell. Daniel Graf, Tobias Pröger. 22. September 2016 (aktualisierte Fassung 5 vom 9. Oktober 2016)

Überblick. Lineares Suchen

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen

Kap. 4.4: B-Bäume Kap. 4.5: Dictionaries in der Praxis

Komplexität. G. Zachmann Clausthal University, Germany Leistungsverhalten von Algorithmen

Einführung in die Informatik 1

Teil II: Prioritätslisten (Priority Queues)

Laufzeit und Komplexität

Fragen für die Klausuren

Sortieralgorithmen. Inhalt: InsertionSort BubbleSort QuickSort. Marco Block

Datenstruktur, die viele Operationen dynamischer Mengen unterstützt

Stefan Schmid TU Berlin & T-Labs, Berlin, Germany. Reduktionen in der Berechenbarkeitstheorie

Kapitel 2: Analyse der Laufzeit von Algorithmen Gliederung

Algorithmen II Vorlesung am

3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1

Projekt Systementwicklung

Komplexität von Algorithmen

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

Transkript:

Universität Karlsruhe, Institut für Theoretische Informatik Prof. Dr. P. Sanders 26.5.2010 svorschlag Übungsklausur Algorithmen I Hiermit bestätige ich, dass ich die Klausur selbständig bearbeitet habe: Aufgabe 1. Gegeben sei folgende Darstellung eines binären Heaps als Array mit den Indizes 1,...,5: 1 2 3 4 5 3 8 5 12 11 Geben sie den Inhalt des Arrays an, nachdem deletemin ausgeführt worden ist: 1 2 3 4 1 2 3 4 5 8 11 12 Gegeben sei folgende Darstellung eines binären Heaps als Array mit den Indizes 1,...,5: 1 2 3 4 5 7 21 42 31 43 Geben sie den Inhalt des Arrays an, nachdem deletemin ausgeführt worden ist: 1 2 3 4 1 2 3 4 21 31 42 43

svorschlag Gegeben sei folgende Darstellung eines binären Heaps als Array mit den Indizes 1,...,5: 1 2 3 4 5 9 11 10 18 20 Geben sie den Inhalt des Arrays an, nachdem deletemin ausgeführt worden ist: 1 2 3 4 1 2 3 4 10 11 20 18 Aufgabe 2. Nennen Sie ein Beispiel für die vereinfachende Wirkung von Wächterelementen (= Sentinels). Sortieren durch Einsetzen. Suchen in (verketteten) Listen. Aufgabe 3. Nennen Sie zwei Operationen, die doppelt verkettete Listen in konstanter worst-case-zeit unterstützen, einfach verkettete Listen jedoch nicht. insert, remove, popback a) Nennen Sie eine Operation, die einfach verkettete Listen in konstanter worst-case-zeit unterstützen. b) Nennen Sie einen Vorteil von einfach verketteten Listen gegenüber doppelt verketteten Listen. a) first, last, removeafter, insertafter, pushfront, popfront, pushback b) Weniger Speicherverbrauch (da weniger Handles), oft schneller (weniger Handles müssen geupdated werden)

svorschlag Aufgabe 4. Nennen Sie einen Vorteil und einen Nachteil von Hashing mit verketteten Listen gegenüber offenem Hashing mit linearer Suche. Vorteile: insert in O(1), für dichte Hashtabellen besser, referentielle Integrität, Leistungsgarantien mit universellem Hashing Nachteile: nicht so platz-effizient, nicht so cache-effizient, nicht so einfach Nennen Sie einen Vorteil und einen Nachteil von offenem Hashing mit linearer Suche gegenüber Hashing mit verketteten Listen. Vorteile: platz-effizient, cache-effizient, einfach Nachteile: insert nicht in O(1), für dichte Hashtabellen schlechter, keine Referentielle Integrität, keine Leistungsgarantieen mit universellem Hashing Aufgabe 5. [3 Punkte] Der Ministerpräsident von Baden-Württemberg möchte die besten 2% der Abiturienten seines Landes zu einem Gartenfest einladen. Gegeben sei dazu eine Datei F von n Tripeln der Form (Name, LaufendeNr, Durchschnittsnote). a) Geben Sie einen Algorithmus an, der in erwartet O(n) Zeit die besten 2% aller Abiturienten liefert. Bemerkung. Sie können Algorithmen aus der Vorlesung als Unterprogramm verwenden. Für (erwartet) O(nlogn) Zeit bekommen Sie immerhin noch die Hälfte der Punkte. b) Argumentieren Sie, warum Ihr Algorithmus das gewünschte Laufzeitverhalten hat. a) Man betrachte auf F die Relation, definiert durch (N 1,L 1,D 1 ) (N 2,L 2,D 2 ) : D 1 D 2. Man wende nun den Algorithmus Quickselect aus der Vorlesung gemäß der gerade definierten Relation an, um so das 2n/100 -te Element bzgl. zu wählen. Heiße dieses p. Man verwende nun die von Quicksort bekannte Art zu partionieren, um F derart in zwei Teile zu teilen, dass der linke Teil alle Elemente e F mit e p enthält und der rechte Teil alle anderen. Der linke Teil enthält die gesuchten besten 2%. b) Quickselect: erwartet O(n) Zeit. Partitionieren: O(n) Zeit.

svorschlag Eine erfolgreiche Fastfood-Kette bewertet ihre Mitarbeiter mit einem internen Punktesystem. Nun möchte der Chef die am besten bewerteten 3% aller Mitarbeiter zu einem Gala-Abend einladen. Dazu hat er eine Datei F von n Tripeln der Form (MitarbeiterID, Name, Bewertung). a) Geben Sie einen Algorithmus an, der in erwartet O(n) Zeit die am besten bewerteten 3% aller Mitarbeiter berechnet. Bemerkung. Sie können Algorithmen aus der Vorlesung als Unterprogramm verwenden. Für (erwartet) O(nlogn) Zeit bekommen Sie immerhin noch die Hälfte der Punkte. b) Argumentieren Sie, warum Ihr Algorithmus das gewünschte Laufzeitverhalten hat. a) Man betrachte auf F die Relation, definiert durch (M 1,N 1,B 1 ) (M 2,N 2,B 2 ) : B 1 besser oder gleich B 2. Man wende nun den Algorithmus Quickselect aus der Vorlesung gemäß der gerade definierten Relation an, um so das 3n/100 -te Element bzgl. zu wählen. Heiße dieses p. Man verwende nun die von Quicksort bekannte Art zu partionieren, um F derart in zwei Teile zu teilen, dass der linke Teil alle Elemente e F mit e p enthält und der rechte Teil alle anderen. Der linke Teil enthält die gesuchten 3% mit der besten Bewertung. b) Quickselect: erwartet O(n) Zeit. Partitionieren: O(n) Zeit. Aufgabe 6. Zeigen oder widerlegen Sie, dass 2 2n = O(3 n ). Gilt nicht. Wenn doch, gäbe es c > 1,n 0 > 1 mit 2 2n c3 n für alle c n 0. Es ist aber 4 n = (2 2 ) n = 2 2n c3 n ( ) 4 n c n log 3 c, 4/3 was ein Widerspruch ist zur Unbeschränktheit von n nach oben.

svorschlag Zeigen oder widerlegen Sie, dass 2 3n = O(5 n ). Gilt nicht. Wenn doch, gäbe es c > 1,n 0 > 1 mit 2 3n c5 n für alle c n 0. Es ist aber 8 n = (2 3 ) n = 2 3n c5 n ( ) 8 n c n log 5 c, 8/5 was ein Widerspruch ist zur Unbeschränktheit von n nach oben. Zeigen oder widerlegen Sie, dass 3 2n = O(5 n ). Gilt nicht. Wenn doch, gäbe es c > 1,n 0 > 1 mit 3 2n c5 n für alle c n 0. Es ist aber 9 n = (3 2 ) n = 3 2n c5 n ( ) 9 n c n log 5 c, 9/5 was ein Widerspruch ist zur Unbeschränktheit von n nach oben. Aufgabe 7. Bestimmen Sie die en der folgenden Rekurrenzen im Θ-Kalkül mit dem Master- Theorem: T (1) = 1, T (n) = 5T (n/3) + 4n, n = 3 k, k N S(1) = 42, S(n) = n + 2S(n/2), n = 2 k, k N T (n) = Θ ( n log 3 5), S(n) = Θ(nlogn) Bestimmen Sie die en der folgenden Rekurrenzen im Θ-Kalkül mit dem Master- Theorem: T (1) = 1,T (n) = n/5 + 4T (n/5), n = 5 k, k N S(1) = 33, S(n) = 5S(n/4) + 89n, n = 4 k, k N T (n) = Θ(n), S(n) = Θ ( n log 4 5)

svorschlag Bestimmen Sie die en der folgenden Rekurrenzen im Θ-Kalkül mit dem Master- Theorem: T (1) = 2001, T (n) = 42n + 2T (n/2), n = 2 k, k N S(1) = 5, T (n) = 5 4 T (n/7) + n/7, n = 7k, k N T (n) = Θ(nlogn), S(n) = Θ(n) Variante 4 Bestimmen Sie die en der folgenden Rekurrenzen im Θ-Kalkül mit dem Master- Theorem: T (1) = 2, T (n) = 7n + 4T (n/2), n = 2 k, k N S(1) = 5, T (n) = 3T (n/3) + 1001n, n = 3 k, k N T (n) = Θ ( n 2), S(n) = Θ(nlogn) Aufgabe 8. Nennen Sie einen Vorteil von Radix-Sort gegenüber Mergesort und von Mergesort gegenüber Quicksort. Vorteil Radix-Sort gegenüber Mergesort: Zeit in O(n) statt Θ(nlogn) Vorteile Mergesort gegenüber Quicksort: stabil, O(n log n) bzw. n log n + O(n) Vergleiche im worst-case Nennen Sie einen Vorteil und Nachteil von Mergesort gegenüber Quicksort. Vorteile von Mergesort: O(nlogn) Vergleiche im schlimmsten Fall, bei Quicksort Θ(n 2 ) stabil nlogn + O(n) Elementvergleiche statt Θ(n 2 ) wie im schlimmsten Fall bei Quicksort Nachteile von Mergesort: in der Praxis oft langsamer nicht inplace

svorschlag Nennen Sie je einen Vorteil von Radix-Sort gegenüber Quicksort und von Quicksort gegenüber Mergesort. Vorteile von Radixsort gegenüber Quicksort: Zeit in O(n) statt erwartet Θ(n log n) bzw. worst-case Θ(n 2 ), Radix-Sort stabil im Gegensatz zu Quicksort Vorteile von Quicksort gegenüber Mergesort: In der Praxis oft schneller, inplace Aufgabe 9. Ein Student hat sich nachfolgenden RAM-Code ausgedacht (dabei ist x ein Platzhalter): R 1 := 1 R 2 := 0 R 4 := x schleifenanfang: R 2 := R 2 + R 1 R 1 := R 1 + 1 R 3 := R 1 R 4 JZ schleifenanfang, R 3 Welchen Wert enthält das Register R 2 nach Ausführung des Programms für den Fall das x = 4? Für den Fall x = 4 enthält das Register R 2 den Wert R 2 = 1 + 2 + 3 = 6. Im Fall x = n N gilt nach Ausführung des Programms R 2 = n 1 i=1 i

svorschlag Aufgabe 10. Ist dieser Graph ein DAG? Begründen Sie (z.b. durch Markierungen in der Zeichnung des Graphen)! Der Graph ist kein DAG, da er einen gerichteten Kreis enthält. Aufgabe 11. Gegeben Sei folgender Algorithmus zum Finden einer Zahl x in einem unsortierten Feld A von natürlichen Zahlen. 1: procedure findnumber(a : Array [1..n] of N, x N ) 2: for i = 1 to n do 3: if A[i] == x return i 4: invariant 5: return -1 Geben Sie in Zeile 4 eine gültige und sinnvolle Invariante an. Zum Beispiel: k {1...i} : A[k] x. Zusatz: Falls Zeile 5 aufgerufen wird, so gilt i = n. Also gilt i {1..n} : A[i] x und mit anderen Worten: A enthält kein Element mit dem Wert x. Aufgabe 12. Welche der folgenden Operationen eines unbeschränkten Feldes liegen im schlimmsten Fall in Θ(n) (ohne Amortisierung): pushback, Folge von n pushback, [ ] (Elementzugriff), (Größe)? pushback, Folge von n pushback Aufgabe 13.

svorschlag Nennen Sie zwei Vorteile von beschränkten Feldern gegenüber einfach verketteten Listen. keine Zeiger Cache-effizientes Iterieren effizienter beliebiger/wahlfreier Zugriff einfach Nennen Sie zwei Nachteile von beschränkten Feldern gegenüber verketteten Listen. kein effizientes Einfügen an beliebiger Position Speicherplatz-Verschnitt einzelne Operationen können lange dauern nicht so flexibel Nennen Sie zwei Vorteile von einfach verketteten Listen gegenüber beschränkten Feldern. flexibel keine Ausreißer bei der Laufzeit der Operationen kein Speicherplatz-Verschnitt effizientes Einfügen an beliebiger Position Variante 4 Nennen Sie zwei Nachteile von einfach verketteten Listen gegenüber beschränkten Feldern. Zeiger benötigen zusätzlichen Platz Iterieren nicht Cache-effizient kein effizienter beliebiger/wahlfreier Zugriff komplizierter

Aufgabe 14. svorschlag Gegeben Sei eine Hashtabelle mit 10 Einträgen und die Hashfunktion h(x) = x DIV 10. Fügen Sie die Elemente 4, 77, 5, 63, 98, 3, 22, 23, 99 in der gegebenen Reihenfolge in die Hashtabelle ein. Verwenden Sie Hashing mit lineare Suche (zyklisches Array). Geben Sie nur das entgültige Ergebnis an. 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 4 5 3 22 23 99 63 77 98 Gegeben Sei eine Hashtabelle mit 10 Einträgen und die Hashfunktion h(x) = x DIV 10. Fügen Sie die Elemente 3, 76, 4, 62, 97, 2, 21, 22, 98 in der gegebenen Reihenfolge in die Hashtabelle ein. Verwenden Sie Hashing mit lineare Suche (zyklisches Array). Geben Sie nur das entgültige Ergebnis an. 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 3 4 2 21 22 98 62 76 97 Gegeben Sei eine Hashtabelle mit 10 Einträgen und die Hashfunktion h(x) = x DIV 10. Fügen Sie die Elemente 2, 75, 3, 61, 96, 1, 21, 22, 97 in der gegebenen Reihenfolge in die Hashtabelle ein. Verwenden Sie Hashing mit lineare Suche (zyklisches Array). Geben Sie nur das entgültige Ergebnis an. 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 2 3 1 21 22 97 61 75 96

svorschlag Aufgabe 15. Ein Array A[1..h] stelle einen impliziten binären Heap dar. Geben Sie sowohl den Index des Parents als auch des linken Kindes für das Element j an, gegeben dass beide existieren. parent(j) = linkes Kind(j) = parent(j) = j/2, linkes Kind(j) = 2 j Ein Array A[1..h] stelle einen impliziten binären Heap dar. Geben Sie sowohl den Index des linken als auch des rechten Kindes für das Element j an, gegeben dass beide existieren. linkes Kind(j) = rechtes Kind(j) = linkes Kind(j) = 2 j, rechtes Kind(j) = 2 j + 1 Ein Array A[1..h] stelle einen impliziten binären Heap dar. Geben Sie sowohl den Index des Parents als auch des rechten Kindes für das Element j an, gegeben dass beide existieren. parent(j) = rechtes Kind(j) = parent(j) = j/2, rechtes Kind(j) = 2 j + 1 Aufgabe 16. Erläutern Sie kurz die Hauptidee des rekursiven recmult-algorithmus der Vorlesung zur Multiplikation von zwei n-bit Ziffern a, b. Im Wesentlichen handelt es sich um einen Darstellungstrick: Es sei a = a 1 B k + a 0, b = b 1 B k + b 0. Dann a b = a 1 b 1 B 2k + (a 1 b 0 + b 1 a 0 )B k + a 0 b 0. Daraus lässt sich dann der Algorithmus ableiten.

svorschlag Aufgabe 17. Wie lautet die Datenstrukurinvariante für doppelt verkettete Listen aus der Vorlesung? prev next = next prev = this Wie lautet die Heap-Eigenschaft? Bäume (oder Wälder) mit v :parent(v) v