Außerordentlich hilfreich für den Beweis von Sortiernetzen ist folgender Satz, der als 0-1-Prinzip bezeichnet wird [Knu 73]. Er besagt, dass die Tatsache, ob ein Vergleichernetz ein Sortiernetz ist oder nicht, nur von seiner Struktur abhängt und nicht vom Eingabedatenbereich A.
Satz: (0-1-Prinzip)
Ein Vergleichernetz, das alle Folgen von Nullen und Einsen sortiert, ist ein Sortiernetz (d.h. es sortiert auch alle Folgen von beliebigen Werten).
Der Beweis des 0-1-Prinzips ist eigentlich recht einfach. Um ihn technisch sauber zu führen, sind jedoch zunächst einige Definitionen und zwei Hilfssätze erforderlich.
Definition: Seien A und B geordnete Mengen. Eine Abbildung f : A → B heißt monoton, wenn für alle a1, a2 ∈ A gilt
a1 ≤ a2 ⇒ f(a1) ≤ f(a2)
Hilfssatz: Sei f eine monotone Abbildung. Dann gilt für alle a1, a2 ∈ A
f(min(a1, a2)) = min(f(a1), f(a2))
Beweis: Sei zunächst a1 ≤ a2 und somit f(a1) ≤ f(a2). Dann gilt
min(a1, a2) = a1 und min(f(a1), f(a2)) = f(a1)
Somit ist
f(min(a1, a2)) = f(a1) = min(f(a1), f(a2))
Ist dagegen a2 ≤ a1 und somit f(a2) ≤ f(a1), dann gilt analog
f(min(a1, a2)) = f(a2) = min(f(a1), f(a2))
Eine entsprechende Aussage gilt für die max-Funktion.
Definition: Sei f eine monotone Abbildung. Die Erweiterung von f auf endliche Folgen a = a0, ..., an-1 sei wie folgt definiert:
f(a0, ..., an-1) = f(a0), ..., f(an-1) , d.h.
f(a)i = f(ai)
Hilfssatz: Sei N ein Vergleichernetz, f eine monotone Abbildung und a = a0, ..., an-1 eine endliche Folge. Dann gilt:
N(f(a)) = f(N(a))
d.h. es ist dasselbe, ob die monotone Abbildung f vor Eingabe von a in das Vergleichernetz N angewandt wird oder hinterher.
Beweis: Zunächst gilt für einen einzelnen Vergleicher [i:j] :
[i:j](f(a))i = [i:j](f(a0), ..., f(an-1))i = min(f(ai), f(aj))
= f(min(ai, aj)) = f([i:j](a)i) = f([i:j](a))i
Entsprechendes gilt für die Komponente j sowie für alle anderen Komponenten k. Insgesamt gilt damit
[i:j](f(a)) = f([i:j](a))
Da ein Vergleichernetz eine Hintereinanderausführung von Vergleichern ist, gilt somit für ein beliebiges Vergleichernetz N und jede monotone Abbildung f:
N(f(a)) = f(N(a))
Wir formulieren das 0-1-Prinzip umgekehrt:
Satz: Sei N ein Vergleichernetz. Wenn es eine beliebige Folge gibt, die von N nicht sortiert wird, dann gibt es auch eine 0-1-Folge, die von N nicht sortiert wird.
Beweis: Sei a mit ai ∈ A eine Folge, die von N nicht sortiert wird. Dies bedeutet: N(a) = b ist unsortiert, d.h. es gibt einen Index k mit bk > bk+1.
Definiere eine Abbildung f : A → {0, 1} wie folgt. Für alle c ∈ A sei
f(c) = |
|
Offenbar ist f monoton; ferner gilt:
f(bk) = 1 und f(bk+1) = 0
d.h. f(b) = f(N(a)) ist unsortiert. Damit ist aber auch N(f(a)) unsortiert, und dies bedeutet, dass auch die 0-1-Folge f(a) durch das Vergleichernetz N nicht sortiert wird.
Wir haben damit gezeigt, dass wenn es eine Folge a gibt, die von N nicht sortiert wird, es auch eine 0-1-Folge f(a) gibt, die von N nicht sortiert wird.
Dies ist gleichbedeutend damit, dass wenn es keine 0-1-Folge gibt, die von N nicht sortiert wird, es auch keine Folge mit beliebigen Werten gibt, die von N nicht sortiert wird.
Dies ist wiederum gleichbedeutend damit, dass wenn jede 0-1-Folge von N sortiert wird, auch jede Folge von beliebigen Werten von N sortiert wird.
[Knu 73] D.E. Knuth: The Art of Computer Programming, Vol. 3 - Sorting and Searching. Addison-Wesley (1973)
Weiter mit: [Bubblesort] oder [up]