PDF zur VO

302 downloads 319 Views 566KB Size Report
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] 



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] 



Ablauf der UE  •  Robert Legenstein: 

03.10.2013 

[email protected] 



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] 



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] 



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] 



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