Aufgabe (Schreibtischtest, lexikographische Ordnung)

Ähnliche Dokumente
Aufgabe (Schreibtischtest, Algorithmenanalyse)

Übung Algorithmen und Datenstrukturen

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

Humboldt-Universität zu Berlin Berlin, den Institut für Informatik

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

Das Suchproblem. Gegeben Menge von Datensätzen. Beispiele Telefonverzeichnis, Wörterbuch, Symboltabelle

Prof. Dr. Margarita Esponda

Counting - Sort [ [ ] [ [ ] 1. SS 2008 Datenstrukturen und Algorithmen Sortieren in linearer Zeit

2.3.1 Einleitung Einfache Sortierverfahren Höhere Sortierverfahren Komplexität von Sortierverfahren Spezielle Sortierverfahren

3. Übungsblatt zu Algorithmen I im SoSe 2017

Tutoraufgabe 1 (Sortieralgorithmus):

Übung Datenstrukturen. Sortieren

Heapsort / 1 A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8]

Ordnen Sie die folgenden Funktionen nach ihrer asymptotischer Komplexität in aufsteigender Reihenfolge: i=1 4i + n = 4 n. i=1 i + 3n = 4 ( n(n+1)

2. Grundlagen. Beschreibung von Algorithmen durch Pseudocode. Korrektheit von Algorithmen durch Invarianten.

Algorithmen und Datenstrukturen

Quicksort ist ein Divide-and-Conquer-Verfahren.

UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 9. Sortieren

Übung: Algorithmen und Datenstrukturen SS 2007

Algorithmen und Datenstrukturen 1 VL Übungstest WS November 2007

8. Sortieren II. 8.1 Heapsort. Heapsort. [Max-]Heap 6. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften

Bucketsort. Korrektheit. Beispiel. Eingabe: Array A mit n Elementen im Bereich [0,1) Annahme: die Elemente sind in [0,1) gleichverteilt.

Übung Algorithmen und Datenstrukturen

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

4. Sortieren 4.1 Vorbemerkungen

Kap. 3: Sortieren. Überblick. Unser Sortierproblem. Motivation. Laufzeitmessung. Warum soll ich hier bleiben? Sortierverfahren sind WICHTIG!!!

Algorithmen und Datenstrukturen SS09. Foliensatz 15. Michael Brinkmeier. Technische Universität Ilmenau Institut für Theoretische Informatik

Datenstrukturen und Algorithmen 2. Klausur SS 2001

Klausur Theoretische Informatik I WS 2004/2005

Algorithmen und Datenstrukturen

7. Sortieren Lernziele. 7. Sortieren

String - Matching. Kapitel Definition

Abstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken.

Aufgabenblatt: Arrays

Übung Algorithmen und Datenstrukturen

2.2 Allgemeine (vergleichsbasierte) Sortierverfahren

Ü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:

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

Karlsruher Institut für Technologie Institut für Theoretische Informatik. Klausur Algorithmen I

Datenstrukturen und Algorithmen

INFORMATIK FÜR BIOLOGEN

Übung Algorithmen und Datenstrukturen

Proseminar String Matching

5. Übungsblatt zu Algorithmen I im SoSe 2016

Aufgabe 8. 1 Arbeitsweise illustrieren. 2 Korrektheitsbeweis führen. 3 Laufzeitanalyse durchführen.

Algorithmen und Datenstrukturen (Th. Ottmann und P. Widmayer) Folien: Spezielle Sortierverfahren Autor: Sven Schuierer

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

Probeklausur Computerorientierte Mathematik II

Datenstrukturen und Algorithmen. 7. Suchen in linearen Feldern

Algorithmen und Datenstrukturen

Algorithmentheorie Randomisierung. Robert Elsässer

p max = 4 T = 8 Work = 28 3 I = Work / T = 3,5 2 Cost = p max * T = 32 U = I / p max = 87,5% 1

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1

Abschnitt: Algorithmendesign und Laufzeitanalyse

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

Algorithmen und Datenstrukturen 1-3. Seminar -

Die Schnittstelle Comparable

Klausur Algorithmentheorie

5. Übungsblatt zu Algorithmen II im WS 2017/2018

Kurs 1613 Einführung in die imperative Programmierung

Effiziente Algorithmen 2

JAVA - Suchen - Sortieren

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

Interne Sortierverfahren

Programmieren I. Kapitel 7. Sortieren und Suchen

Sortieralgorithmen. Jan Pöschko. 18. Januar Problemstellung Definition Warum Sortieren?... 2

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

Algorithmische Bioinformatik 1

Kapitel 6 Elementare Sortieralgorithmen

Definition Ein Heap (priority queue) ist eine abstrakte Datenstruktur mit folgenden Kennzeichen:

1 Einführung. 2 Typ-0- und Typ-1-Sprachen. 3 Berechnungsmodelle. 4 Unentscheidbarkeit. 5 Unentscheidbare Probleme. 6 Komplexitätstheorie

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

Grundlagen der Programmierung

Asymptotische Laufzeitanalyse: Beispiel

Programmieren in C/C++: Klausur 2 ( )

Tutoraufgabe 1 (Hoare-Kalkül):

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

VBA-Programmierung: Zusammenfassung

Vorlesung Informatik 2 Algorithmen und Datenstrukturen. (25 Sortieren vorsortierter Daten)

Algorithmen und Datenstrukturen

Übungsklausur Algorithmen I

Der Dreyfus-Wagner Algorithmus für das Steiner Baum Problem

Algorithmen und Datenstrukturen

Kapitel 5. Textalgorithmen. 5.1 Grundbegriffe

15. Elementare Graphalgorithmen

Suchen und Sortieren

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

Aufgabe 1 ZUFÄLLIGES ENGLISCH. »Programmieren«, WS 2006/2007. Nino Simunic M.A.

Algorithmen und Datenstrukturen II

5. Bäume und Minimalgerüste

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Grundlagen der Programmierung 2. Sortierverfahren

Uberblick 1. Kurzeste Wege 2. Sichtbarkeitsgraphen 3. Berechnung des Sichtbarkeitsgraphen 4. Kurzeste Wege fur polygonale Roboter 1

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)

ABITURPRÜFUNG 2006 GRUNDFACH INFORMATIK

Technische Universität München

In C und Java müssen Variablen und Methodenergebnisse durch Typangaben erläutert werden. Welche der folgenden Aussagen sind korrekt und welche nicht:

Übung Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Tutorium I

Transkript:

Aufgabe (Schreibtischtest, lexikographische Ordnung) Führen Sie einen Schreibtischtest für den Algorithmus Bubblesort aus der VL für die folgenden Eingabe-Arrays durch. Geben Sie das Array S nach jedem Durchlauf der Zeilen 5-7 an. 1 S = [6, 1, 4, 9, 2, 7] Ordnung: natürliche Ordnung auf den natürlichen Zahlen Bubblesort(Array A) Input: Array A von n ganzen Zahlen. Output: Array A aufsteigend sortiert. 1: repeat 2: swapped := false 3: for i := 1 to n 1 do 4: if A[i] > A[i+1] then 5: temp := A[i] 6: A[i] := A[i + 1] 7: A[i + 1] := temp 8: swapped := true 9: end if 10: end for 11: until not swapped

Aufgabe (Schreibtischtest, lexikographische Ordnung) Führen Sie einen Schreibtischtest für den Algorithmus Bubblesort aus der VL für die folgenden Eingabe-Arrays durch. Geben Sie das Array S nach jedem Durchlauf der Zeilen 5-7 an. 1 S = [6, 1, 4, 9, 2, 7] Ordnung: natürliche Ordnung auf den natürlichen Zahlen 2 S = [ogr, rov, obb, rrv, vgb, ogv] Ordnung: lexikographische Ordnung auf Σ = {r, o, g, b, v} mit r < o < g < b < v Lexikographische Ordnung für Zeichenketten aus Σ m (wobei Σ geordnetes Alphabet): Es gilt a 1... a m < b 1... b m g.d.w. ein i mit 1 i m existiert, so dass a i < b i und a j = b j für alle j < i. Bubblesort(Array A) Input: Array A von n ganzen Zahlen. Output: Array A aufsteigend sortiert. 1: repeat 2: swapped := false 3: for i := 1 to n 1 do 4: if A[i] > A[i+1] then 5: temp := A[i] 6: A[i] := A[i + 1] 7: A[i + 1] := temp 8: swapped := true 9: end if 10: end for 11: until not swapped

Aufgabe (Schreibtischtest, Algorithmenanalyse) Führen Sie einen Schreibtischtest für den Algorithmus Positionsort für das folgende Eingabe-Array durch. Geben Sie nach jedem Durchlauf der for-schleife mit Laufvariablen i das Array B an. Gehen sie davon aus das B mit den Werten 0 initialisiert ist. 1 S = [5, 2, 7, 5, 5, 7] Ordnung: natürliche Ordnung auf den natürlichen Zahlen Erläutern Sie den Algorithmus. Positionsort(S) 1: n := S ; 2: B := neues Array der Länge n 3: for i = 1.. n do 4: pos := 1; 5: for j = 1.. i 1 do 6: if S[j] S[i] then 7: pos := pos+1; 8: end if 9: end for 10: for j = i + 1.. n do 11: if S[j] < S[i] then 12: pos := pos+1; 13: end if 14: end for 15: B[pos] := S[i]; 16: end for 17: return B;

Aufgabe (Stabilität) In dieser Aufgabe betrachten wir Arrays mit Einträgen des abstrakten Datentyps Element. Grundlage dafür bilden eine Menge K von Schlüsseln, eine Menge V von Werten und eine lineare Ordnung auf K. Ein Element e hat einen Schlüssel e.key K und einen Wert e.val V. Wir notieren ein Element e auch als Paar (e.key, e.val). Sind e 1 und e 2 vom Typ Element, können wir e 1 und e 2 auf Basis ihrer Schlüssel vergleichen: Es gelte genau dann e 1 e 2, wenn e 1.key e 2.key. Ein Sortierverfahren heißt stabil, wenn Elemente mit gleichen Schlüsseln nach der Sortierung in der gleichen Reihenfolge aufeinander folgen wie vor der Sortierung.

Aufgabe (Stabilität) In dieser Aufgabe betrachten wir Arrays mit Einträgen des abstrakten Datentyps Element. Grundlage dafür bilden eine Menge K von Schlüsseln, eine Menge V von Werten und eine lineare Ordnung auf K. Ein Element e hat einen Schlüssel e.key K und einen Wert e.val V. Wir notieren ein Element e auch als Paar (e.key, e.val). Sind e 1 und e 2 vom Typ Element, können wir e 1 und e 2 auf Basis ihrer Schlüssel vergleichen: Es gelte genau dann e 1 e 2, wenn e 1.key e 2.key. Ein Sortierverfahren heißt stabil, wenn Elemente mit gleichen Schlüsseln nach der Sortierung in der gleichen Reihenfolge aufeinander folgen wie vor der Sortierung. Entscheiden Sie, ob Positionsort stabil ist. Falls Positionsort nicht stabil ist, geben Sie eine (möglichst kleine) Instanz als Gegenbeispiel an. Begründen Sie Ihre Entscheidung. Positionsort(S) 1: n := S ; 2: B := neues Array der Länge n 3: for i = 1.. n do 4: pos := 1; 5: for j = 1.. i 1 do 6: if S[j] S[i] then 7: pos := pos+1; 8: end if 9: end for 10: for j = i + 1.. n do 11: if S[j] < S[i] then 12: pos := pos+1; 13: end if 14: end for 15: B[pos] := S[i]; 16: end for 17: return B;

Allgemeine Sortierverfahren Ein allgemeines Sortierverfahren ist ein Sortierverfahren, welches nur Wissen über die Anordnung der zu sortierenden Elemente erlangen kann, indem es Elemente vergleicht. Ansonsten können keine weiteren Eigenschaften der Elemente vorausgesetzt bzw. ausgenutzt werden. Welche der aus der Vorlesung bekannten Sortierverfahren sind allgemeine Sortierverfahren?

Aufgabe (Sortierung spezieller Arrays) Beweisen oder widerlegen Sie: Es gibt ein Sortierverfahren, welches ein Array von n beliebigen (in konstanter Laufzeit vergleichbaren) Elementen im worst case in Laufzeit O(n) sortiert, falls... a)... das Array nur Zahlen zwischen 1 und 100000 enthält. Hinweis: Für den Fall, dass es ein solches Sortierverfahren gibt, können Sie als Beweis die Idee eines konkreten Verfahrens beschreiben.

Aufgabe (Sortierung spezieller Arrays) Beweisen oder widerlegen Sie: Es gibt ein Sortierverfahren, welches ein Array von n beliebigen (in konstanter Laufzeit vergleichbaren) Elementen im worst case in Laufzeit O(n) sortiert, falls... a)... das Array nur Zahlen zwischen 1 und 100000 enthält. b)... das Array eine durch 5 teilbare Länge hat, und die ersten 5 Elemente sortiert sind, die zweiten 5 Elemente sortiert sind, usw. Hinweis: Für den Fall, dass es ein solches Sortierverfahren gibt, können Sie als Beweis die Idee eines konkreten Verfahrens beschreiben.