3. Okt. 2013 ... Möbelstücks (Teilschri/e auch wieder Algorithmen!) ‐ Datenstruktur: ... Op mieren.
– Algorithmen zur Manipula on von Datenstrukturen (z.B.:.
Datenstrukturen und Algorithmen VO 708.031
03.10.2013
[email protected]
1
Organisatorisches • VO (708.031) & UE (708.032) – bei beiden extra anmelden, zwei Zeugnisse
• Vortragende: – VO: Elmar Rückert (
[email protected]) – UE: Robert Legenstein (
[email protected])
• Homepage:
hMp://www.igi.tugraz.at/lehre/D&A/WS13/index.html
• Newsgroup: tu‐graz.lv.datenalgo 03.10.2013
[email protected]
2
Ablauf der UE • Robert Legenstein:
03.10.2013
[email protected]
3
Ablauf der VO • 12‐14 Einheiten zu je 90 Minuten – Do. 11:15 – 12:45, 10min Pause gegen 12.00 – Folien und HilfsbläMer werden online gestellt – Skriptum (6.50,‐) im CopyShop‐Infelldgasse erhältlich – Homepage: Literatur, Java Applets, Folien vom Vorjahr – Neu: Zusatzpunkte durch Abgeben von Code/Ergebnisse
• 5‐6 Prüfungstermine pro Jahr – Doppeltermin im Januar und Februar – Je ein Termin im April, Juni, Oktober und Dezember 03.10.2013
[email protected]
4
Ablauf der VO • Prüfung dauert 90 Minuten – Stoff wird am Ender der VO bekanntgegeben (09.01.2014) – Notenschlüssel: • • • • •
36 – 40 Punkte 31 – 35.5 Punkte 25 – 30.5 Punkte 20 – 24.5 Punkte Entwurf&Analyse von Alg. (5. Semester) • Probabilishsche Inferenz ‐> Machine Learning A u. B (Masterstudium) • • • •
03.10.2013
[email protected]
8
3. Sorherverfahren (InserhonSort, MinSort, BubbleSort) MergeSort QuickSort HeapSort ‐> Datenstruktur Halden RadixSort ‐> Gestreute Speicherung (Hashtabellen) • Untere Schranke für vgl. basierende sort. Alg. • • • • •
03.10.2013
[email protected]
9
4. Suchen in linearen Feldern • • • • • •
Sequenhelle Suche Selbstanordnende Felder Interpolahonssuche Binärsuche Quadrahsche Binärsuche Fastsearch
03.10.2013
[email protected]
10
5. Suchen in Bäumen • • • •
Bäume als Datenstruktur Suchen in Binärbäumen Balancierte Bäume (2‐4 Bäume) Rot/Schwarz Bäume
• Spezielle Kapitel aus D&A
03.10.2013
[email protected]
11
Kapitel 1 Einführung u. Grundlagen
03.10.2013
[email protected]
12
Mohvahon • Flut an Daten, z.B. Videos im Internet, sollen "effizient" verarbeitet werden • „Algorithms are at the heart of every nontrivial computer applicahon“ [K. Mehlhorn and P. Sanders] Online verfügbar, Link unter Literatur auf der HP
• Praxisrelevant, z.B. für Real‐hme Apps 03.10.2013
[email protected]
13
Mohvahon • Sie kennen Grundzüge des Programmierens • Fragen der Performanz spielten noch kaum eine Rolle • Genau darum geht es in dieser Vorlesung – Wie schnell ist mein Programm – Wie kann ich es schneller machen – Wie kann ich beweisen, dass es immer so schnell läuu – Wie kann ich den maximalen Speicherverbrauch abschätzen bzw. reduzieren
03.10.2013
[email protected]
14
Interakhon Datenstrukturen
Algorithmen
04.10.2008
[email protected]
Beispiele aus dem Alltag ‐ Bedienungsanleitung zum Zusammenbau eines Möbelstücks (TeilschriMe auch wieder Algorithmen!) ‐ Datenstruktur: Pakete und Werkzeugkisten ‐ Algorithmen: Arbeitsvorgänge wie Schrauben ...
‐ Kochen nach einem detaillierten Kochrezept ‐ Datenstruktur: Schränke/Laden in einer Küche ‐ Algorithmen: Mixen, Rühren, Auwochen ...
04.10.2008
[email protected]
Beispiele aus der Informahk • Beispiele für Algorithmen: – Sorheren – Suchen – Codieren – Ophmieren – Algorithmen zur Manipulahon von Datenstrukturen (z.B.: Einfügen, Enxernen, Maximum, etc.) – Kombinahonen daraus (z.B.: zuerst Sorheren und dann Suchen) • Wichhge Eigenschau: modular, können daher kombiniert werden 03.10.2013
[email protected]
17
Beispiele aus der Informahk • Beispiele für Datenstrukturen: – Lineare Felder (arrays) – Listen (linked lists) – Stapel (stacks) – Schlangen (queues) – Halden (heaps) – Bäume (trees) – Hashtabellen – Kombinahonen daraus (z.B.: Baum aus Halden, Schlange aus Bäumen, etc.) 03.10.2013
[email protected]
18
1. Einführung u. Grundlagen • Grundlagen – Was ist ein Algorithmus – Was ist eine Datenstruktur
• Beispiele: Einfache Sorheralgorithmen – InserhonSort, MinSort, BubbleSort
• Asymptohsche Schranken zur Laufzeitanalyse • Elementare Datenstrukturen 03.10.2013
[email protected]
19
Definihon von Algorithmen • Genaue Definihon schwierig • Ein Algorithmus ist ein Verfahren zur Lösung eines Problems (im Unterschied zu seiner Implementahon!) • Grobe Definihon: Ein Algorithmus ist eine endliche Folge von Anweisungen, die die Lösung eines beshmmten Problems erlaubt. Jede Anweisung hat eine klare Bedeutung und kann mit endlichem Aufwand und in endlicher Zeit ausgeführt werden.
03.10.2013
[email protected]
20
Definihon von Datenstrukturen • Definihon: Eine Datenstruktur ist eine beshmmte Art Daten zu verwalten und zu verknüpfen, damit man in geeigneter Art und Weise auf sie zugreifen und diese manipulieren kann. • Datenstrukturen sind immer mit speziellen Operahonen verbunden (z.B.: Einfügen, Enxernen, Sorheren, Maximum, Nachfolger,…) • Diese Operahonen sind wiederum Algorithmen
03.10.2013
[email protected]
21
Datenstrukturen und Algorithmen können nicht getrennt voneinander betrachtet werden • Algorithmen und Datenstrukturen gehen Hand in Hand • Ein Algorithmus (Methode, Verfahren, Rezept) nimmt beshmmte Daten als Input und transformiert diese nach festen Regeln in einen Output • Dabei greiu der Algorithmus auf Daten zu, die in einer Datenstruktur organisiert sind 03.10.2013
[email protected]
22
Analyse von Algorithmen Wir wollen Algorithmen und Datenstrukturen systemaIsch analysieren und vergleichen. Was ist ein guter Algorithmus? • Er muss korrekt sein, d.h. das richhge Ergebnis für alle
möglichen Inputs liefern.
• Er muss „schnell“ sein. • Er soll wenig Ressourcen (Zeit, Speicher, Bandbreite, CPUs, logische GaMer, …) benöhgen. 03.10.2013
[email protected]
23
Wir wollen wissen wie viel Zeit (allg.: Ressourcen) der Algorithmus in Abhängigkeit der Inputgröße benöhgt. Abstrakhon des Algorithmus (und der Datenstruktur) (Unabhängig von der eigentlichen Implemenherung – Sprache, OS, Protokolle, Hardware etc.) Mathemahsche Werkzeuge: O‐Notahon, Kombinatorik, Wahrscheinlichkeitstheorie, etc.
03.10.2013
[email protected]
24
Analyse ‐ Vorgehensweise 1
04.10.2008
Annahmen (Input,…)
2
Verbale Formulierung (Idee)
3
Abstrakhon ‐ Pseudocode
4
SchriMweise Analyse
5
Fallunterscheidung
[email protected]
1. Einführung u. Grundlagen • Grundlagen – Was ist ein Algorithmus, Pseudo‐Code – Was ist eine Datenstruktur
• Beispiele: Einfache SorIeralgorithmen – InserIonSort, MinSort, BubbleSort
• Asymptohsche Schranken zur Laufzeitanalyse • Elementare Datenstrukturen 03.10.2013
[email protected]
26
1 Annahmen • Sorheren von Zahlenfolgen: Input: eine Sequenz von n Zahlen a1 , a2 ,…, an Output: eine Permutahon der Inputsequenz a1′, a2′ ,…, an′ sodass a1′ ≤ a2′ ≤ ≤ an′ • Instanz des Sorherproblems: Input: 31,41,59 ,26,41, 58 Output: 26,31,41,41,58,59 Ein Algorithmus ist korrekt, wenn er für jede Instanz des Inputs einen korrekten Output liefert.
03.10.2013
[email protected]
27
2 Formulierung (Idee) • Sorheren durch Einfügen (InserIonSort) • Sorheren durch Berechnen des kleinsten Elementes (MinSort) • Sorheren durch Tauschen benachbarter Elemente (BubbleSort)
03.10.2013
[email protected]
28
Formulierung: InsertahonSort Betrachte die erste Zahl (oder Karte) als Referenz. Wähle nun jede andere Zahl beginnend mit der 2ten bis zur letzten. Vergleiche die gewählte Zahl (h) mit jeder mit kleinerem Index (x). Ist h kleiner als x dann verschiebe x auf die Posihon mit den nächstgrößeren Index. Diese Vergleiche werde so lange fortgeführt bis entweder die erste Zahl erreicht wurde oder keine Zahl (mit kleinerem Index) mehr kleiner ist. Tausche h mit der letzten Zahl mit der verglichen wurde.
03.10.2013
[email protected]
29
Formulierung: MinSort Laufe ab Index 1 über die gesamte Folge und merke Dir den kleinsten Wert. Vertausche diesen Wert mit dem, der in der Folge an Stelle 1 steht. Somit erhältst Du eine Folge, die bis Index 1 sorhert ist. Dann laufe ab Index 2 über diese Folge und merke Dir wieder den kleinsten Wert. Diesen vertauschst Du jetzt mit dem an Index 2 stehenden Wert. Die so entstandene neue Folge ist nun bereits bis Index 2 sorhert. Wiederhole diesen Vorgang bis Index (n‐1). Nach diesen (n‐1) Durchläufen erhältst Du eine vollständig sorherte Folge, und der Algorithmus ist beendet.
03.10.2013
[email protected]
30
Formulierung: BubbleSort Durchlaufe wiederholt eine Liste (von links nach rechts). In jedem Durchlauf werden je zwei benachbarte Zahlen verglichen und falls nöhg vertauscht, sodass am Ende eines Durchlaufs die größte Zahl am Ende der Liste steht (ganz rechts). Wiederhole diese Prozedur (wobei nun die letzte Zahl nicht mehr betrachtet werden muss) bis keine Vertauschungen mehr nöhg sind. Das lineare Feld ist dann sorhert.
03.10.2013
[email protected]
31
Analyse ‐ Vorgehensweise 1
04.10.2008
Annahmen (Input,…)
2
Verbale Formulierung (Idee)
3
Abstrakhon ‐ Pseudocode
4
SchriMweise Analyse
5
Fallunterscheidung
[email protected]
3 Pseudo Code • Pseudo Code ist präziser als verbale Formulierungen allerdings nicht so präzise wie eine spezielle Implemenherung (z.B. in Java oder C++). • Viele Definihonen exisheren. Wir verwenden eine Definihon angelehnt an Java Code. Kommentare //Mein Kommentar
Einrückungen Dienen zur Strukturierung der Anweisungen 03.10.2013
[email protected]
33
3 Pseudo Code Schleifen for repeat unIl while do 03.10.2013
[email protected]
34
3 Pseudo Code Bedingte Anweisung if then [else ] Ein‐ und Ausgabe input output print 03.10.2013
[email protected]
35
3 Pseudo Code Algorithmen DeklaraIon Algorithm name(param1, param2, ...) : //Input: Beschreibung der Eingabevariablen //Output: Beschreibung der Ausgabevariablen ... weitere Anweisungen ... Rückgabewert: return value
03.10.2013
[email protected]
36
3 Pseudo Code Beispiel der Universität Bern InformaIk, EI VO: Algorithm arrayMax(A,n) : //Input: Ein Array A, das n Integerwerte enthält //Output: Das maximale Element in A currentMax = A[1] for i = 2 to n if currentMax 1 AND h A[i+1] 6: h = A[i] 7: A[i] = A[i+1] 8: A[i+1] = h 9: flgS = 0 10: n=n-1 11: return A 03.10.2013
hMp://de.wikipedia.org/wiki/Bubblesort
[email protected]
41
Analyse ‐ Vorgehensweise 1
04.10.2008
Annahmen (Input,…)
2
Verbale Formulierung (Idee)
3
Abstrakhon ‐ Pseudocode
4
SchriMweise Analyse
5
Fallunterscheidung
[email protected]
Analyse der Algorithmen • Was haben alle drei Methoden gemeinsam? • Welcher Algorithmus ist der schnellste? • Wieviel Speicher wird benöIgt? • • •
03.10.2013
Sie kennen Grundzüge des Programmierens Fragen der Performanz spielten noch kaum eine Rolle Genau darum geht es in dieser Vorlesung – Wie schnell ist mein Programm – Wie kann ich es schneller machen – Wie kann ich beweisen, dass es immer so schnell läuu – Wie kann ich den maximalen Speicherverbrauch abschätzen bzw. reduzieren
[email protected]
43
Analyse der Algorithmen • Variante 1: ImplemenIeren und Vergleichen – Matlab Datei auf der VO Homepage
03.10.2013
1.5
T(n) in sec
• Vorteile? • Nachteile?
insert min bubble
1
0.5
0 0
5000 n
[email protected]
10000 44
Zusatzpunkte sammeln • 1 Punkt für eine Implementahon eines weiteren SorIerverfahrens mit einer durchschniMlichen Laufzeit von O(n2). Code und Grafik kann in der nächsten VO abgegeben werden.
03.10.2013
[email protected]
45
Analyse der Algorithmen Vorteile der Implementahonsvariante: • Lerneffekt, keine theorehschen Überlegungen nöhg (math.), ausführliche Studien auf echten Daten. Nachteile: • Aufwendig bei komplexen Algorithmen, Schlussfolgerungen schwierig (Fallunterscheidung). Weitere Verfahren: • Variante 2: Zählen der elementaren SchriMe • Variante 3: Asymptohsche Schranken
03.10.2013
[email protected]
46
Zusammenfassung • Ophmieren von Algorithmen ‐> zentrales Thema in der Informahk (z.B. Apps, Vision, Robohk) • Algorithmen und Datenstrukturen können nicht getrennt voneinander behandelt werden, Definihonen. Wir wollen wissen wie viel Zeit (allg.: Ressourcen) der Algorithmus in Abhängigkeit der Inputgröße benöhgt.
• Analyse‐Vorgehensweise: Annahme‐>Formulierung ‐>Pseudocode‐>Analyse‐>Fallunterscheidung • 3 Varianten zur Analyse 03.10.2013
[email protected] 47
Danke für Ihre Aufmerksamkeit! Bis zum nächsten Mal. (Donnerstag, 10. Okt. 2013, 11:15, i13)
03.10.2013
[email protected]
48