ShellsortNachtrag Beweis | |
Mit Hilfe des 0-1-Prinzips lässt sich in recht anschaulicher Weise die für Shellsort wichtige Tatsache beweisen, dass eine g-sortierte Folge g-sortiert bleibt, wenn sie h-sortiert wird.
Ganz analog zum Begriff der Inversion bilden zwei Folgenelemente, die bezüglich der h-Sortierung in falscher Reihenfolge stehen, eine h-Inversion.
Definition: Sei a = a0, ..., an-1 eine Folge von Daten. Ein Zahlenpaar (i, j) mit i, j
{0, ..., n-1} heißt h-Inversion, wenn i+kh = j und ai > aj ist (k
).
Sei eine g-sortierte 0-1-Folge gegeben. Schreibt man die Folge zeilenweise in ein zweidimensionales Feld mit g Spalten, so sind die Spalten sortiert. Eine h-Inversion ist gekennzeichnet durch eine Eins und eine Null im Abstand kh, k
, d.h. die Eins steht weiter links oder weiter oben als die Null, jedoch nicht in derselben Spalte. In ein und derselben Spalte kann eine Inversion nicht auftreten, da die Spalten sortiert sind.
Es ergibt sich also eine Situation wie in Bild 1a (hier haben i und j den Abstand kh = 9, somit könnte in diesem Beispiel h = 1, h = 3 oder h = 9 sein).
| |
| Bild 1: (a) g-sortierte Folge mit h-Inversion (i, j), (b) h-Sortierschritte für eine Spalte, (c) Situation nach den h-Sortierschritten | |
Nun wird folgendes Verfahren angewandt, um die Folge h-sortiert zu machen. Als Zeilenkommentare sind Zusicherungen angegeben, die jeweils zwischen den Schritten gültig sind.
| h-Sortieren einer g-sortierten Folge | |
| Methode: |
|
Indem immer alle h-Inversionen zwischen zwei Spalten beseitigt werden (Bilder 1b und 1c), bleibt die Bedingung "die Folge ist g-sortiert" bei jedem Durchlauf durch die Schleife erfüllt. Die Bedingung bildet somit eine sogenannte Schleifeninvariante. Die Anzahl der h-Inversionen wird bei jedem Durchlauf verringert. Die Schleife bricht ab, wenn die Anzahl der h-Inversionen 0 erreicht. Dann ist die Folge h-sortiert, zugleich aber auch noch g-sortiert.
Streng genommen haben wir das 0-1-Prinzip nur für Sortiernetze bewiesen. Hier haben wir kein Sortiernetz, sondern ein datenabhängiges Sortierverfahren, dadurch dass zunächst eine h-Inversion gesucht wird. Aber man kann eine entsprechende Argumentation wie beim Beweis des 0-1-Prinzips leicht auf diese Situation übertragen.
Weiter mit: ![]() |
|
|