Technische Universität München Zentrum Mathematik Prof. Dr. A. Taraz, Dr. R. Brandenberg, Dipl.-Math. Dipl.-Inf. S. Borgwardt Optimierung II, WS 2007/2008 Übungsblatt 3 Aufgabe 3.1 Sei G ein zusammenhängender Graph mit n Knoten und ∆G := maxv∈V deg(v). Zeigen Sie: a) Für alle Eigenwerte λ der Adjazenzmatrix AG gilt |λ| ≤ ∆G . Hinweis: Betrachten Sie o.E. einen Eigenvektor v zu λ mit kvk∞ = 1. b) ∆G ist ein Eigenwert von AG , genau dann wenn deg(v) = ∆G für alle v ∈ V gilt. c) −∆G ist ein Eigenwert von AG , genau dann wenn deg(v) = ∆G für alle v ∈ V gilt und G bipartit ist. d) Ist G bipartit und λ ein Eigenwert von AG , dann auch −λ. Aufgabe 3.2 Sei G = (V, E, `) ein gewichteter zusammenhängender Graph mit Kantenlängen `(e) > 0 für alle e ∈ E und s, t ∈ V . Ferner sei lb(v) ≥ 0 eine untere Schranke für dist (v, t) für alle v ∈ V , sodass (o.E.) lb(u) ≤ lb(v) + `({u, v}) für alle {u, v} ∈ E gelte. Zeigen Sie, dass der folgende sogenannte A∗ -Algorithmus dann die Länge eines kürzesten s, t-Pfades berechnet. A∗ -Algorithmus(G, `, s, t, lb) (1) foreach x ∈ V \ {s} do val[x] := ∞ (2) val[s] := lb(s) (3) Q := V (4) while Q 6= ∅ (5) x := Knoten in Q, der val[·] minimiert (6) if x = t then return val[x] (7) Q := Q − {x} (8) foreach y ∈ N (x) ∩ Q (9) val[y] := min{val[y], val[x] + `({x, y}) + lb(y) − lb(x)} Bitte wenden! Aufgabe 3.3 Sei G = (V, E) ein zusammenhängender Graph. Zeigen Sie: a) Der Algorithmus von Dijkstra lässt sich so modifizieren, dass er in O(n2 ) Schritten die kürzesten Pfade von einem Knoten s ∈ V zu allen anderen Knoten berechnet und ausgibt. b) Die Vereinigung dieser Pfade bildet einen Spannbaum von G. Aufgabe 3.4 Für einen Graphen G = (V, E) seien v1 , v2 , ..., vn die Knoten in V und zwar in der Reihenfolge in der sie im Dijkstra-Algorithmus aus Q gelöscht werden (Zeile 6 des Algorithmus), also u.a. s = v1 . Wir sagen dann, dass v1 , v2 , ..., vn eine (möglicherweise nicht eindeutige) Besuchsreihenfolge für Dijkstra(G, v1 ) ist. Welche der folgenden Aussagen sind richtig? (Antworten Sie mit ja oder nein und begründen Sie kurz Ihre Antwort.) (i) Am Ende des Algorithmus gilt abst[v1 ] ≤ abst[v2 ] ≤ · · · ≤ abst[vn ]. (ii) Ist man beim Aufruf des Algorithmus nur an dem Abstand von s zu einem festen Knoten t interessiert, so kann man abbrechen, sobald abst[t] < ∞. (iii) Ist man beim Aufruf des Algorithmus nur an dem Abstand von s zu einem festen Knoten t interessiert, so kann man abbrechen, sobald t aus Q entfernt wird. (iv) Der kürzeste s, t-Pfad in G = (V, E, `) mit teils negativen Kantengewichten kann bestimmt werden, indem man zunächst das kleinste dieser Gewichte −C bestimmt und und dann den Dijkstra-Algorithmus auf (V, E, ` + C + 1) anwendet. (v) Existiert in G genau ein e ∈ E mit `(e) < 0 und alle anderen Kanten haben positives Gewicht, dann kann ein kürzester s, t-Pfad durch zweimaliges Aufrufen des DijkstraAlgorithmus auf Subgraphen von G gefunden werden. Abgabe: bis Montag, 16.00 im dafür vorgesehenen Kasten im Untergeschoss. Bitte notieren Sie auf ihrer Abgabe: • Name(n), Vorname(n), • Matrikelnummer(n) und • Übungsgruppe (Wochentag, Uhrzeit und Übungsleiter). Bitte geben Sie möglichst in Dreiergruppen ab.