insertion-sort

Werbung
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]
Herunterladen