Datenstrukturen & Algorithmen VO 708.031 05.10.2006 [email protected] Um was geht es? Datenstrukturen Algorithmen 05.10.2006 [email protected] Algorithmus Versuch einer Erklärung: Ein Algorithmus nimmt bestimmte Daten als Input und transformiert diese nach festen Regeln in einen sinnvollen Output. Versuch einer Definition: Ein Algorithmus ist eine endliche Folge von Anweisungen, die die Lösung eines bestimmten Problems erlaubt. Jede Anweisung hat eine klare Bedeutung und kann mit endlichem Aufwand und in endlicher Zeit ausgeführt werden. 05.10.2006 [email protected] Algorithmus - Beispiele - Bedienungsanleitung zum Zusammenbau eines Möbels (Teilschritte auch wieder Algorithmen!) - detailliertes Kochrezept - einfache mathematische Funktionen (addieren, subtrahieren, sin, exp, logische Vergleiche …) - Komplexere Operation: Sortieren, Suchen, Kodieren, Optimieren,… - Kombination daraus (zuerst ordnen und dann suchen) 05.10.2006 [email protected] Algorithmus Wichtige Eigenschaft: modular – können daher kombiniert werden. Basis von Algorithmen (Bausteine) in D&A • Sortieralgorithmen • Suchalgorithmen • Algorithmen zur Manipulation von Datenstrukturen • und andere… 05.10.2006 [email protected] Datenstruktur Eine Datenstruktur ist eine bestimmte Art Daten zu verwalten und zu verknüpfen, damit man in geeigneter Art und Weise auf sie zugreifen und diese manipulieren kann. Immer verbunden mit speziellen Operationen (Einfügen, Entfernen, Sortieren, Maximum, Nachfolger,…) = wieder Algorithmen 05.10.2006 [email protected] Datenstrukturen - Beispiele • Lineare Felder • Hashtabellen • Stapel (stacks) • Bäume • Schlangen (queue) • Graphen • Halden (heaps) • Sonderformen Komplexe Kombinationen möglich: • Baum aus Halden • Eine Schlange aus Bäumen •… 05.10.2006 [email protected] Um was geht es? Wir wollen Algorithmen und Datenstrukturen systematisch analysieren und vergleichen. Was ist ein guter Algorithmus? • Er muss das richtige Ergebnis für alle möglichen Inputs liefern. • Er muss schnell sein. • Er soll wenig Ressourcen (Speicher, Bandbreite, CPUs, logische Gatter,…) benötigen. 05.10.2006 [email protected] Analyse von Algorithmen Wir wollen wissen wie viel Zeit und Ressourcen der Algorithmus in Abhängigkeit der Inputgröße benötigt. Abstraktion des Algorithmus (und der Datenstruktur) (Unabhängig von der eigentlichen Implementation – Sprache, OS, Protokolle, Hardware etc.) Mathematische Werkzeuge: O-Notation, Kombinatorik, Wahrscheinlichkeitstheorie, etc. 05.10.2006 [email protected] Analyse - Vorgehensweise 05.10.2006 1 Annahmen (Input,…) 2 Verbale Formulierung (Idee) 3 Abstraktion - Pseudocode 4 Schrittweise Analyse 5 Fallunterscheidung [email protected] Ein erstes Beispiel Durchschnittwerts von Zahlen Annahme: Daten liegen als lineares Feld A[n] vor. Die Länge n ist bekannt. (Nur Integerzahlen) Verbale Formulierung: In einer Schleife gehe ich alle Daten durch und summiere diese auf. Zum Schluss dividiere ich durch die Anzahl der Werte. Pseudocode: 05.10.2006 DURCHSCHNITT (A) 1: Summe = 0 2: FOR i = 1 TO n 3: Summe = Summe + A[i] 4: RETURN (Summe/n) [email protected] Analyse der Laufzeit Zählen der elementaren Schritte: • • • • • Zuweisung Arithmetische Operation Einfache Funktionen Vergleiche Indirekte Adressierung a = b , c = 3.0 +,-,*,/ sqrt(x), ln(x) =, <, >, ≥, ≤ A[i], B[k+1] Alle Schritte brauchen dabei bestimmte, aber konstante Zeiten. 05.10.2006 [email protected] Ein zweites Beispiel Sortieren durch Einfügen (Insertion-Sort) Pseudocode: 05.10.2006 INSERTION-SORT(A) 1: FOR i=2 TO n 2: h=A[i] 3: j=i-1 4: WHILE A[j]>h AND j>0 DO 5: A[j+1]=A[j] 6: j=j-1 7: A[j+1]=h [email protected] Sortieren durch Einfügen Pseudocode Zeit-Kosten INSERTION-SORT (A) 1: FOR i=2 TO n 2: h=A[i] 3: j=i-1 4: WHILE A[j]>h AND j>0 DO 5: A[j+1]=A[j] 6: j=j-1 7: A[j+1]=h 05.10.2006 [email protected] Anzahl c1 n-1 c2 n -1 c3 c4 n -1 c5 c6 c7 n t i 2 i n i 2 (ti 1) (t 1) n -1 n i 2 i Fallunterscheidungen Gründe für „worst case“ Analyse: • Entspricht der oberen Schranke – keine Überraschungen •„worst case“ kommt häufig vor (z.B. Suchen nach nicht gespeicherten Daten) • Mittlerer Fall oft ordnungsmäßig nicht besser. • oft sehr einfach am Pseudocode ablesbar Gründe für eine „best case“ Analyse: • Entspricht der unteren Schranke • Wenn der bester Fall wahrscheinlicher ist Gründe für eine „average case“ Analyse: • um eine durchschnittliche Performace zu analysieren • zusätzliches Wissen über die Inputwahrscheinlichkeitsverteilung nötig • meist komplizierter in der Analyse 05.10.2006 [email protected] Vergleich zweier Ordnungen Sortieren des Grazer Telefonbuchs: 300.000 Einträge Alter PC: 1 MIPS Andere Sortieralgorithmen Insertion Sort n2 = 90 Milliarden Schritte 90.000 sec. = 25 h > 1 Tag Supercomputer : 500 Mflops (IBM 9021-720) 05.10.2006 n ld n ≈ 5,5 Mio. Schritte 5.5 sec. n2 = 180 sec !!! [email protected] Vergleich zweier Ordnungen Sortieren des NYC Telefonbuchs: 8.000.000 Einträge Alter PC: 1 MIPS Andere Sortieralgorithmen Insertion Sort n ld n ≈ 183 Mio.Schritte 183 sec. n2 = 6.4*1013 Schritte 416.67 Tage Supercomputer : 500 Mflops (IBM 9021-720) 05.10.2006 n2 = 35 Stunden !! [email protected] Danke für Ihre Aufmerksamkeit! Bis zum nächsten Mal. ( Donnerstag, 12.Okt.2006, 11:15, i13 ) 05.10.2006 [email protected]