Algorithmen & Datenstrukturen Blatt 4

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

4. Algorithmen und Datenstrukturen I Grundlagen der Programmierung 1 (Java)

Algorithmen und Datenstrukturen

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

Übersicht. Berechnung der Potenz für zwei ganze Zahlen Klausuraufgabe SS 2010! Berechnung der Cosinus-Funktion Klausuraufgabe WS 2010/2011!

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

Nachklausur Bitte in Druckschrift leserlich ausfüllen!

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015 Vorlesung 3, Donnerstag 6.

Grundlagen: Algorithmen und Datenstrukturen

Übung Datenstrukturen. Sortieren

Sortieralgorithmen. Inhalt: InsertionSort BubbleSort QuickSort. Marco Block

Algorithmen & Datenstrukturen 1. Klausur

Tutoraufgabe 1 (Hoare-Kalkül):

Programmierkurs Java

Algorithmen und Datenstrukturen

Datenstrukturen und Algorithmen

Viel Spaÿ! Aufgabe 0.1. Laufzeit unter Verdoppelung (-)

WS 2009/10. Diskrete Strukturen

Informatik II, SS 2014

Übung: Algorithmen und Datenstrukturen SS 2007

Algorithmen und Datenstrukturen VO 3.0 Vorlesungsprüfung 19. Oktober 2007

Informatik II, SS 2014

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

Übungsblatt 7. Thema: Sortieren, Objektorientierung

Klausur Theoretische Informatik I WS 2004/2005

Student: Alexander Carls Matrikelnummer: Aufgabe: Beschreibung des euklidischen Algorithmus Datum:

Ausgewählte Algorithmen: Sortieren von Listen

Algorithmen und Datenstrukturen Kapitel 1 Algorithmen & Algorithmenanalyse

Kapitel 3: Untere Schranken für algorithmische Probleme Gliederung

Kapitel 2: Analyse der Laufzeit von Algorithmen Gliederung

M. Graefenhan Übungen zu C. Blatt 3. Musterlösung

C# - Einführung in die Programmiersprache Arrays, Enumeration und Collections. Leibniz Universität IT Services Anja Aue

15. Elementare Graphalgorithmen

Informatik II Musterlösung

14. Rot-Schwarz-Bäume

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen

7. Sortieren Lernziele. 7. Sortieren

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:

Kapitel 1. Exakte Suche nach einem Wort. R. Stiebe: Textalgorithmen, WS 2003/04 11

Probeklausur: Programmierung WS04/05

Algorithmen und Datenstrukturen (Th. Ottmann und P. Widmayer) Folien: Suchverfahren Autor: Stefan Edelkamp / Sven Schuierer

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

Übungen zu Algorithmen

Klausur zur Vorlesung Grundbegriffe der Informatik 5. März 2014

Abschnitt: Algorithmendesign und Laufzeitanalyse

Informatik II, SS 2014

( )= c+t(n-1) n>1. Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3)

SOI Die Schweizer Informatikolympiade

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Allgemeine Hinweise: TECHNISCHE UNIVERSITÄT MÜNCHEN. Name Vorname Studiengang Matrikelnummer. Hörsaal Reihe Sitzplatz Unterschrift

Inhaltsverzeichnis. Ingo R. Dölle / Seite 1 von 5

Algorithmen & Komplexität

2.2 Allgemeine (vergleichsbasierte) Sortierverfahren

Datenstrukturen und Algorithmen

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

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

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

8. A & D - Heapsort. Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können.

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

Informatik II, SS 2014

Es sei a 2 und b 2a 1. Definition Ein (a, b)-baum ist ein Baum mit folgenden Eigenschaften:

Einstieg in die Informatik mit Java

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

Randomisierte Algorithmen 2. Erste Beispiele

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

Grundlagen der Programmierung WS 15/16 (Vorlesung von Prof. Bothe)

4 Effizienz und Komplexität 3.1 1

Laufzeit und Komplexität

Lösungsvorschläge zu Blatt Nr. 13

Übungen zum Vortrag Backtracking mit Heuristiken

Technische Universität München WS 2004/2005 Fakultät für Informatik 11. Dezember 2004 Prof. Dr. Seidl

Sortieralgorithmen. Direkte Sortierverfahren & Shellsort, Quicksort, Heapsort. Vorlesung Algorithmen und Datenstrukturen 2 im SS 2004

Klausur Algorithmen und Datenstrukturen II 29. Juli 2013

Informatik I 1. Kapitel. Einführung in Algorithmen und Datenstrukturen. Einführung in Algorithmen. Einführung in Algorithmen.

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

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse

2.4 Schleifen. Schleifen unterscheiden sich hinsichtlich des Zeitpunktes der Prüfung der Abbruchbedingung:

8.1.3 Operation Build-Max-Heap Operation zur Konstruktion eines Heaps Eingabe: Feld A[1..n], n = länge(a) BUILD-MAX-HEAP (A)

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

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Datenstrukturen, Algorithmen und Programmierung 2

damit hätten wir nach Ende der Schleife: "a[0 n-1] enthält nur Elemente aus a[0 n-1], aber in sortierter Reihenfolge".

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

Grafische Benutzeroberflächen

FH Ravensburg-Weingarten Schriftlich Prüfung Programmieren

Algorithmen und Datenstrukturen Tafelübung 4. Jens Wetzl 15. November 2011

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

Rekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Rekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Theoretische Informatik: Berechenbarkeit und Formale Sprachen

Teil 2 - Softwaretechnik. Modul: Programmierung B-PRG Grundlagen der Programmierung 1 Teil 2. Übersicht. Softwaretechnik

Grundlagen der Programmierung

Grafische Benutzeroberflächen

Algorithmen und Datenstrukturen

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik

To know recursion, you must first know recursion. Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 17 1

Gierige Algorithmen Interval Scheduling

Otto-von-Guericke-Universität Magdeburg Fakultät für Informatik Institut für Simulation und Graphik Prof. Dr. Holger Theisel

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben

Transkript:

Algorithmen & Datenstrukturen Blatt 4 Dr. Matthias Thimm Tina Walber, Leon Kastler, Martin Leinberger und Maximilian Strauch Fachbereich Informatik, Universität Koblenz-Landau 7. Dezember 2013 1

1 Experimentelle Bestimmung von Aufwandsklassen (9 Punkte) Im Folgenden sollen Sie experimentell die Aufwandsklasse des InsertionSort-Algorithmus bestimmen. Gehen Sie dafür wie folgt vor: a) Implementieren von InsertionSort (3 Punkte) Adaptieren Sie den InsertionSort- Algorithmus aus der Vorlesung (Foliensatz 06, Folien 10ff), so dass er mit beliebigen Listen 1 statt Arrays umgehen kann. Benutzen Sie für die Sortierfunktion die folgende Signatur: public static void sort(list<integer> list) b) Messung der Geschwindigkeit (3 Punkte) Messen Sie die Geschwindigkeit Ihrer Sortierfunktion für Listen mit n=100, n=200,..., n=2000 zufällig sortierten Elementen. Ermitteln Sie für jede Listengröße aus mehreren Messungen die durchschnittlich benötigte Zeit (in Millisekunden) zum Sortieren. Geben Sie den Sourcecode ihres Messframeworks ab. Geben Sie außerdem das Ergebnis zweier unterschiedlicher Messreihen ab: Eine Messreihe mit der Geschwindigkeit, wenn Sie der Sortierfunktion eine ArrayList 2 übergeben. Eine zweite Messreihe mit der Geschwindigkeit für LinkedList 3. c) Aufwandsklasse bestimmen (3 Punkte) Verwenden Sie Ihre Messreihen, um die Aufwandsklasse Ihrer Implementierung von InsertionSort zu bestimmen. Zeigen Sie dafür anhand Ihrer Messreihe, dass es ein c und n 0 gibt, so dass n n 0 : g(n) c f(n) (Foliensatz 04, siehe Folie 14). Dabei ist g(n) die von Ihnen gemessene Zeit für eine Liste der Größe n und f(n) die von Ihnen vermutete Aufwandsklasse. Vergleichen und diskutieren Sie die Ergebnisse für die beiden Messreihen. 1 http://docs.oracle.com/javase/6/docs/api/java/util/list.html 2 http://docs.oracle.com/javase/6/docs/api/java/util/arraylist.html 3 http://docs.oracle.com/javase/6/docs/api/java/util/linkedlist.html 2

2 Laufzeitanalyse: Code geben und Laufzeit berechnen (3 Punkte) Bestimmen Sie für die folgenden Methoden alg1, alg2 und alg3 jeweils: ob sie terminieren für beliebige Eingaben wenn sie terminieren, die Aufwandsklasse. Alle Eingaben der Algorithmen kommen immer aus dem Bereich der natürlichen Zahlen. Um zu zeigen, dass ein Algorithmus nicht terminiert genügt die Angabe eines einfachen Beispiels. a) void a l g 1 ( i n t n ) { i n t m = 1 ; i n t num = n n ; while (num!= 0) { num = num m; m = (m+1) m; b) void a l g 2 ( i n t n ) { i n t m = 1 ; i n t i = n n ; i n t j ; i n t p = 0 ; while ( i > 1) { j = 1 ; while (0 <= n j ) { p = 2 j ; j = j + 1 ; i = i / 2 ; 3

c) void a l g 3 ( i n t n ) { i n t i = n ; i n t k = n ; i n t j = 0 ; f o r ( j = 0 ; j < n ; j++) { i f ( j mod 2 == 0) k = k / 2 ; e l s e k = k 1 ; while ( i > 0) { i n t p = 1 ; while ( p < n n ) { k = k + ( k i ) mod p ; p = p + 1 ; i = i 1 ; 4

3 Wachstumsverhältnisse zwischen Funktionen (5 Punkte) Fülle in der folgenden Tabelle von Funktionen die Wachstumsverhältnisse zwischen Funktionen aus. Die Tabelle ist so zu verstehen: wenn die Funktion f(n) in der Zeile y und die Funktion g(n) in Spalte x stehen, so tragen Sie alle Zeichen α aus {O, Ω, Θ in die Zelle (x, y) ein, so dass f(n) α(g(n)) gilt. Also z.b. 13n O(log(n)) Füllen Sie alle Felder der Tabelle aus. (1 Punkt pro Zeile, pro Fehler 0.5 Abzug, mind. 0 Punkte pro Zeile) n Funktion 1000 2 log(n) 13n log(n) 2 3n 2 + 5 e n (2 ( 1) n )n n 4 n 4 5n 2 5

4 Vergleich von Aufwandsklassen (3 Punkte) Wählen Sie für a) 13n α( n 2 ), b) 3n2 + 5 α( 4n 4 ) und c) en α(log(n)) je ein α aus {O, Ω, Θ (siehe vorhergehende Aufgabe). Zeigen Sie die Richtigkeit Ihrer Aussage. f(n) (Tip: Sie können ein geltendes n 0 und c angeben oder lim n g(n) bzw. lim n g(n) f(n) berechnen) (1 Punkt pro Beweis) 6