uebungen-5

Werbung
Prof. Dr. V. Strehl
Informatik 8
17. November 2004
Übungen zu
Theoretische Informatik 3
WS 2004/05
The advanced reader who skips parts that appear him too elementary may miss
more than the less advanced reader who skips parts that appear him too complex.
G. Pólya in Mathematics and Plausible Reasoning
• Aufgabe 13: Flip-Sorting
Ist L = L[1..n] eine Liste von n Elementen, so erzeugt ein k-Flip (mit 2 ≤ k ≤ n) daraus
eine neue Liste L0 , indem man die Reihenfolge der ersten k Elemente umdreht, d.h. L0 =
[Lk , Lk−1 , . . . , L1 , Lk+1 , Lk+2 , . . . , Ln ]. Mittels k-Flips kann man sortieren, beispielsweise
[4, 2, 5, 1, 3]7→[2, 4, 5, 1, 3] 7→ [5, 4, 2, 1, 3] 7→ [3, 1, 2, 4, 5] 7→ [2, 1, 3, 4, 5] 7→ [1, 2, 3, 4, 5]
sortiert [4, 2, 5, 1, 3] mit 5 k-Flips für k = 2, 3, 5, 3, 2.
– Zeigen Sie, dass man jede Permutation der Zahlen {1, 2, . . . , n} mit höchstens 2n − 3 Flips
sortieren kann.
– Zeigen Sie, dass es für jedes n ≥ 3 Permutationen von {1, 2, . . . , n} gibt, bei denen man
mindestens n Flips benötigt, um sie zu sortieren.
• Aufgabe 14: Matrix-Sorting
Es sei A = [ai,j ]1≤i≤m,1≤j≤n eine Matrix mit (verschiedenen) ganzzahligen Koeffizienten. Die
Matrix sei zeilenweise sortiert, d.h.
ai,j < ai,j+1 für 1 ≤ j < n und alle 1 ≤ i ≤ m
Jetzt wird jede der n Spalten der Matrix separat sortiert. Zeigen Sie, dass dabei die Eigenschaft
“zeilenweise sortiert” zu sein nicht verlorengeht.
(Hinweis: diese Aussage ist der Ausgangspunkt für den bekannten Sortieralgorithmus Shellsort)
• Aufgabe 15: Binäre B?äume und Suchbäume für Permutationen
1. Zeigen Sie, dass für jeden binären Baum t ∈ B folgender Zusammenhang zwischen innerer Weglänge wi (t), äusserer Weglänge we (t) und der Anzahl innerer Knoten i(t) besteht:
we (t) = wi (t) + 2 i(t).
2. Verschiedene Permutationen können bei der Konstruktion eines binären Suchbaumes zu
demselben Resultat führen. Ist t ∈ Bn ein binärer Baum mit n inneren Knoten, so kann
man die Anzahl der σ ∈ Sn mit tσ = t folgendermassen einfach berechnen. Dazu bezeichne
für jeden inneren Knoten a ∈ I(t) ta den Teilbaum von t mit der Wurzel a und i(ta ) die
Anzahl der inneren Knoten dieses Teilbaumes. Dann ist
Y
n!/
i(ta )
a∈I(t)
die Zahl der σ ∈ Sn mit tσ = t. Beweisen Sie dies durch Induktion über den Aufbau von t.
3. Ein Beispiel zum vorigen Punkt: die Permutation σ = 537819264 ∈ S9 liefert als binären
Suchbaum tσ den Baum mit der linearen Codierung
code(tσ ) = 531247689
wobei die Zahlen die Nummern (Bewertungen) v(a) der jeweiligen inneren Knoten von tσ
sind. Die Teilbäume ta mit den 1 ≤ k ≤ 9 nummerierten inneren Knoten a ∈ I(t) als
Wurzel haben – in dieser Reihenfolge – ihrerseits 2,1,4,1,9,1,4,2,1 innere Knoten. Also gibt
es insgesamt
9!
362880
=
= 630
2 · 1 · 4 · 1 · 9 · 1 · 4 · ·1
576
Permutationen, die denselben binären Suchbaum erzeugen.
Welchen Suchbaum erzeugt σ = 569237418, welches ist dessen innere Weglänge und wieviele
Permutationen erzeugen denselben Suchbaum?
• Aufgabe 16: Exakte minimale Anzahl der benötigten Vergleiche beim Sortieren
Die Funktion S(n) gibt die exakte minimale Anzahl der zum Sortieren von n Elementen einer
totalgeordneten Menge benötigen Vergleichsoperationen an.
Zeigen Sie, dass S(3) = 3, S(4) = 5 und S(5) = 7 gilt.
Hinweis: für diese Aufgabe ist es hilfreich, wenn man sich die Aufgabe des Sortierens so vorstellt,
dass man schrittweise durch Vergleiche eine zunächst unbekannte) totale Ordnung lernt und den
jeweiligen Kenntnisstand in Form einer partiellen Ordnung notiert. Am Anfang besteht diese
partielle Ordnung aus paarweise unvergleichbaren Elementen (im Sinne von partiellen Ordnungen), jeder Vergleich liefert eine weitere Grösser-Kleiner-Beziehung zwischen zwei Elementen,
die mit den schon bekannten Beziehungen verträglich sein muss und diese per Transitivität der
(partiellen) Ordnungsrelation erweitert.
Um das Vorgehen beispielhaft zu erläutern: wenn man 4 Elemente a, b, c, d hat, über die man
zunächst nichts weiss, kann man annehmen, dass der erste Vergleich zwischen a und b stattfinden,
etwa a < b zu Resultat hat. Weiter ist nichts bekannt. Als nächstes kann man
entweder c und d vergleichen, dann hat man als Resultat zwei unverbundene Ketten der Länge
2, z.B. a < b und c < d,
oder (z.B.) c mit a oder mit b vergleichen. Wenn man b < c bzw. c < a findet, ist natürlich
a < b < c bzw. c < a < b die Folge, d.h. man hat eine Kette der Länge 3 und einen isolierten
Knoten d. Und so weiter... Natürlich ist die Vielfalt der möglichen Vorgehensweisen riesig gross,
aber viele der entstehenden Situationen sind gleichwertig: im obigen Beispiel hat man nach zwei
Vergleichen gerade mal drei wesentlich verschiedene Situationen.
Herunterladen