Algorithmus

Werbung
Laufzeitverhalten
beim Sortieren
Aber zuerst brauchen wir
noch ein paar Grundlagen:
Grundlage1:
Wie viele Möglichkeiten
gibt es, Zahlen in einem
Feld der Länge n
anzuordnen ?
Wir beginnen mit einem
Feld der Länge 1. Das
Feldelement werde mit ?
bezeichnet. Wie viele
Möglichkeiten gibt es ?
Es gibt genau 1
Möglichkeit:
?
Wie viele Möglichkeiten gibt es,
Zahlen in einem Feld der Länge 2
anzuordnen ?
Wir gehen wieder vom vorigen
Feld mit dem Feldelement ? aus
und versuchen ein 2. Element
einzubauen.
An welchen Stellen kann das 2. Element eingefügt
werden ?
hier
?
?
oder:
wie viele Möglichkeiten gibt es also insgesamt ?
hier
2
??
Bei 2 Elemente gibt es also 2
Möglichkeiten.
Wir gehen jetzt wieder von einem
beliebigen Feld der Länge 2 aus
und und versuchen ein 3. Element
einzubauen.
An welchen Stellen kann das 3. Element eingefügt
werden ?
hier
?
?
?
oder:
hier
???
oder:
wie viele Möglichkeiten gibt es also insgesamt ?
hier
3*2
?
? ?
Bei 3 Elemente gibt es also 3*2
Möglichkeiten.
Wir gehen jetzt wieder von einem
beliebigen Feld der Länge 3 aus
und und versuchen ein 4. Element
einzubauen.
An welchen Stellen kann das 3. Element eingefügt
werden ?
hier
?
?
?
?
oder:
hier
? ? ?
?
oder:
hier
?
?? ?
oder:
wie viele Möglichkeiten gibt es also insgesamt ?
hier
4*3*2
?
?
? ?
Frage:
Wie viele Möglichkeiten gibt es
dann bei n Elementen ?
Bei n Elementen gibt es also
n!= n*(n-1)*(n-2)*... 3*2*1
Möglichkeiten.
Dies wird abgekürzt mit n!
und bedeutet n Fakultät.
Grundlage 2:
Binärbäume
Ein Baum besteht aus genau einer
Wurzel und (mehreren) Knoten.
Hat ein Knoten keinen Nachfolger
(Kinder), dann ist es ein Blatt.
Ein Binärbäum hat maximal 2
Nachfolger. Die Höhe eines Baums
ist die Länge des längsten Pfades.
Da waren viele unbekannte
Begriffe. Deshalb schnell ein
Beispiel:
K1
K2
K4
K3
K5
K6
K7
Wurzel
Die Höhe beträgt 5, weil
der Pfad zwischen K1
und K7 aus 5 Knoten
besteht.
Frage: Aus wie vielen
Knoten
Blatt
Blatt
K1
K2
K4
K3
K5
K6
K7
Aus wie vielen Knoten könnte
dieser Baum der Höhe 5
maximal bestehen, d.h. wenn
jeder Knoten (au0er den
Blättern) 2 Nachfolger hätte?
Welche Knoten und Blätter kann
man dem Baum noch hinzufügen ?
K1
K2
K3
K4
K5
K6
K7
Aus wie viel Knoten maximal besteht also ein Binärbaum der Höhe
h = 5?
K1
K2
K3
K4
K5
K6
K7
Anzahl a = 25 - 1 = 31
K1
K2
K3
K4
K5
K6
K7
Aus wie viel Knoten maximal besteht also ein Binärbaum der Höhe
h?
K1
K2
K3
K4
K5
K6
K7
Anzahl a = 2h - 1
Jetzt haben wir die Grundlagen
erarbeitet.
Jetzt geht es los!
Ein Feld (der Länge n) von Zahlen
soll in aufsteigender Reihenfolge
durch einen Algorithmus sortiert
(geordnet) werden.
Beispiel:
23, 17, 45, 13, 33
wird aufsteigend sortiert zu:
13, 17, 23, 33, 45
Voraussetzungen des Algorithmus:
Er muß vergleichsbasiert sein.
Das bedeutet:
Nur vergleiche von jeweils 2
Elementen des Feldes dürfen
benutzt werden, um die Ordnung
(Sortierung) einer Folge (Feld) zu
erhalten.
Andere Voraussetzungen dürfen nicht
gemacht werden. Z.B. darf nicht
vorausgesetzt werden, daß die Folge
in einem bestimmten Wertebereich
liegt.
Beispiel (nicht erlaubte
Voraussetzungen):
Sortiere 10 ganze Zahlen in
aufsteigender Reihenfolge, wobei jede
Zahl zwischen 0 und 100 liegt.
Wie viele Vergleiche muß man im
worst case (schlimmsten Fall)
machen, damit man ein Feld mit 3
Elementen sortiert ?
Die 3 Elemente werden mit
a1, a2, a3
bezeichnet.
Weitere Vereinbarungen:
{a,b},c
bedeutet, daß a und b kleiner als c
sind und über die Ordnung von a
und b untereinander nichts
ausgesagt wird (eine Menge ist
unsortiert).
<
i :j
≥
i : j bedeutet: vergleiche das i-te
Feldelement mit dem j-ten Feldelement.
Wenn Feldelement i kleiner als
Feldelement j, mache links weiter.
sonst mache rechts weiter.
a1 a2 a3
1:2
a1,a2
2:3
a2,a1
1:3
{a1,a3},a2
1:3
a1 a2 a3
a1 a3 a2
a3 a1 a2
{a2,a3},a1
a2 a1 a3
a2 a3 a1
2:3
a3 a2 a1
1:2
2:3
1:3
1:3
a1 a2 a3
a1 a3 a2
a2 a1 a3
a3 a1 a2
2:3
a2 a3 a1 a3 a2 a1
Dieser Entscheidungsbaum stellt eine Folge von Vergleichen eines
Algorithmus dar, der eine Folge von 3 Zahlen sortiert.
Dieser Baum (Binärbaum, weil jeder Knoten 2 Kinder hat) besteht
aus inneren Knoten (blau) und Blättern (rot))
1:2
2:3
1:3
1:3
a1 a2 a3
a1 a3 a2
a2 a1 a3
a3 a1 a2
2:3
a2 a3 a1 a3 a2 a1
Irgend ein anderer Sortieralgorithmus kann genauso durch einen
Entscheidungsbaum dargestellt werden. Die Folge der internen
Knoten kann dazu natürlich ganz anders sein. Aber die Blätter
müssen dann wieder jeweils eine sortierte Folge darstellen.
Wie viel Blätter muß es für einen Sortieralgorithmus geben, der eine
Folge von 3 Elementen sortiert? Warum ?
1:2
2:3
1:3
1:3
a1 a2 a3
a1 a3 a2
a2 a1 a3
a3 a1 a2
2:3
a2 a3 a1 a3 a2 a1
Es gibt 3! = 6 verschiedene Möglichkeiten eine Folge von 3
Elementen anzuordnen. Also kann die zu sortierende Ausgangsfolge
auf 3! verschiedene Arten angeordnet sein. Da jede dieser n!
möglichen Ausgangsfolgen identifiziert und sortiert werden muß,
muß für jede ein Pfad zu einem Blatt existieren. Also gibt es 3!
verschiedene Blätter bzw. allgemein n! Blätter.
Wie viele Vergleiche muß man im
worst case (schlimmsten Fall)
machen, damit man ein Feld mit n
Elementen sortiert ?
Die maximale Anzahl a der
Vergleiche ist die Länge des
längsten Pfades (=Höhe h) im
Entscheidungsbaum (Binärbaum).
a = 2h - 1 < 2h
Außerdem gilt:
a ≥ n!
also:
n! ≤ a < 2h
und damit
n! < 2h
also
(ld bedeutet Logarithmus zur Basis 2):
h > ld(n!)
Herunterladen