Sortiernetze0-1-Prinzip | |
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 a1 > a2 und somit f(a1) > f(a2), 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 ![]() |
|
|
|