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!)