180 likes | 328 Views
Datenstrukturen & Algorithmen. VO 708.031. Datenstrukturen. Algorithmen. Um was geht es?. 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:.
E N D
Datenstrukturen &Algorithmen VO 708.031 helmut.hauser@igi.tugraz.at
Datenstrukturen Algorithmen Um was geht es? helmut.hauser@igi.tugraz.at
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. helmut.hauser@igi.tugraz.at
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) helmut.hauser@igi.tugraz.at
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… helmut.hauser@igi.tugraz.at
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 helmut.hauser@igi.tugraz.at
Datenstrukturen - Beispiele • Lineare Felder • Stapel (stacks) • Schlangen (queue) • Halden (heaps) • Hashtabellen • Bäume • Graphen • Sonderformen • Komplexe Kombinationen möglich: • Baum aus Halden • Eine Schlange aus Bäumen • … helmut.hauser@igi.tugraz.at
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. helmut.hauser@igi.tugraz.at
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. helmut.hauser@igi.tugraz.at
Annahmen (Input,…) 1 Verbale Formulierung (Idee) 2 Abstraktion - Pseudocode 3 Schrittweise Analyse 4 Fallunterscheidung 5 Analyse - Vorgehensweise helmut.hauser@igi.tugraz.at
Pseudocode: DURCHSCHNITT (A) 1: Summe = 0 2: FOR i = 1 TO n 3: Summe = Summe + A[i] 4: RETURN (Summe/n) 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. helmut.hauser@igi.tugraz.at
Analyse der Laufzeit Zählen der elementaren Schritte: • Zuweisung a = b , c = 3.0 • Arithmetische Operation +,-,*,/ • Einfache Funktionen sqrt(x), ln(x) • Vergleiche =, <, >, ≥, ≤ • Indirekte Adressierung A[i], B[k+1] Alle Schritte brauchen dabei bestimmte, aber konstante Zeiten. helmut.hauser@igi.tugraz.at
Ein zweites Beispiel Sortieren durch Einfügen (Insertion-Sort) Pseudocode: 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 helmut.hauser@igi.tugraz.at
c4 c5 c6 Sortieren durch Einfügen Pseudocode Zeit-Kosten Anzahl 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 c1 n-1 c2 n -1 c3 n -1 c7 n -1 helmut.hauser@igi.tugraz.at
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 helmut.hauser@igi.tugraz.at
n ld n ≈ 5,5 Mio. Schritte n2 = 90 Milliarden Schritte 90.000 sec. = 25 h > 1 Tag 5.5 sec. Vergleich zweier Ordnungen Sortieren des Grazer Telefonbuchs: 300.000 Einträge Alter PC: 1 MIPS Andere Sortieralgorithmen Insertion Sort Supercomputer : 500 Mflops (IBM 9021-720) n2 = 180 sec !!! helmut.hauser@igi.tugraz.at
n ld n ≈ 183 Mio.Schritte n2 = 6.4*1013 Schritte 416.67 Tage 183 sec. Vergleich zweier Ordnungen Sortieren des NYC Telefonbuchs: 8.000.000 Einträge Alter PC: 1 MIPS Andere Sortieralgorithmen Insertion Sort Supercomputer : 500 Mflops (IBM 9021-720) n2 = 35 Stunden !! helmut.hauser@igi.tugraz.at
Danke für Ihre Aufmerksamkeit! Bis zum nächsten Mal. ( Donnerstag, 12.Okt.2006, 11:15, i13 ) helmut.hauser@igi.tugraz.at