Theoretische Informatik I

Werbung
Fakultät für Informatik
Professur Theoretische Informatik
und Informationssicherheit
Prof. Dr. Hanno Lefmann
Wintersemester 2002/03
18. Dezember 2002
Theoretische Informatik I
10. Übung
Aufgabe 1 Es sei ein gerichteter Graph G = (V, E) mit einer Längenfunktion c : E → N
gegeben. Das Problem der kürzesten Pfade besteht darin, zu einem gegebenen Startknoten
a ∈ V für alle von a aus erreichbaren Knoten v ∈ V die Länge eines kürzesten gerichteten Pfades
von a zu v zu berechnen. Dabei
ist die Länge eines Pfades (v1 , . . . , vk ) (mit (vi , vi+1 ) ∈ E für
Pk−1
alle i ∈ {1, . . . , k − 1}) gleich i=1 c((vi , vi+1 )), d. h. gleich der Summe der Längen der Kanten
des Pfades.
Betrachten Sie den folgenden Algorithmus von Dijkstra:
Dijkstra(a):
1.
Für alle v ∈ V : färbe v weiß und setze dist(v) := ∞.
2.
Färbe a grau und setze dist(a) := 0.
3.
Solange es einen grauen Knoten gibt:
3.1.
Wähle einen grauen Knoten w, der den kleinsten dist-Wert hat.
3.2.
Färbe w schwarz.
3.3.
Für alle v ∈ Adj(w):
3.3.1.
Setze dist(v) := min{dist(v), dist(w) + c((w, v))}.
3.3.2.
Falls v weiß ist, färbe v grau.
Zeigen Sie, dass dieser Algorithmus das Problem der kürzesten Pfade löst, d. h., dass am Ende
genau alle von a aus erreichbaren Knoten schwarz sind und der dist-Wert jeweils die Länge des
kürzesten Pfades von a aus ist.
Hinweis:
Beweisen Sie per Induktion über die Zahl i der erfolgten Schleifendurchläufe 3. - 3.3.2.:
(a) Für alle i schwarzen Knoten v ist dist(v) die Länge des kürzesten Pfades von a nach v in
G.
(b) Alle schwarzen Knoten haben nur schwarze oder graue Knoten als Nachbarn. Für jeden
grauen Knoten v ist dist(v) gleich der Länge des kürzesten Pfades von a zu v, der nur
über schwarze Knoten läuft.
Aufgabe 2 Wir wollen mit dem Sortierverfahren BUBBLESORT ein Array der Länge n
aufsteigend sortieren. In diesem Verfahren wird wiederholt das Array von links nach rechts
durchlaufen. Falls man zwei benachbarte Zahlen findet, von denen die erste größer ist als die
zweite, vertauscht man sie. Falls in einem Durchlauf kein solches Paar gefunden wird, stoppt
das Programm.
(a) Zu einem Array A mit n Einträgen definieren wir als Transpositionszahl
trans(A) := |{(i, j) : 1 ≤ i < j ≤ n ∧ A[i] > A[j]}|.
Zeigen Sie, dass die Anzahl der Vertauschungen, die BUBBLESORT durchführt, und
trans(A) identisch sind.
(b) Beweisen Sie, dass das Verfahren tatsächlich sortiert.
(c) Welche Laufzeit bzgl. der Anzahl Vergleiche hat das Verfahren im schlechtesten und im
besten Fall? Wie sehen die Eingaben in diesen beiden Fällen aus?
(d) Welche Laufzeit bzgl. der Anzahl Vertauschungen hat BUBBLESORT bei Eingaben der
Länge n im Average Case, wenn die Array-Elemente paarweise verschieden sind?
Aufgabe 3 Das allgemeine Mischproblem besteht darin, zwei jeweils aufsteigend sortierte Folgen a1 , . . . , an und b1 , . . . , bm zu einer sortierten Folge zusammenzufügen. Finden und beweisen
Sie eine untere Schranke für die Anzahl der dabei benötigten Vergleiche im Worst Case.
Aufgabe 4 Gegeben ist eine n × n-Matrix M mit ganzzahligen Einträgen sowie eine natürliche Zahl k in Binärdarstellung. Berechnen Sie möglichst effizient das Matrixprodukt M k und
analysieren Sie die Anzahl Operationen (= Anzahl arithmetischer Operationen über ganzen
Zahlen) bei Ihrem Verfahren. Ohne Einschränkung sei n eine Potenz von 2, also n = 2l .
Herunterladen