Technische Universität München Zentrum Mathematik Algorithmische Diskrete Mathematik Prof. Dr. A. Taraz, Dipl.-Math. A. Würfl Aufgabenblatt MC 1 Aufgabe MC 1.1 (O-, o- und Θ-Notation) Wenn c, C ≥ 0 existieren mit c · g(n) ≤ f (n) ≤ C · g(n), dann ist f (n) = Θ(g(n)). [10×1] Sind die folgenden Aussagen war? wahr falsch 2 2 a) 17n = O(n). b) 17n + log n = Θ(n). c) f (n) = O(g(n)) ⇒ ∃C ≥ 0 : limn→∞ f (n)/g(n) = C. d) n2 2 − n 2 = o(n2 ). 2 2 2 2 2 2 2 2 e) log n = Θ(ln n). √ f) log n = o(log n). g) ∀ε ∈ R>0 , ∀k ∈ N : (log n)k = o(nε ). h) n3 = Θ(n4 ). j) n! = O(2n log n ). 2 2 2 2 Bitte wenden! 2 2 2 i) log(n3 ) = Θ(log(n4 )). 2 2 2 Aufgabe MC 1.2 (Breiten- und Tiefensuche) Gegeben sei der folgende Graph G: v3 v5 [10×1] v9 v4 v8 v7 v2 v1 v6 Welche der folgenden Aussagen sind wahr? a) BFS(G, v7 ) besucht immer Knoten v5 vor Knoten v4 . b) DFS(G, v7 ) besucht immer Knoten v5 vor Knoten v4 . c) BFS(G, v5 ) besucht vielleicht Knoten v8 vor Knoten v9 . d) DFS(G, v3 ) besucht vielleicht Knoten v6 vor Knoten v4 . e) Eine mögliche Besuchsreihenfolge für BFS(G, v7 ) ist v7 , v6 , v8 , v9 , v5 , v1 , v2 , v3 , v4 . f) Eine mögliche Besuchsreihenfolge für DFS(G, v5 ) ist v5 , v6 , v7 , v8 , v9 , v1 , v4 , v3 , v2 . wahr falsch 2 2 2 2 2 2 2 2 2 2 2 2 Nun sei G wieder ein beliebiger Graph mit m Kanten und n Knoten. Welche der folgenden Aussagen sind wahr? g) Man kann dist(v, w) für v, w ∈ V unter Verwendung von BFS in O(n + m) bestimmen. h) Man kann dist(v, w) für v, w ∈ V unter Verwendung von DFS in O(n + m) bestimmen. i) Man kann die Liste der Abstände zwischen allen Knotenpaaren unter Verwendung von BFS in O(n + m) bestimmen. j) Man kann die Liste der Abstände zwischen allen Knotenpaaren unter Verwendung von BFS in O(nm) bestimmen. Weiter auf der nächsten Seite! wahr falsch 2 2 2 2 2 2 2 2 Aufgabe MC 1.3 (Dijkstra) [10×1] Für einen Graphen G = (V, E) betrachten wir die Reihenfolge v1 , v2 , ..., vn mit vi ∈ V , in der die Knoten von G im Dijkstra-Algorithmus aus Q gelöscht werden. Wir sagen dann, dass v1 , v2 , ..., vn eine (mögliche) Besuchsreihenfolge für Dijkstra(G, v1 ) ist. Sei G der folgende Graph mit Gewichtsfunktion ` wie angegeben: v3 v9 3 1 v4 4 3 v2 1 2 1 2 v5 v8 3 1 4 2 5 2 v7 3 v6 v1 Welche der folgenden Aussagen sind wahr? a) Eine Besuchsreihenfolge für Dijkstra(G, `, v1 ) ist v1 , v4 , v9 , v8 , v6 , v5 , v2 , v7 , v3 . b) Eine Besuchsreihenfolge für Dijkstra(G, `, v7 ) ist v7 , v6 , v8 , v5 , v9 , v4 , v2 , v1 , v3 . c) Beim Ausführen von Dijkstra(G, `, v9 ) ist abst[v9 ] stets echt kleiner als abst[v2 ]. d) Beim Ausführen von Dijkstra(G, `, v1 ) ist abst[v3 ] stets echt kleiner als abst[v8 ]. e) Beim Ausführen von Dijkstra(G, `, v7 ) ist abst[v9 ] stets echt kleiner als abst[v8 ]. wahr falsch 2 2 2 2 2 2 2 2 2 2 Nun sei G wieder ein beliebiger Graph mit m Kanten und n Knoten und ` eine positive Gewichtsfunktion. f) Seien v1 , v2 , ..., vn eine mögliche Besuchsreihenfolge für Dijkstra(G, `, v1 ). Dann gilt am Ende des Algorithmus abst[v1 ] ≤ abst[v2 ] ≤ · · · ≤ abst[vn ]. g) Ist man beim Aufruf von Dijkstra(G, `, s) nur an der Distanz von s zu einem festen Knoten t interessiert, so kann man abbrechen, sobald abst[t] < ∞. wahr falsch 2 2 2 2 h) Ist man beim Aufruf von Dijkstra(G, `, s) nur an der Distanz von s zu einem festen Knoten t interessiert, so kann man abbrechen, sobald t aus Q gelöscht wird. 2 2 i) Nehmen wir an, in G existieren negative Kantengewichte und sei −C das kleinste dieser Gewichte. Der kürzeste Weg zwischen zwei Knoten in einem solchen Graphen kann bestimmt werden, indem zunächst jedes Gewicht um (C + 1) erhöht und dann der Dijkstra-Algorithmus verwendet wird. 2 2 j) Nehmen wir an, in G existiert genau eine Kante k mit negativem Gewicht, alle anderen Kanten haben positives Gewicht. Dann kann ein kürzester s-t-Weg durch zweimaliges Aufrufen des Dijkstra-Algorithmus auf einem Subgraphen von G gefunden werden. 2 2 Bitte wenden! Aufgabe MC 1.4 (MSTs und Matroide) Sei G der folgende Graph mit Gewichtsfunktion ` wie angegeben: v3 v9 3 1 v4 4 3 v2 [10×1] 1 2 v8 1 5 v5 3 1 4 2 2 5 v7 3 v6 v1 Welche der folgenden Aussagen sind wahr? a) Eine gültige Reihenfolge beim Ablaufen der Knoten im Prim-Algorithmus ist v5 , v4 , v9 , v8 , v1 , v6 , v3 , v7 , v2 . b) Im Algorithmus von Prim wird der Knoten v2 stets als Letzter in den spannenden Baum eingebunden. c) Im Algorithmus von Kruskal existieren unmittelbar vor dem letzten Schritt stets die Komponenten {v2 } und V − v2 . d) Kein minimal spannender Baum enthält die Kanten {v1 , v5 } und {v4 , v5 } gleichzeitig. e) Sei (E, I) das Kreismatroid von G. Dann ist {v6 , v7 } in jedem Element von I enthalten. wahr falsch 2 2 2 2 2 2 2 2 2 2 Im Folgenden sei G = (V, E) wieder ein beliebiger Graph. f) Seien T und T 0 zwei minimal spannende Bäume von G, und e1 ≤ · · · ≤ en−1 bzw. e01 ≤ · · · ≤ e0n−1 die Gewichte der Kanten von T bzw. T 0 . Dann gilt für alle i stets ei = e0i . g) Es existiert ein Graph G mit einem minimal spannenden Baum T , sodass der Kruskal-Algorithmus diesen spannenden Baum nie findet. h) Sei G ein gewichteter Graph mit injektiver Gewichtsfunktion ` : V 7→ R. Dann gibt es genau einen minimal spannenden Baum. i) Seien (S1 , I1 ), (S2 , I2 ) Matroide mit S1 ∩ S2 = ∅. Dann ist auch (S1 ∪ S2 , I) mit I = {I1 ∪ I2 : I1 ∈ I1 , I2 ∈ I2 } ein Matroid. j) Seien (S, I1 ), (S, I2 ) Matroide. Dann ist auch (S, I1 ∩ I2 ) ein Matroid. A wahr falsch 2 2 2 2 2 2 2 2 2 2