insertion-sort

Werbung
Datenstrukturen &
Algorithmen
VO 708.031
05.10.2006
helmut.hauser@igi.tugraz.at
Um was geht es?
Datenstrukturen
Algorithmen
05.10.2006
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.
05.10.2006
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)
05.10.2006
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…
05.10.2006
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
05.10.2006
helmut.hauser@igi.tugraz.at
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
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.
05.10.2006
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.
05.10.2006
helmut.hauser@igi.tugraz.at
Analyse - Vorgehensweise
05.10.2006
1
Annahmen (Input,…)
2
Verbale Formulierung (Idee)
3
Abstraktion - Pseudocode
4
Schrittweise Analyse
5
Fallunterscheidung
helmut.hauser@igi.tugraz.at
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)
helmut.hauser@igi.tugraz.at
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
helmut.hauser@igi.tugraz.at
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
helmut.hauser@igi.tugraz.at
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
helmut.hauser@igi.tugraz.at
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
helmut.hauser@igi.tugraz.at
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 !!!
helmut.hauser@igi.tugraz.at
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 !!
helmut.hauser@igi.tugraz.at
Danke für Ihre Aufmerksamkeit!
Bis zum nächsten Mal.
( Donnerstag, 12.Okt.2006, 11:15, i13 )
05.10.2006
helmut.hauser@igi.tugraz.at
Herunterladen