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.