Grundlegende Algorithmen WS 08/09 ¨Ubungsblatt 4

Werbung
Friedhelm Meyer auf der Heide
Ralf Petring, Adrian Ogierman
Paderborn, 30. Oktober 2008
Abgabe: 06. November 2008
bis 10:00 Uhr in Raum F1.316
Grundlegende Algorithmen
WS 08/09
Übungsblatt 4
In der Vorlesung Datenstrukturen und Algorithmen haben wir die Algorithmen Breitensuche
(BF S) und Tiefensuche (DFS) kennengelernt. Zur Wiederholung schaut in das Skript Effiziente Algorithmen, welches auf der Webseite verlinkt ist. Im folgenden sei der Graph G als
Adjazenzliste gegeben.
Aufgabe 13 (4 Punkte):
a) Benutze DFS um zu testen, ob ein ungerichteter Graph G = (V, E) azyklisch ist (also
keinen Kreis enthält). Zeige, dass der Algorithmus Laufzeit von O(|V |) benötigt.
b) Sei G = (V, E) ein ungerichteter zusammenhängender Graph. Wir sagen G ist bipartit,
wenn V in zwei Teilmengen V1 und V2 aufgeteilt werden kann, so dass
V1 ∪ V2 = V und V1 ∩ V2 = ∅
ist und keine Kanten innerhalb von V1 oder V2 verlaufen. Modifiziere den DFS-Algorithmus,
so dass er in O(|V | + |E|) entscheidet, ob ein gegebener Graph bipartit ist.
Aufgabe 14 (4 Punkte):
a) Ein gerichteter Graph G = (V, E) ist einfach zusammenhängend, wenn es für jedes
Knotenpaar u, v ∈ V maximal einen Weg von u nach v gibt. (Beachte: Der unterliegende ungerichtete Graph muß nicht notwendig zusammenhängend sein. Sogar der
Graph ohne Kanten ist einfach zusammenhängend.) Gib einen (effizienten) Algorithmus an, der bestimmt ob ein Graph einfach zusammenhängend ist und analysiere seine
Laufzeit.
b) Der Durchmesser eines ungerichteten Baumes T = (V, E) ist die Länge (Anzahl der
Kanten) eines längsten aller Pfade zwischen zwei beliebigen Knoten in T . Gib einen
(effizienten) Algorithmus an, der den Durchmesser eines gegebenen Baumes berechnet
und analysiere seine Laufzeit.
Aufgabe 15 (4 Punkte):
Sei ◦ eine assoziative Operation (z.B. Multiplikation reeller Zahlen oder Matrizen) auf einer
Menge S und sei s ein Element von S. Beschreibe in Pseudo-Code einen iterativen Algorithmus, welcher
sr := s| ◦ s ◦{z. . . ◦ s}
r
für ein beliebiges r ∈ N mit k = 2 ∗ blog2 (r)c ◦-Operationen berechnet.
Aufgabe 16 (4 Punkte):
Eine d-dimensionale Box mit den Dimensionen (x1 , x2 , . . . , xd ) kann in eine andere Box mit
den Dimensionen (y1 , y2 , . . . , yd ) eingebettet werden, wenn eine Permutation π der Zahlen
1, 2, . . . , n existiert, so dass xπ(1) < y1 , xπ(2) < y2 , . . . , xπ(d) < yd
a) Zeige, dass die Einbettungsrelation transitiv ist.
b) Beschreibe einen (effizienten) Algorithmus, welcher bestimmt, ob eine d-dimensionale
Box in eine andere eingebettet werden kann.
Herunterladen