Graphalgorithmen I Hallo Welt! für Fortgeschrittene

Größe: px
Ab Seite anzeigen:

Download "Graphalgorithmen I Hallo Welt! für Fortgeschrittene"

Transkript

1 Graphalgorithmen I Hallo Welt! für Fortgeschrittene Jens Wetzl (sijewetz@stud.informatik.uni-erlangen.de) 18. Mai 2009

2 Motivation Grundlagen Beschreibung von Objekten und deren Beziehungen zueinander Vielfältige Anwendungen: Straßennetze (z.b. kürzeste Wege) Elektrische Schaltkreise (z.b. Kurzschlüsse erkennen) Telekommunikationsnetzwerke (z.b. Zuverlässigkeit)... Schon im Vortrag zum Parsen einige Anwendungen: Unerreichbare Symbole einer Grammatik durch Tiefensuche vom Startsymbol aus Suche nach starken skomponenten, um Kettenregeln zu beseitigen Jens Wetzl Graphalgorithmen I 2 / 146

3 Übersicht Grundlagen 1 Grundlagen Datenstrukturen Umsetzung in Java 2 Breitensuche Tiefensuche Topologische Sortierung 3 skomponenten Jens Wetzl Graphalgorithmen I 3 / 146

4 Graphgrundlagen Grundlagen Datenstrukturen Umsetzung in Java Graph G = (V, E ) V : Menge von Knoten (engl. vertices) E: Menge von Kanten (engl. edges) Verschiedene Arten von Graphen: gerichtete/ungerichtete Graphen zyklische/azyklische Graphen gewichtete Graphen DAGs (directed acyclic graph) bipartite Graphen... Jens Wetzl Graphalgorithmen I 4 / 146

5 Ungerichtete Graphen Datenstrukturen Umsetzung in Java A C E B D F G = (V, E ) V = {A, B, C, D, E, F } E = {{A, B}, {A, D}, {B, D}, {C, D}, {D, E }, {E, F }} Jens Wetzl Graphalgorithmen I 5 / 146

6 Gerichtete Graphen Grundlagen Datenstrukturen Umsetzung in Java A C E B D F G = (V, E ) V = {A, B, C, D, E, F } E = {(A, B), (D, A), (B, D), (C, D), (D, E ), (F, E )} Jens Wetzl Graphalgorithmen I 6 / 146

7 Gewichtete Graphen Datenstrukturen Umsetzung in Java A 5 B C D Gewichtsfunktion c : E Z Ordnet jeder Kante ein Gewicht zu E 9 F Jens Wetzl Graphalgorithmen I 7 / 146

8 Datenstrukturen Umsetzung in Java Zyklische und azyklische Graphen zyklischer Graph azyklischer Graph Jens Wetzl Graphalgorithmen I 8 / 146

9 Datenstrukturen Umsetzung in Java Dünn und dicht besetzte Graphen dünn besetzter Graph sparse graph dicht besetzter Graph dense graph E V 2 E V 2 Jens Wetzl Graphalgorithmen I 9 / 146

10 (Einfache) Pfade Grundlagen Datenstrukturen Umsetzung in Java Ein Pfad von Knoten v 1 zu v n ist eine Folge von Knoten (v 1, v 2,..., v n ) mit {v i, v i+1 } E, i {1,..., n 1} In einem einfachen Pfad kommt jeder Knoten aus V höchstens einmal vor Jens Wetzl Graphalgorithmen I 10 / 146

11 (Einfache) Pfade Grundlagen Datenstrukturen Umsetzung in Java Ein Pfad von Knoten v 1 zu v n ist eine Folge von Knoten (v 1, v 2,..., v n ) mit {v i, v i+1 } E, i {1,..., n 1} In einem einfachen Pfad kommt jeder Knoten aus V höchstens einmal vor A C E B D F Pfad von D nach E: D ( A B D) E Einziger einfacher Pfad: D E Jens Wetzl Graphalgorithmen I 10 / 146

12 Weitere Grundlagen Datenstrukturen Umsetzung in Java Reflexive Kanten (self-loops): Grad eines Knoten: Notation: 2 0 ( ) Eingangsgrad Ausgangsgrad 1 2 Jens Wetzl Graphalgorithmen I 11 / 146

13 Datenstrukturen Umsetzung in Java Datenstrukturen zur Speicherung von Graphen Zwei Möglichkeiten (bsp. gerichteter ungewichteter Graph): Adjazenzmatrix: { V V -Matrix (a ij ) mit 1 falls (i, j) E a ij = 0 sonst Jens Wetzl Graphalgorithmen I 12 / 146

14 Datenstrukturen Umsetzung in Java Datenstrukturen zur Speicherung von Graphen Zwei Möglichkeiten (bsp. gerichteter ungewichteter Graph): Adjazenzmatrix: { V V -Matrix (a ij ) mit 1 falls (i, j) E a ij = 0 sonst Adjazenzlisten: für jeden Knoten wird eine Liste mit angrenzenden Knoten geführt Jens Wetzl Graphalgorithmen I 12 / 146

15 Adjazenzmatrix Grundlagen Datenstrukturen Umsetzung in Java A C E B D F A B C D E F A B C D E F Jens Wetzl Graphalgorithmen I 13 / 146

16 Adjazenzmatrix Grundlagen Datenstrukturen Umsetzung in Java A C E B D F A B C D E F A B C D E F Verwendung bei dicht besetzten Graphen Oder wenn (u, v) E? schnell beantwortet werden soll Speicherbedarf Θ( V 2 ) Jens Wetzl Graphalgorithmen I 13 / 146

17 Adjazenzlisten Grundlagen Datenstrukturen Umsetzung in Java A B A B B A D D C D C D D A B C E E F E F D E F Jens Wetzl Graphalgorithmen I 14 / 146

18 Adjazenzlisten Grundlagen Datenstrukturen Umsetzung in Java A B A B B A D D C D C D D A B C E E F E F D E F Verwendung bei dünn besetzten Graphen Viele Algorithmen nur mit Adjazenzlisten effizient implementierbar Speicherbedarf O( V + E ) Jens Wetzl Graphalgorithmen I 14 / 146

19 Datenstrukturen Umsetzung in Java Umsetzung in Java: Graph-Klasse class Graph { int numv, nume; ArrayList<Edge>[] adj; } Graph(int v) { numv = v; nume = 0; adj = new ArrayList[v]; for (int i = 0; i < v; i++) adj[i] = new ArrayList<Edge>(); } void insert(int start, int end /*, int weight */) { Edge e = new Edge(start, end /*, weight */); adj[start].add(e); //adj[end].add(e); // ungerichtet nume++; } Jens Wetzl Graphalgorithmen I 15 / 146

20 Datenstrukturen Umsetzung in Java Umsetzung in Java: Edge-Klasse class Edge { int from, to /*, weight*/; } Edge(int a, int b /*, int w */) { from = a; to = b; // weight = w; } Jens Wetzl Graphalgorithmen I 16 / 146

21 Übersicht Grundlagen Datenstrukturen Umsetzung in Java 1 Grundlagen Datenstrukturen Umsetzung in Java 2 Breitensuche Tiefensuche Topologische Sortierung 3 skomponenten } Fragen? Jens Wetzl Graphalgorithmen I 17 / 146

22 Breitensuche Grundlagen Breitensuche Tiefensuche Topologische Sortierung Gegeben: Graph G, Anfangsknoten s BFS ermittelt alle von s aus erreichbaren Knoten und bestimmt den kürzesten Weg (# Kanten) von s bestimmt einen Breitensuchbaum mit Wurzel s Grundlage für viele weitere Algorithmen (z.b. Prim und Dijkstra) Jens Wetzl Graphalgorithmen I 18 / 146

23 Breitensuche: Pseudocode Breitensuche Tiefensuche Topologische Sortierung BFS(G, s) : visited[s] TRUE, distance[s] 0 predecessor[s] 1 ENQUEUE (Q, s) Jens Wetzl Graphalgorithmen I 19 / 146

24 Breitensuche: Pseudocode Breitensuche Tiefensuche Topologische Sortierung BFS(G, s) : visited[s] TRUE, distance[s] 0 predecessor[s] 1 ENQUEUE (Q, s) while Q = do u DEQUEUE (Q) end while Jens Wetzl Graphalgorithmen I 19 / 146

25 Breitensuche: Pseudocode Breitensuche Tiefensuche Topologische Sortierung BFS(G, s) : visited[s] TRUE, distance[s] 0 predecessor[s] 1 ENQUEUE (Q, s) while Q = do u DEQUEUE (Q) for all v Adj[u] do if!visited[v] then visited[v] TRUE distance[v] distance[u] + 1 predecessor[v] u ENQUEUE (Q, v) end if end for end while Jens Wetzl Graphalgorithmen I 19 / 146

26 Breitensuche: Pseudocode Breitensuche Tiefensuche Topologische Sortierung BFS(G, s) : visited[s] TRUE, distance[s] 0 predecessor[s] 1 ENQUEUE (Q, s) while Q = do u DEQUEUE (Q) for all v Adj[u] do if!visited[v] then visited[v] TRUE distance[v] distance[u] + 1 predecessor[v] u ENQUEUE (Q, v) end if end for end while Aufwand O( V + E ) Jens Wetzl Graphalgorithmen I 19 / 146

27 Breitensuche: Animation Breitensuche Tiefensuche Topologische Sortierung Jens Wetzl Graphalgorithmen I 20 / 146

28 Breitensuche: Animation Breitensuche Tiefensuche Topologische Sortierung Jens Wetzl Graphalgorithmen I 21 / 146

29 Breitensuche: Animation Breitensuche Tiefensuche Topologische Sortierung Jens Wetzl Graphalgorithmen I 22 / 146

30 Breitensuche: Animation Breitensuche Tiefensuche Topologische Sortierung Jens Wetzl Graphalgorithmen I 23 / 146

31 Breitensuche: Animation Breitensuche Tiefensuche Topologische Sortierung Jens Wetzl Graphalgorithmen I 24 / 146

32 Breitensuche: Animation Breitensuche Tiefensuche Topologische Sortierung Jens Wetzl Graphalgorithmen I 25 / 146

33 Breitensuche: Animation Breitensuche Tiefensuche Topologische Sortierung Jens Wetzl Graphalgorithmen I 26 / 146

34 Breitensuche: Animation Breitensuche Tiefensuche Topologische Sortierung Jens Wetzl Graphalgorithmen I 27 / 146

35 Breitensuche: Animation Breitensuche Tiefensuche Topologische Sortierung Jens Wetzl Graphalgorithmen I 28 / 146

36 Breitensuche: Animation Breitensuche Tiefensuche Topologische Sortierung Jens Wetzl Graphalgorithmen I 29 / 146

37 Breitensuche: Animation Breitensuche Tiefensuche Topologische Sortierung Jens Wetzl Graphalgorithmen I 30 / 146

38 Breitensuche: Animation Breitensuche Tiefensuche Topologische Sortierung Jens Wetzl Graphalgorithmen I 31 / 146

39 Breitensuche: Animation Breitensuche Tiefensuche Topologische Sortierung Jens Wetzl Graphalgorithmen I 32 / 146

40 Breitensuche: Animation Breitensuche Tiefensuche Topologische Sortierung Jens Wetzl Graphalgorithmen I 33 / 146

41 Breitensuche: Animation Breitensuche Tiefensuche Topologische Sortierung Jens Wetzl Graphalgorithmen I 34 / 146

42 Tiefensuche Grundlagen Breitensuche Tiefensuche Topologische Sortierung Tiefensuche: ermittelt den Tiefensuchwald (bestehend aus Tiefensuchbäumen) eines Graphen weist jedem Knoten zwei timestamps zu: discovered[v]: wann wurde der Knoten entdeckt finished[v]: wann endete die Bearbeitung des Knoten ist Grundlage weiterer Algorithmen, z.b. topologische Sortierung und Bestimmung der starken skomponenten Jens Wetzl Graphalgorithmen I 35 / 146

43 Tiefensuche: Pseudocode (I) Breitensuche Tiefensuche Topologische Sortierung DFS(G ) : for all u V do visited[u] FALSE end for time 0 for all u V do if!visited[u] then predecessor[u] 1 DFS_VISIT (u) end if end for Jens Wetzl Graphalgorithmen I 36 / 146

44 Tiefensuche: Pseudocode (II) Breitensuche Tiefensuche Topologische Sortierung DFS_VISIT (u) : visited[u] TRUE time time + 1 discovered[u] time Jens Wetzl Graphalgorithmen I 37 / 146

45 Tiefensuche: Pseudocode (II) Breitensuche Tiefensuche Topologische Sortierung DFS_VISIT (u) : visited[u] TRUE time time + 1 discovered[u] time for all v Adj[u] do if!visited[v] then predecessor[v] u DFS_VISIT (v) end if end for Jens Wetzl Graphalgorithmen I 37 / 146

46 Tiefensuche: Pseudocode (II) Breitensuche Tiefensuche Topologische Sortierung DFS_VISIT (u) : visited[u] TRUE time time + 1 discovered[u] time for all v Adj[u] do if!visited[v] then predecessor[v] u DFS_VISIT (v) end if end for time time + 1 finished[u] time Jens Wetzl Graphalgorithmen I 37 / 146

47 Tiefensuche: Pseudocode (II) Breitensuche Tiefensuche Topologische Sortierung DFS_VISIT (u) : visited[u] TRUE time time + 1 discovered[u] time for all v Adj[u] do if!visited[v] then predecessor[v] u DFS_VISIT (v) end if end for time time + 1 finished[u] time Aufwand O( V + E ) Jens Wetzl Graphalgorithmen I 37 / 146

48 Tiefensuche: Animation Breitensuche Tiefensuche Topologische Sortierung Jens Wetzl Graphalgorithmen I 38 / 146

49 Tiefensuche: Animation Breitensuche Tiefensuche Topologische Sortierung Jens Wetzl Graphalgorithmen I 39 / 146

50 Tiefensuche: Animation Breitensuche Tiefensuche Topologische Sortierung Jens Wetzl Graphalgorithmen I 40 / 146

51 Tiefensuche: Animation Breitensuche Tiefensuche Topologische Sortierung Jens Wetzl Graphalgorithmen I 41 / 146

52 Tiefensuche: Animation Breitensuche Tiefensuche Topologische Sortierung Jens Wetzl Graphalgorithmen I 42 / 146

53 Tiefensuche: Animation Breitensuche Tiefensuche Topologische Sortierung Jens Wetzl Graphalgorithmen I 43 / 146

54 Tiefensuche: Animation Breitensuche Tiefensuche Topologische Sortierung Jens Wetzl Graphalgorithmen I 44 / 146

55 Tiefensuche: Animation Breitensuche Tiefensuche Topologische Sortierung Jens Wetzl Graphalgorithmen I 45 / 146

56 Tiefensuche: Animation Breitensuche Tiefensuche Topologische Sortierung Jens Wetzl Graphalgorithmen I 46 / 146

57 Tiefensuche: Animation Breitensuche Tiefensuche Topologische Sortierung Jens Wetzl Graphalgorithmen I 47 / 146

58 Tiefensuche: Animation Breitensuche Tiefensuche Topologische Sortierung Jens Wetzl Graphalgorithmen I 48 / 146

59 Tiefensuche: Animation Breitensuche Tiefensuche Topologische Sortierung Jens Wetzl Graphalgorithmen I 49 / 146

60 Tiefensuche: Animation Breitensuche Tiefensuche Topologische Sortierung Jens Wetzl Graphalgorithmen I 50 / 146

61 Tiefensuche: Animation Breitensuche Tiefensuche Topologische Sortierung Jens Wetzl Graphalgorithmen I 51 / 146

62 Tiefensuche: Animation Breitensuche Tiefensuche Topologische Sortierung Jens Wetzl Graphalgorithmen I 52 / 146

63 Tiefensuche: Animation Breitensuche Tiefensuche Topologische Sortierung Jens Wetzl Graphalgorithmen I 53 / 146

64 Tiefensuche in Java (I) Breitensuche Tiefensuche Topologische Sortierung class Main { static Graph g; static boolean[] visited; static int[] discovered, finished, predecessor; static int time = 0; } public static void main(string[] args) { // numv =... visited = new boolean[numv]; discovered = new int[numv]; finished = new int[numv]; predecessor = new int[numv]; g = new Graph(numV); g.insert(0, 1); //... dfs(); }... Jens Wetzl Graphalgorithmen I 54 / 146

65 Tiefensuche in Java (II) Breitensuche Tiefensuche Topologische Sortierung class Main {... } public static void dfs() { for (int i = 0; i < g.numv; i++) { visited[i] = false; predecessor[i] = -1; } for (int i = 0; i < g.numv; i++) { if (!visited[i]) { dfs_visit(i); } } }... Jens Wetzl Graphalgorithmen I 55 / 146

66 Tiefensuche in Java (III) Breitensuche Tiefensuche Topologische Sortierung class Main {... public static void dfs_visit(int vertex) { visited[vertex] = true; discovered[vertex] = ++time; for (Edge e: g.adj[vertex]) { int tovertex = e.from == vertex? e.to : e.from; if (!visited[tovertex]) { predecessor[tovertex] = vertex; dfs_visit(tovertex); } } finished[vertex] = ++time; } } Jens Wetzl Graphalgorithmen I 56 / 146

67 Topologische Sortierung Breitensuche Tiefensuche Topologische Sortierung Gegeben: Gerichteter, azyklischer Graph (DAG) Gesucht: Lineare Ordnung des Graphen Wenn (u, v) E, dann kommt u vor v in der Ordnung So eine Ordung heißt topologische Sortierung Nicht für jeden Graphen eindeutig Jens Wetzl Graphalgorithmen I 57 / 146

68 Beispiel Grundlagen Breitensuche Tiefensuche Topologische Sortierung undershorts socks shirt pants shoes tie socks undershorts pants shirt tie shoes Jens Wetzl Graphalgorithmen I 58 / 146

69 Breitensuche Tiefensuche Topologische Sortierung Topologische Sortierung: Algorithmus (informell) Anpassung des Tiefensuche-Algorithmus: Wenn ein Knoten abgearbeitet ist, füge ihn an den Anfang einer verketteten Liste ein Die Liste ist Rückgabewert des Algorithmus Jens Wetzl Graphalgorithmen I 59 / 146

70 Breitensuche Tiefensuche Topologische Sortierung Topologische Sortierung: Algorithmus (informell) Anpassung des Tiefensuche-Algorithmus: Wenn ein Knoten abgearbeitet ist, füge ihn an den Anfang einer verketteten Liste ein Die Liste ist Rückgabewert des Algorithmus Erläuterung: Knoten wird als abgearbeitet markiert er hat keine Nachfolger, die noch nicht abgearbeitet sind er hat keine Vorgänger, die schon abgearbeitet sind Jens Wetzl Graphalgorithmen I 59 / 146

71 Breitensuche Tiefensuche Topologische Sortierung Topologische Sortierung: Algorithmus (informell) Anpassung des Tiefensuche-Algorithmus: Wenn ein Knoten abgearbeitet ist, füge ihn an den Anfang einer verketteten Liste ein Die Liste ist Rückgabewert des Algorithmus Erläuterung: Knoten wird als abgearbeitet markiert er hat keine Nachfolger, die noch nicht abgearbeitet sind er hat keine Vorgänger, die schon abgearbeitet sind Aufwand O( V + E ) Jens Wetzl Graphalgorithmen I 59 / 146

72 Breitensuche Tiefensuche Topologische Sortierung Topologische Sortierung: Animation Jens Wetzl Graphalgorithmen I 60 / 146

73 Breitensuche Tiefensuche Topologische Sortierung Topologische Sortierung: Animation Jens Wetzl Graphalgorithmen I 61 / 146

74 Breitensuche Tiefensuche Topologische Sortierung Topologische Sortierung: Animation Jens Wetzl Graphalgorithmen I 62 / 146

75 Breitensuche Tiefensuche Topologische Sortierung Topologische Sortierung: Animation Jens Wetzl Graphalgorithmen I 63 / 146

76 Breitensuche Tiefensuche Topologische Sortierung Topologische Sortierung: Animation Jens Wetzl Graphalgorithmen I 64 / 146

77 Breitensuche Tiefensuche Topologische Sortierung Topologische Sortierung: Animation Jens Wetzl Graphalgorithmen I 65 / 146

78 Breitensuche Tiefensuche Topologische Sortierung Topologische Sortierung: Animation Jens Wetzl Graphalgorithmen I 66 / 146

79 Breitensuche Tiefensuche Topologische Sortierung Topologische Sortierung: Animation Jens Wetzl Graphalgorithmen I 67 / 146

80 Breitensuche Tiefensuche Topologische Sortierung Topologische Sortierung: Animation Jens Wetzl Graphalgorithmen I 68 / 146

81 Breitensuche Tiefensuche Topologische Sortierung Topologische Sortierung: Animation Jens Wetzl Graphalgorithmen I 69 / 146

82 Breitensuche Tiefensuche Topologische Sortierung Topologische Sortierung: Animation Jens Wetzl Graphalgorithmen I 70 / 146

83 Breitensuche Tiefensuche Topologische Sortierung Topologische Sortierung: Animation Jens Wetzl Graphalgorithmen I 71 / 146

84 Breitensuche Tiefensuche Topologische Sortierung Topologische Sortierung: Animation Jens Wetzl Graphalgorithmen I 72 / 146

85 Breitensuche Tiefensuche Topologische Sortierung Topologische Sortierung: Animation Jens Wetzl Graphalgorithmen I 73 / 146

86 Übersicht Grundlagen Breitensuche Tiefensuche Topologische Sortierung 1 Grundlagen Datenstrukturen Umsetzung in Java 2 Breitensuche Tiefensuche Topologische Sortierung 3 skomponenten } Fragen? Jens Wetzl Graphalgorithmen I 74 / 146

87 Grundlagen skomponenten A B A B C D C D E F E F nicht zusammenhängend zusammenhängend Jens Wetzl Graphalgorithmen I 75 / 146

88 skomponenten Starker / schwacher A B A B C D C D E F E F schwach zusammenhängend stark zusammenhängend Jens Wetzl Graphalgorithmen I 76 / 146

89 skomponenten Starker / schwacher (schwache) skomponenten starke skomponenten A B A B C D C D E F E F Jens Wetzl Graphalgorithmen I 77 / 146

90 k- Grundlagen skomponenten G heißt k-fach kantenzusammenhängend, wenn man k 1 beliebige Kanten entfernen kann und G dann immer noch zusammenhängend ist Jens Wetzl Graphalgorithmen I 78 / 146

91 k- Grundlagen skomponenten G heißt k-fach kantenzusammenhängend, wenn man k 1 beliebige Kanten entfernen kann und G dann immer noch zusammenhängend ist G heißt k-fach knotenzusammenhängend (oder k-zusammenhängend), wenn man k 1 beliebige Knoten entfernen kann und G dann immer noch zusammenhängend ist 2-zusammenhängender Graph Jens Wetzl Graphalgorithmen I 78 / 146

92 skomponenten Finden von skomponenten A B A B C D C D E F E F Tiefensuche Algorithmus von Kosaraju Jens Wetzl Graphalgorithmen I 79 / 146

93 skomponenten skomp. ungerichteter Graphen Idee: Beliebigen, noch nicht besuchten Knoten wählen und Tiefensuche durchführen Alle gefundenen Knoten + Startknoten bilden eine skomponente Solange durchführen, bis alle Knoten besucht wurden Jens Wetzl Graphalgorithmen I 80 / 146

94 skomponenten skomp. ungerichteter Graphen Idee: Beliebigen, noch nicht besuchten Knoten wählen und Tiefensuche durchführen Alle gefundenen Knoten + Startknoten bilden eine skomponente Solange durchführen, bis alle Knoten besucht wurden CC (G ) : for all u V do visited[u] FALSE end for cc_count 0 for all u V do if!visited[u] then CC_VISIT (u, cc_count) cc_count cc_count + 1 end if end for Jens Wetzl Graphalgorithmen I 80 / 146

95 skomponenten skomp. ungerichteter Graphen CC_VISIT (u, cc_count) : visited[u] TRUE cc[u] cc_count for all v Adj[u] do if!visited[v] then CC_VISIT (v, cc_count) end if end for Für Knoten i gibt cc[i] an, in welcher skomp. {0,..., #Komp 1} er ist. Jens Wetzl Graphalgorithmen I 81 / 146

96 skomponenten skomp. ungerichteter Graphen CC_VISIT (u, cc_count) : visited[u] TRUE cc[u] cc_count for all v Adj[u] do if!visited[v] then CC_VISIT (v, cc_count) end if end for Aufwand O( V + E ) Für Knoten i gibt cc[i] an, in welcher skomp. {0,..., #Komp 1} er ist. Jens Wetzl Graphalgorithmen I 81 / 146

97 skomponenten Starke skomp. gerichteter Graphen Transponierter Graph: G T = (V, E T ) E T = {(v, u) (u, v) E } Jens Wetzl Graphalgorithmen I 82 / 146

98 skomponenten Starke skomp. gerichteter Graphen Transponierter Graph: G T = (V, E T ) E T = {(v, u) (u, v) E } A B A B C D C D E F E F G G T Jens Wetzl Graphalgorithmen I 82 / 146

99 skomponenten Starke skomp. gerichteter Graphen Ausgangspunkt: G und G T haben die gleichen SCC u ist von v und v ist von u erreichbar in G v ist von u und u ist von v erreichbar in G T Jens Wetzl Graphalgorithmen I 83 / 146

100 skomponenten Starke skomp. gerichteter Graphen Ausgangspunkt: G und G T haben die gleichen SCC u ist von v und v ist von u erreichbar in G v ist von u und u ist von v erreichbar in G T Informeller Algorithmus: Erzeuge einen leeren Stapel S Führe eine DFS auf G durch. Sobald der rekursive Abstieg für einen Knoten v zurückkehrt, lege v auf S Jens Wetzl Graphalgorithmen I 83 / 146

101 skomponenten Starke skomp. gerichteter Graphen Ausgangspunkt: G und G T haben die gleichen SCC u ist von v und v ist von u erreichbar in G v ist von u und u ist von v erreichbar in G T Informeller Algorithmus: Erzeuge einen leeren Stapel S Führe eine DFS auf G durch. Sobald der rekursive Abstieg für einen Knoten v zurückkehrt, lege v auf S Erzeuge den transponierten Graphen G T Jens Wetzl Graphalgorithmen I 83 / 146

102 skomponenten Starke skomp. gerichteter Graphen Ausgangspunkt: G und G T haben die gleichen SCC u ist von v und v ist von u erreichbar in G v ist von u und u ist von v erreichbar in G T Informeller Algorithmus: Erzeuge einen leeren Stapel S Führe eine DFS auf G durch. Sobald der rekursive Abstieg für einen Knoten v zurückkehrt, lege v auf S Erzeuge den transponierten Graphen G T Solange noch Elemente auf S liegen: Entferne den obersten Knoten von S und führe für ihn DFS_VISIT auf G T durch. Alle noch nicht gefundenen erreichbaren Knoten gehören zur selben SCC. Entferne alle so gefundenen Knoten aus S Jens Wetzl Graphalgorithmen I 83 / 146

103 SCC: Beispiel Grundlagen skomponenten F C A B D E S A C E B D F Erzeuge einen leeren Stapel S Jens Wetzl Graphalgorithmen I 84 / 146

104 SCC: Beispiel Grundlagen skomponenten F C A B D E S A C E B D F Führe eine DFS auf G durch. Sobald der rekursive Abstieg für einen Knoten v zurückkehrt, lege v auf S Jens Wetzl Graphalgorithmen I 85 / 146

105 SCC: Beispiel Grundlagen skomponenten F C A B D E S A C E B D F Führe eine DFS auf G durch. Sobald der rekursive Abstieg für einen Knoten v zurückkehrt, lege v auf S Jens Wetzl Graphalgorithmen I 86 / 146

106 SCC: Beispiel Grundlagen skomponenten F C A B D E S A C E B D F Führe eine DFS auf G durch. Sobald der rekursive Abstieg für einen Knoten v zurückkehrt, lege v auf S Jens Wetzl Graphalgorithmen I 87 / 146

107 SCC: Beispiel Grundlagen skomponenten F C A B C D S E F Führe eine DFS auf G durch. Sobald der rekursive Abstieg für einen Knoten v zurückkehrt, lege v auf S Jens Wetzl Graphalgorithmen I 88 / 146

108 SCC: Beispiel Grundlagen skomponenten F C A B E S C E D F Führe eine DFS auf G durch. Sobald der rekursive Abstieg für einen Knoten v zurückkehrt, lege v auf S Jens Wetzl Graphalgorithmen I 88 / 146

109 SCC: Beispiel Grundlagen skomponenten F C A B D E S C E D F Führe eine DFS auf G durch. Sobald der rekursive Abstieg für einen Knoten v zurückkehrt, lege v auf S Jens Wetzl Graphalgorithmen I 88 / 146

110 SCC: Beispiel Grundlagen skomponenten F C B D E S A C E B D F Führe eine DFS auf G durch. Sobald der rekursive Abstieg für einen Knoten v zurückkehrt, lege v auf S Jens Wetzl Graphalgorithmen I 88 / 146

111 SCC: Beispiel Grundlagen skomponenten F C A B D E S A C E B D F Führe eine DFS auf G durch. Sobald der rekursive Abstieg für einen Knoten v zurückkehrt, lege v auf S Jens Wetzl Graphalgorithmen I 88 / 146

112 SCC: Beispiel Grundlagen skomponenten F C A B D E S A C E B D F Führe eine DFS auf G durch. Sobald der rekursive Abstieg für einen Knoten v zurückkehrt, lege v auf S Jens Wetzl Graphalgorithmen I 89 / 146

113 SCC: Beispiel Grundlagen skomponenten F C A B D E S A C E B D F Führe eine DFS auf G durch. Sobald der rekursive Abstieg für einen Knoten v zurückkehrt, lege v auf S Jens Wetzl Graphalgorithmen I 90 / 146

114 SCC: Beispiel Grundlagen skomponenten F C A B D E S A C E B D F Erzeuge den transponierten Graphen G T Jens Wetzl Graphalgorithmen I 91 / 146

115 SCC: Beispiel Grundlagen skomponenten F C A B D E S A C E B D F Entferne den obersten Knoten von S und führe für ihn DFS_VISIT auf G T durch. Alle noch nicht gefundenen erreichbaren Knoten gehören zur selben SCC. Entferne alle so gefundenen Knoten aus S Jens Wetzl Graphalgorithmen I 92 / 146

116 SCC: Beispiel Grundlagen skomponenten F C A B D E S A C E B D F Entferne den obersten Knoten von S und führe für ihn DFS_VISIT auf G T durch. Alle noch nicht gefundenen erreichbaren Knoten gehören zur selben SCC. Entferne alle so gefundenen Knoten aus S Jens Wetzl Graphalgorithmen I 93 / 146

117 SCC: Beispiel Grundlagen skomponenten F C A B D E S A C E B D F Entferne den obersten Knoten von S und führe für ihn DFS_VISIT auf G T durch. Alle noch nicht gefundenen erreichbaren Knoten gehören zur selben SCC. Entferne alle so gefundenen Knoten aus S Jens Wetzl Graphalgorithmen I 94 / 146

118 SCC: Beispiel Grundlagen skomponenten F C A B D E S A C E B D F Entferne den obersten Knoten von S und führe für ihn DFS_VISIT auf G T durch. Alle noch nicht gefundenen erreichbaren Knoten gehören zur selben SCC. Entferne alle so gefundenen Knoten aus S Jens Wetzl Graphalgorithmen I 95 / 146

119 SCC: Beispiel Grundlagen skomponenten F C A B D E S A C E B D F Entferne den obersten Knoten von S und führe für ihn DFS_VISIT auf G T durch. Alle noch nicht gefundenen erreichbaren Knoten gehören zur selben SCC. Entferne alle so gefundenen Knoten aus S Jens Wetzl Graphalgorithmen I 96 / 146

120 SCC: Beispiel Grundlagen skomponenten F C A B D E S A C E B D F Entferne den obersten Knoten von S und führe für ihn DFS_VISIT auf G T durch. Alle noch nicht gefundenen erreichbaren Knoten gehören zur selben SCC. Entferne alle so gefundenen Knoten aus S Jens Wetzl Graphalgorithmen I 97 / 146

121 Brücken Grundlagen skomponenten A B C D G Gegeben: 1-fach kantenzusammenhängender Graph es gibt mindestens eine Kante, nach deren Entfernung der Graph nicht mehr zusammenhängend ist E F Solche Kanten nennt man Brücken Jens Wetzl Graphalgorithmen I 98 / 146

122 Brücken Grundlagen skomponenten A B B A C G C D D G E F E F Graph G DFS-Baum von G Jens Wetzl Graphalgorithmen I 99 / 146

123 Brücken: Idee zum Algorithmus skomponenten Berechne DFS-Wald von G und für jeden Knoten K seinen Abstand zur Wurzel d K Jens Wetzl Graphalgorithmen I 100 / 146

124 Brücken: Idee zum Algorithmus skomponenten Berechne DFS-Wald von G und für jeden Knoten K seinen Abstand zur Wurzel d K Gibt es für eine ausgehende Baumkante e (Baumkante zum Vaterknoten wird nicht betrachtet) eines Knotens A keine Möglichkeit, einen Knoten K mit d K d A zu erreichen (ohne e zu benutzen), dann ist e eine Brücke Jens Wetzl Graphalgorithmen I 100 / 146

125 Brücken: Idee zum Algorithmus skomponenten Berechne DFS-Wald von G und für jeden Knoten K seinen Abstand zur Wurzel d K Gibt es für eine ausgehende Baumkante e (Baumkante zum Vaterknoten wird nicht betrachtet) eines Knotens A keine Möglichkeit, einen Knoten K mit d K d A zu erreichen (ohne e zu benutzen), dann ist e eine Brücke Aufwand O( V + E ) Jens Wetzl Graphalgorithmen I 100 / 146

126 Brücken: Idee zum Algorithmus skomponenten Berechne DFS-Wald von G und für jeden Knoten K seinen Abstand zur Wurzel d K Gibt es für eine ausgehende Baumkante e (Baumkante zum Vaterknoten wird nicht betrachtet) eines Knotens A keine Möglichkeit, einen Knoten K mit d K d A zu erreichen (ohne e zu benutzen), dann ist e eine Brücke Aufwand O( V + E ) Jens Wetzl Graphalgorithmen I 101 / 146

127 Brücken: Idee zum Algorithmus skomponenten Berechne DFS-Wald von G und für jeden Knoten K seinen Abstand zur Wurzel d K Gibt es für eine ausgehende Baumkante e (Baumkante zum Vaterknoten wird nicht betrachtet) eines Knotens A keine Möglichkeit, einen Knoten K mit d K d A zu erreichen (ohne e zu benutzen), dann ist e eine Brücke Aufwand O( V + E ) Jens Wetzl Graphalgorithmen I 102 / 146

128 Brücken: Algorithmus skomponenten BRIDGES() : for all u V do depth[u] 1 end for for all u V do if depth[u] == 1 then BRIDGES_VISIT (u, 0, 1) end if end for Jens Wetzl Graphalgorithmen I 103 / 146

129 Brücken: Algorithmus skomponenten BRIDGES_VISIT (from, curdepth, parent) : low depth[u] curdepth for all to Adj[from] to <> parent do end for return low 5 Jens Wetzl Graphalgorithmen I 104 / 146

130 Brücken: Algorithmus skomponenten BRIDGES_VISIT (from, curdepth, parent) : low depth[u] curdepth for all to Adj[from] to <> parent do if depth[to] <> 1 then low MIN(low, depth[to]) else end if end for return low 5 Jens Wetzl Graphalgorithmen I 104 / 146

131 Brücken: Algorithmus skomponenten BRIDGES_VISIT (from, curdepth, parent) : low depth[u] curdepth for all to Adj[from] to <> parent do if depth[to] <> 1 then low MIN(low, depth[to]) else l BRIDGES_VISIT (to, curdepth + 1, from) if l > curdepth then // Brücke: from to end if low MIN(low, l) end if end for return low Jens Wetzl Graphalgorithmen I 104 / 146

132 Brücken: Animation Grundlagen skomponenten Jens Wetzl Graphalgorithmen I 105 / 146

133 Brücken: Animation Grundlagen skomponenten Jens Wetzl Graphalgorithmen I 106 / 146

134 Brücken: Animation Grundlagen skomponenten Jens Wetzl Graphalgorithmen I 107 / 146

135 Brücken: Animation Grundlagen skomponenten Jens Wetzl Graphalgorithmen I 108 / 146

136 Brücken: Animation Grundlagen skomponenten Jens Wetzl Graphalgorithmen I 109 / 146

137 Brücken: Animation Grundlagen skomponenten Jens Wetzl Graphalgorithmen I 110 / 146

138 Brücken: Animation Grundlagen skomponenten Jens Wetzl Graphalgorithmen I 111 / 146

139 Brücken: Animation Grundlagen skomponenten Jens Wetzl Graphalgorithmen I 112 / 146

140 Brücken: Animation Grundlagen skomponenten Jens Wetzl Graphalgorithmen I 113 / 146

141 Brücken: Animation Grundlagen skomponenten Jens Wetzl Graphalgorithmen I 114 / 146

142 Brücken: Animation Grundlagen skomponenten Jens Wetzl Graphalgorithmen I 115 / 146

143 Brücken: Animation Grundlagen skomponenten Jens Wetzl Graphalgorithmen I 116 / 146

144 Brücken: Animation Grundlagen skomponenten Jens Wetzl Graphalgorithmen I 117 / 146

145 Brücken: Animation Grundlagen skomponenten Jens Wetzl Graphalgorithmen I 118 / 146

146 Artikulationspunkte skomponenten B E A C D G F Analog zu Brücken: Gegeben: 1-fach knotenzusammenhängender Graph es gibt mindestens einen Knoten, nach dessen Entfernung der Graph nicht mehr zusammenhängend ist Solche Knoten nennt man Artikulationspunkte Jens Wetzl Graphalgorithmen I 119 / 146

147 Artikulationspunkte skomponenten A B E A C D G F B C D E G F Graph G DFS-Baum von G Jens Wetzl Graphalgorithmen I 120 / 146

148 skomponenten Artikulationspunkt: Idee zum Algorithmus Berechne DFS-Wald von G und für jeden Knoten K seinen Abstand zur Wurzel d K Jens Wetzl Graphalgorithmen I 121 / 146

149 skomponenten Artikulationspunkt: Idee zum Algorithmus Berechne DFS-Wald von G und für jeden Knoten K seinen Abstand zur Wurzel d K Für jeden Knoten A: Ist A Wurzel eines Tiefensuchbaums? ja A ist Artikulationspunkt, wenn er mehr als einen Nachfolgerknoten hat Jens Wetzl Graphalgorithmen I 121 / 146

150 skomponenten Artikulationspunkt: Idee zum Algorithmus Berechne DFS-Wald von G und für jeden Knoten K seinen Abstand zur Wurzel d K Für jeden Knoten A: Ist A Wurzel eines Tiefensuchbaums? ja A ist Artikulationspunkt, wenn er mehr als einen Nachfolgerknoten hat nein A ist Artikulationspunkt, wenn man von mindestens einem Nachfolger N von A (e = {A, N} E) keinen Knoten K erreichen kann mit d K < d A (ohne e zu benutzen) Jens Wetzl Graphalgorithmen I 121 / 146

151 skomponenten Artikulationspunkt: Idee zum Algorithmus Berechne DFS-Wald von G und für jeden Knoten K seinen Abstand zur Wurzel d K Für jeden Knoten A: Ist A Wurzel eines Tiefensuchbaums? ja A ist Artikulationspunkt, wenn er mehr als einen Nachfolgerknoten hat nein A ist Artikulationspunkt, wenn man von mindestens einem Nachfolger N von A (e = {A, N} E) keinen Knoten K erreichen kann mit d K < d A (ohne e zu benutzen) Aufwand O( V + E ) Jens Wetzl Graphalgorithmen I 121 / 146

152 Artikulationspunkte: Algorithmus skomponenten ARTICULATION_POINTS() : for all u V do depth[u] 1 end for for all u V do if depth[u] == 1 then AP_VISIT (u, 0, 1) end if end for Jens Wetzl Graphalgorithmen I 122 / 146

153 Artikulationspunkte: Algorithmus skomponenten ARTICULATION_POINTS() : for all u V do depth[u] 1 end for for all u V do if depth[u] == 1 then AP_VISIT (u, 0, 1) end if end for AP_VISIT (from, curdepth, parent) : low depth[u] curdepth children 0 ap FALSE Jens Wetzl Graphalgorithmen I 122 / 146

154 Artikulationspunkte: Algorithmus skomponenten for all to Adj[from] to <> parent do if depth[to] <> 1 then low MIN(low, depth[to]) else children children + 1 l AP_VISIT (to, curdepth + 1, from) if l >= curdepth then ap TRUE end if low MIN(low, l) end if end for return low Jens Wetzl Graphalgorithmen I 123 / 146

155 Artikulationspunkte: Algorithmus skomponenten for all to Adj[from] to <> parent do if depth[to] <> 1 then low MIN(low, depth[to]) else children children + 1 l AP_VISIT (to, curdepth + 1, from) if l >= curdepth then ap TRUE end if low MIN(low, l) end if end for if (ap curdepth > 0) (curdepth == 0 children > 1) then // from ist Artikulationspunkt end if return low Jens Wetzl Graphalgorithmen I 123 / 146

156 Artikulationspunkte: Animation skomponenten Jens Wetzl Graphalgorithmen I 124 / 146

157 Artikulationspunkte: Animation skomponenten Jens Wetzl Graphalgorithmen I 125 / 146

158 Artikulationspunkte: Animation skomponenten Jens Wetzl Graphalgorithmen I 126 / 146

159 Artikulationspunkte: Animation skomponenten Jens Wetzl Graphalgorithmen I 127 / 146

160 Artikulationspunkte: Animation skomponenten Jens Wetzl Graphalgorithmen I 128 / 146

161 Artikulationspunkte: Animation skomponenten Jens Wetzl Graphalgorithmen I 129 / 146

162 Artikulationspunkte: Animation skomponenten Jens Wetzl Graphalgorithmen I 130 / 146

163 Artikulationspunkte: Animation skomponenten Jens Wetzl Graphalgorithmen I 131 / 146

164 Artikulationspunkte: Animation skomponenten Jens Wetzl Graphalgorithmen I 132 / 146

165 Artikulationspunkte: Animation skomponenten Jens Wetzl Graphalgorithmen I 133 / 146

166 Artikulationspunkte: Animation skomponenten Jens Wetzl Graphalgorithmen I 134 / 146

167 Artikulationspunkte: Animation skomponenten Jens Wetzl Graphalgorithmen I 135 / 146

168 Artikulationspunkte: Animation skomponenten Jens Wetzl Graphalgorithmen I 136 / 146

169 Artikulationspunkte: Animation skomponenten Jens Wetzl Graphalgorithmen I 137 / 146

170 Artikulationspunkte: Animation skomponenten Jens Wetzl Graphalgorithmen I 138 / 146

171 Artikulationspunkte: Animation skomponenten Jens Wetzl Graphalgorithmen I 139 / 146

172 Übersicht Grundlagen skomponenten 1 Grundlagen Datenstrukturen Umsetzung in Java 2 Breitensuche Tiefensuche Topologische Sortierung 3 skomponenten } Fragen? Jens Wetzl Graphalgorithmen I 140 / 146

173 Beispielprobleme: Spreadsheet (UVa 196) A1 B1 C1 A2 B2 C2 A3 B3 C Einfache Tabellenkalkulation mit (m n)-tabelle Einträge: Zahlen und Summenformeln (z.b. =A1+B3) Eingabe: =A1+B1+C =A2+B2+C2 =A1+A2 =B1+B2 =C1+C2 =D1+D2 Ausgabe: Jens Wetzl Graphalgorithmen I 141 / 146

174 Beispielprobleme: Playing with Wheels (UVa 10067) Jedes Rad kann per Knopfdruck nach rechts oder links gedreht werden, um eine neue Zahl zu erzeugen Gesucht: Mindestanzahl Knopfdrücke, um von einer Anfangs- zu einer Endzahl zu kommen Einige verbotene Zahlen dürfen nicht als Zwischenzustände auftreten Jens Wetzl Graphalgorithmen I 142 / 146

175 Beispielprobleme: Tourist Guide (UVa 10199) Ein rasender Stadtführer möchte wissen, wo sich alle Radarfallen der Stadt befinden. Blitzer sind strategisch aufgestellt an Orten, die man passieren muss, um von einer Zone der Stadt in eine andere zu kommen. Mit anderen Worten: Wenn man, um von A nach B zu kommen, einen Ort C passieren muss, dann ist am Ort C eine Radarfalle. Eingabe: ipanema copacabana copacabana sugarloaf ipanema sugarloaf maracana lapa sugarloaf maracana corcovado sugarloaf lapa corcovado Ausgabe: City map #1: 1 camera(s) found sugarloaf Jens Wetzl Graphalgorithmen I 143 / 146

176 Zusammenfassung 1 Grundlagen Datenstrukturen Umsetzung in Java 2 Breitensuche Tiefensuche Topologische Sortierung 3 skomponenten Jens Wetzl Graphalgorithmen I 144 / 146

177 Quellen Grundlagen Introduction to Algorithms, Second Edition Cormen, Leiserson, Rivest, Stein; MIT Press, 2001 Algorithms in Java, Third Edition, Part 5 Robert Sedgewick; Addison Wesley, 2003 Programming Challenges Skiena, Revilla; Springer, 2003 Graphalgorithmen I ( Hallo Welt! 2008) Simon Regnet Jens Wetzl Graphalgorithmen I 145 / 146

178 Danke für die Aufmerksamkeit! Viel Spaß beim Aufgaben-Lösen!

Vorlesung Informatik 2 Algorithmen und Datenstrukturen. (20 Graphen) T. Lauer

Vorlesung Informatik 2 Algorithmen und Datenstrukturen. (20 Graphen) T. Lauer Vorlesung Informatik 2 Algorithmen und Datenstrukturen (20 Graphen) T. Lauer 1 Motivation Wie komme ich am besten von Freiburg nach Ulm? Was ist die kürzeste Rundreise durch eine gegebene Menge von Städten?

Mehr

Informatik 11 Kapitel 2 - Rekursive Datenstrukturen

Informatik 11 Kapitel 2 - Rekursive Datenstrukturen Fachschaft Informatik Informatik 11 Kapitel 2 - Rekursive Datenstrukturen Michael Steinhuber König-Karlmann-Gymnasium Altötting 15. Januar 2016 Folie 1/77 Inhaltsverzeichnis I 1 Datenstruktur Schlange

Mehr

10 Graphenalgorithmen in Java

10 Graphenalgorithmen in Java 10.1 Implementierung eines gewichteten Graphen 10.2 Implementierung der Breitensuche 10.3 Implementierung der Tiefensuche 10 147 Teil X Graphalgorithmen in Java Überblick Implementierung eines gewichteten

Mehr

Graphen: Datenstrukturen und Algorithmen

Graphen: Datenstrukturen und Algorithmen Graphen: Datenstrukturen und Algorithmen Ein Graph G = (V, E) wird durch die Knotenmenge V und die Kantenmenge E repräsentiert. G ist ungerichtet, wenn wir keinen Start- und Zielpunkt der Kanten auszeichnen.

Mehr

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen 186.172 Algorithmen und Datenstrukturen 1 VL 4.0 Übungsblatt 4 für die Übung

Mehr

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2 Algorithmen und Datenstrukturen 2 Sommersemester 2007 4. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik studla@bioinf.uni-leipzig.de Traversierung Durchlaufen eines Graphen, bei

Mehr

Breiten- und Tiefensuche in Graphen

Breiten- und Tiefensuche in Graphen Breiten- und Tiefensuche in Graphen Inhalt Theorie. Graphen. Die Breitensuche in der Theorie am Beispiel eines ungerichteten Graphen. Die Tiefensuche in der Theorie am Beispiel eines gerichteten Graphen

Mehr

Ein Graph ist ein Paar (V,E), wobei V eine Menge von Knoten und E eine Menge von Kanten (v,w) mit v,w in V ist.

Ein Graph ist ein Paar (V,E), wobei V eine Menge von Knoten und E eine Menge von Kanten (v,w) mit v,w in V ist. Graphen Definition: Ein Graph ist ein Paar (V,E), wobei V eine Menge von Knoten und E eine Menge von Kanten (v,w) mit v,w in V ist. Begriffe: Gerichteter Graph: Alle Kanten haben eine Richtung vom Anfangsknoten

Mehr

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2 Algorithmen und Datenstrukturen 2 Sommersemester 2006 3. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik studla@bioinf.uni-leipzig.de Algorithmen für Graphen Fragestellungen: Suche

Mehr

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2 Algorithmen und Datenstrukturen 2 Sommersemester 2006 5. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik studla@bioinf.uni-leipzig.de Wdhlg.: Dijkstra-Algorithmus I Bestimmung der

Mehr

1 topologisches Sortieren

1 topologisches Sortieren Wolfgang Hönig / Andreas Ecke WS 09/0 topologisches Sortieren. Überblick. Solange noch Knoten vorhanden: a) Suche Knoten v, zu dem keine Kante führt (Falls nicht vorhanden keine topologische Sortierung

Mehr

Routing Algorithmen. Begriffe, Definitionen

Routing Algorithmen. Begriffe, Definitionen Begriffe, Definitionen Routing (aus der Informatik) Wegewahl oder Verkehrslenkung bezeichnet in der Telekommunikation das Festlegen von Wegen für Nachrichtenströme bei der Nachrichtenübermittlung über

Mehr

Algorithmen und Datenstrukturen Graphen - Einführung

Algorithmen und Datenstrukturen Graphen - Einführung Algorithmen und Datenstrukturen Graphen - Einführung Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS 12 Überblick Definition / Eigenschaften Anwendungen Repräsentation

Mehr

8 Diskrete Optimierung

8 Diskrete Optimierung 8 Diskrete Optimierung Definition 8.1. Ein Graph G ist ein Paar (V (G), E(G)) besteh aus einer lichen Menge V (G) von Knoten (oder Ecken) und einer Menge E(G) ( ) V (G) 2 von Kanten. Die Ordnung n(g) von

Mehr

ADS: Algorithmen und Datenstrukturen 2

ADS: Algorithmen und Datenstrukturen 2 ADS: Algorithmen und Datenstrukturen Der Tragödie IV. Theyl Peter F. Stadler & Konstantin Klemm Bioinformatics Group, Dept. of Computer Science & Interdisciplinary Center for Bioinformatics, University

Mehr

Customization (Zuschneiden)

Customization (Zuschneiden) Customization (Zuschneiden) Anpassen der (Graph)Datenstruktur an die Anwendung. I Ziel: schnell, kompakt. I benutze Entwurfsprinzip: make the common case fast I Listen vermeiden Mögliches Problem: Software-Engineering-Alptraum

Mehr

11.1 Grundlagen - Denitionen

11.1 Grundlagen - Denitionen 11 Binärbäume 11.1 Grundlagen - Denitionen Denition: Ein Baum ist eine Menge, die durch eine sog. Nachfolgerrelation strukturiert ist. In einem Baum gilt: (I) (II) 1 Knoten w ohne VATER(w), das ist die

Mehr

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete Kapitel 4: Dynamische Datenstrukturen Algorithmen und Datenstrukturen WS 2012/13 Prof. Dr. Sándor Fekete 4.4 Binäre Suche Aufgabenstellung: Rate eine Zahl zwischen 100 und 114! Algorithmus 4.1 INPUT: OUTPUT:

Mehr

Binärbäume. Prof. Dr. E. Ehses, 2014 1

Binärbäume. Prof. Dr. E. Ehses, 2014 1 Binärbäume Grundbegriffe der Graphentheorie Bäume und Ihre Anwendungen Unterschiedliche Darstellungen von Bäumen und Binärbäumen Binärbäume in Java Rekursive Traversierung von Binärbäumen Ebenenweise Traversierung

Mehr

Kürzeste Wege in Graphen. Maurice Duvigneau Otto-von-Guericke Universität Fakultät für Informatik

Kürzeste Wege in Graphen. Maurice Duvigneau Otto-von-Guericke Universität Fakultät für Informatik Kürzeste Wege in Graphen Maurice Duvigneau Otto-von-Guericke Universität Fakultät für Informatik Gliederung Einleitung Definitionen Algorithmus von Dijkstra Bellmann-Ford Algorithmus Floyd-Warshall Algorithmus

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

Mehr

C++, LEDA und STL Visualisierung minimal/maximal aufspannender Bäume

C++, LEDA und STL Visualisierung minimal/maximal aufspannender Bäume Fachbereich IV, Informatik Softwarepraktikum C++, LEDA und STL Visualisierung minimal/maximal aufspannender Bäume Wintersemester 2004/2005 Dokumentation Algorithmen zur Lösung von MST - Problemen Nicolas

Mehr

Algorithmen und Datenstrukturen (WS 2007/08) 63

Algorithmen und Datenstrukturen (WS 2007/08) 63 Kapitel 6 Graphen Beziehungen zwischen Objekten werden sehr oft durch binäre Relationen modelliert. Wir beschäftigen uns in diesem Kapitel mit speziellen binären Relationen, die nicht nur nur besonders

Mehr

Tutoraufgabe 1 (2 3 4 Bäume):

Tutoraufgabe 1 (2 3 4 Bäume): Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Übungsblatt (Abgabe.0.0) F. Corzilius, S. Schupp, T. Ströder Allgemeine Hinweise: Die Hausaufgaben sollen in Gruppen von je bis Studierenden aus

Mehr

Flüsse, Schnitte, bipartite Graphen

Flüsse, Schnitte, bipartite Graphen Flüsse, Schnitte, bipartite Graphen Vlad Popa 08.06.2010 Inhaltsverzeihnis 1. Flussnetzwerke und Flüsse 1.1 Ford- Fulkerson 1.2 Edmond Karp 1.3 Dinic 2. Schnitte 3. Maximaler Fluss bei minimalen Kosten

Mehr

Vorlesung 4 BETWEENNESS CENTRALITY

Vorlesung 4 BETWEENNESS CENTRALITY Vorlesung 4 BETWEENNESS CENTRALITY 101 Aufgabe! Szenario: Sie arbeiten bei einem sozialen Online-Netzwerk. Aus der Netzwerk-Struktur Ihrer Benutzer sollen Sie wichtige Eigenschaften extrahieren. [http://www.fahrschule-vatterodt.de/

Mehr

Dynamische Programmierung. Problemlösungsstrategie der Informatik

Dynamische Programmierung. Problemlösungsstrategie der Informatik als Problemlösungsstrategie der Informatik und ihre Anwedung in der Diskreten Mathematik und Graphentheorie Fabian Cordt Enisa Metovic Wissenschaftliche Arbeiten und Präsentationen, WS 2010/2011 Gliederung

Mehr

Gliederung. Definition Wichtige Aussagen und Sätze Algorithmen zum Finden von Starken Zusammenhangskomponenten

Gliederung. Definition Wichtige Aussagen und Sätze Algorithmen zum Finden von Starken Zusammenhangskomponenten Gliederung Zusammenhang von Graphen Stark Zusammenhängend K-fach Zusammenhängend Brücken Definition Algorithmus zum Finden von Brücken Anwendung Zusammenhangskomponente Definition Wichtige Aussagen und

Mehr

Geordnete Binärbäume

Geordnete Binärbäume Geordnete Binärbäume Prof. Dr. Martin Wirsing in Zusammenarbeit mit Gilbert Beyer und Christian Kroiß http://www.pst.ifi.lmu.de/lehre/wise-09-10/infoeinf/ WS 09/10 Einführung in die Informatik: Programmierung

Mehr

Datenstrukturen & Algorithmen

Datenstrukturen & Algorithmen Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Binäre Suchbäume Einführung und Begriffe Binäre Suchbäume 2 Binäre Suchbäume Datenstruktur für dynamische Mengen

Mehr

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder Programmieren in PASCAL Bäume 1 1. Baumstrukturen Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder 1. die leere Struktur oder 2. ein Knoten vom Typ Element

Mehr

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14 Eidgenössische Technische Hochschule Zürich Ecole polytechnique fédérale de Zurich Politecnico federale di Zurigo Federal Institute of Technology at Zurich Institut für Theoretische Informatik 2. April

Mehr

Am Dienstag, den 16. Dezember, ist Eulenfest. 1/48

Am Dienstag, den 16. Dezember, ist Eulenfest. 1/48 Am Dienstag, den 16. Dezember, ist Eulenfest. 1/48 Grundbegriffe der Informatik Einheit 12: Erste Algorithmen in Graphen Thomas Worsch Universität Karlsruhe, Fakultät für Informatik Wintersemester 2008/2009

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 10 (3.6.2014) Binäre Suchbäume I Algorithmen und Komplexität Zusätzliche Dictionary Operationen Dictionary: Zusätzliche mögliche Operationen:

Mehr

Kapitel 6: Graphalgorithmen Gliederung

Kapitel 6: Graphalgorithmen Gliederung Gliederung 1. Grundlagen 2. Zahlentheoretische Algorithmen 3. Sortierverfahren 4. Ausgewählte Datenstrukturen 5. Dynamisches Programmieren 6. Graphalgorithmen 7. String-Matching 8. Kombinatorische Algorithmen

Mehr

Name: Seite 2. Beantworten Sie die Fragen in den Aufgaben 1 und 2 mit einer kurzen, prägnanten Antwort.

Name: Seite 2. Beantworten Sie die Fragen in den Aufgaben 1 und 2 mit einer kurzen, prägnanten Antwort. Name: Seite 2 Beantworten Sie die Fragen in den Aufgaben 1 und 2 mit einer kurzen, prägnanten Antwort. Aufgabe 1 (8 Punkte) 1. Wie viele negative Zahlen (ohne 0) lassen sich im 4-Bit-Zweierkomplement darstellen?

Mehr

Algorithmen und Datenstrukturen 2-2. Seminar -

Algorithmen und Datenstrukturen 2-2. Seminar - Algorithmen und Datenstrukturen 2-2. Seminar - Dominic Rose Bioinformatics Group, University of Leipzig Sommersemster 2010 Outline 2. Übungsserie: 3 Aufgaben, insgesamt 30 Punkte A4 Flußnetzwerk, Restgraphen

Mehr

4. Lernen von Entscheidungsbäumen. Klassifikation mit Entscheidungsbäumen. Entscheidungsbaum

4. Lernen von Entscheidungsbäumen. Klassifikation mit Entscheidungsbäumen. Entscheidungsbaum 4. Lernen von Entscheidungsbäumen Klassifikation mit Entscheidungsbäumen Gegeben sei eine Menge von Objekten, die durch /Wert- Paare beschrieben sind. Jedes Objekt kann einer Klasse zugeordnet werden.

Mehr

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Datenstrukturen. Mariano Zelke. Sommersemester 2012 Datenstrukturen Mariano Zelke Sommersemester 2012 Mathematische Grundlagen: Das Handwerkszeug Mariano Zelke Datenstrukturen 2/26 Formeln: n - i = n (n+1) 2 und - i=1 k i=0 a i = ak+1 1 a 1, falls a 1 Rechnen

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 13. Bäume. Bäume

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 13. Bäume. Bäume 1 Kapitel 13 Ziele 2 Den Begriff des Baums in der Informatik kennenlernen als verkettete Datenstruktur repräsentieren können Rekursive Funktionen auf n verstehen und schreiben können Verschiedene Möglichkeiten

Mehr

Konzepte der Informatik

Konzepte der Informatik Konzepte der Informatik Vorkurs Informatik zum WS 2011/2012 26.09. - 30.09.2011 17.10. - 21.10.2011 Dr. Werner Struckmann / Christoph Peltz Stark angelehnt an Kapitel 1 aus "Abenteuer Informatik" von Jens

Mehr

Kapiteltests zum Leitprogramm Binäre Suchbäume

Kapiteltests zum Leitprogramm Binäre Suchbäume Kapiteltests zum Leitprogramm Binäre Suchbäume Björn Steffen Timur Erdag überarbeitet von Christina Class Binäre Suchbäume Kapiteltests für das ETH-Leitprogramm Adressaten und Institutionen Das Leitprogramm

Mehr

Rekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Rekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Rekursion Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-12-13/infoeinf WS12/13 Aufgabe 1: Potenzfunktion Schreiben Sie eine Methode, die

Mehr

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie Gliederung 1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. äume / Graphen 5. Hashing 6. Algorithmische Geometrie 4/5, olie 1 2014 Prof. Steffen Lange - HDa/bI

Mehr

Das Briefträgerproblem

Das Briefträgerproblem Das Briefträgerproblem Paul Tabatabai 30. Dezember 2011 Inhaltsverzeichnis 1 Problemstellung und Modellierung 2 1.1 Problem................................ 2 1.2 Modellierung.............................

Mehr

2. Repräsentationen von Graphen in Computern

2. Repräsentationen von Graphen in Computern 2. Repräsentationen von Graphen in Computern Kapitelinhalt 2. Repräsentationen von Graphen in Computern Matrizen- und Listendarstellung von Graphen Berechnung der Anzahl der verschiedenen Kantenzüge zwischen

Mehr

3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1

3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1 3.2 Binäre Suche Beispiel 6.5.1: Intervallschachtelung (oder binäre Suche) (Hier ist n die Anzahl der Elemente im Feld!) Ein Feld A: array (1..n) of Integer sei gegeben. Das Feld sei sortiert, d.h.: A(i)

Mehr

Grundwissen Informatik Q11/12 Fragenkatalog

Grundwissen Informatik Q11/12 Fragenkatalog 12_Inf_GrundwissenInformatik_Opp.doc 1 Grundwissen Informatik Q11/12 Fragenkatalog 11/2 Aufgabengebiet 1: Graphen, Wege durch Graphen: 1. Durch welche Bestandteile wird ein Graph festgelegt? 2. Nenne verschiedene

Mehr

3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel

3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel 3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel EADS 3.1 Konstruktion von minimalen Spannbäumen 16/36

Mehr

Informatik I WS 07/08 Tutorium 24

Informatik I WS 07/08 Tutorium 24 Info I Tutorium 24 Informatik I WS 07/08 Tutorium 24 20.12.07 Bastian Molkenthin E-Mail: infotut@sunshine2k.de Web: http://infotut.sunshine2k.de Rückblick Semi-Thue-Systeme Ein Semi-Thue-System besteht

Mehr

JAVA - Methoden

JAVA - Methoden Übungen Informatik I JAVA - http://www.fbi-lkt.fh-karlsruhe.de/lab/info01/tutorial Übungen Informatik 1 Folie 1 sind eine Zusammenfassung von Deklarationen und Anweisungen haben einen Namen und können

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form

Mehr

Algorithmen und Datenstrukturen Suchbaum

Algorithmen und Datenstrukturen Suchbaum Algorithmen und Datenstrukturen Suchbaum Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS 12 Motivation Datenstruktur zur Repräsentation dynamischer Mengen

Mehr

Sortieralgorithmen. Inhalt: InsertionSort BubbleSort QuickSort. Marco Block

Sortieralgorithmen. Inhalt: InsertionSort BubbleSort QuickSort. Marco Block Inhalt: InsertionSort BubbleSort QuickSort Block M.: "Java-Intensivkurs - In 14 Tagen lernen Projekte erfolgreich zu realisieren", Springer-Verlag 2007 InsertionSort I Das Problem unsortierte Daten in

Mehr

Einführung Elementare Datenstrukturen. Der Konstruktor muß den Listenkopf head erzeugen. Der Vorgänger und Nachfolger von head ist head selbst.

Einführung Elementare Datenstrukturen. Der Konstruktor muß den Listenkopf head erzeugen. Der Vorgänger und Nachfolger von head ist head selbst. Einführung Elementare Datenstrukturen (Folie 38, Seite 23 im Skript) Der Konstruktor muß den Listenkopf head erzeugen. Der Vorgänger und Nachfolger von head ist head selbst. Einführung Elementare Datenstrukturen

Mehr

- k Maximalwerte aus Menge mit n >> k Elementen (Rangfolgebestimmung von Suchmaschinen!) Die typische Operationen:

- k Maximalwerte aus Menge mit n >> k Elementen (Rangfolgebestimmung von Suchmaschinen!) Die typische Operationen: 6 Partiell geordnete binäre Bäume: Heap (Haufen) Motivation für manchen Anwendungen nur partielle Ordnung der Elemente statt vollständiger nötig, z.b. - Prioritätsschlange: nur das minimale (oder maximale)

Mehr

2. Lernen von Entscheidungsbäumen

2. Lernen von Entscheidungsbäumen 2. Lernen von Entscheidungsbäumen Entscheidungsbäume 2. Lernen von Entscheidungsbäumen Gegeben sei eine Menge von Objekten, die durch Attribut/Wert- Paare beschrieben sind. Jedes Objekt kann einer Klasse

Mehr

Lösungsvorschläge. zu den Aufgaben im Kapitel 4

Lösungsvorschläge. zu den Aufgaben im Kapitel 4 Lösungsvorschläge zu den Aufgaben im Kapitel 4 Aufgabe 4.1: Der KNP-Algorithmus kann verbessert werden, wenn in der Funktion nexttabelle die Zuweisung next[tabindex] = ruecksprung; auf die etwas differenziertere

Mehr

Algorithmen mit Python

Algorithmen mit Python Algorithmen mit Python Vorbesprechung zum Proseminar im Sommersemester 2009 http://www.python.org 1 Sie lernen in DAP Java und C/C++: 80% Syntax, 20% Algorithmen-Design Idee Schon ein einfaches Hello World

Mehr

Tutorium Algorithmen & Datenstrukturen

Tutorium Algorithmen & Datenstrukturen June 16, 2010 Binärer Baum Binärer Baum enthält keine Knoten (NIL) besteht aus drei disjunkten Knotenmengen: einem Wurzelknoten, einem binären Baum als linken Unterbaum und einem binären Baum als rechten

Mehr

Algorithmen und Datenstrukturen Kapitel 10

Algorithmen und Datenstrukturen Kapitel 10 Algorithmen und Datenstrukturen Kapitel 10 Flüsse Frank Heitmann heitmann@informatik.uni-hamburg.de 6. Januar 2016 Frank Heitmann heitmann@informatik.uni-hamburg.de 1/8 Flüsse Graphen Grundlagen Definition

Mehr

1. Typen und Literale (6 Punkte) 2. Zuweisungen (6 = Punkte)

1. Typen und Literale (6 Punkte) 2. Zuweisungen (6 = Punkte) Praktische Informatik (Software) Vorlesung Softwareentwicklung 1 Prof. Dr. A. Ferscha Hauptklausur am 01. 02. 2001 Zuname Vorname Matr. Nr. Stud. Kennz. Sitzplatz HS / / / Punkte Note korr. Fügen Sie fehlende

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Tafelübung 04 Referenzen, Overloading, Klassen(hierarchien) Clemens Lang T2 18. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/13 Organisatorisches Nächster Übungstermin

Mehr

Grundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung

Grundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung Grundlagen der Programmierung Prof. H. Mössenböck 14. Schrittweise Verfeinerung Entwurfsmethode für Algorithmen Wie kommt man von der Aufgabenstellung zum Programm? Beispiel geg.: Text aus Wörtern ges.:

Mehr

EndTermTest PROGALGO WS1516 A

EndTermTest PROGALGO WS1516 A EndTermTest PROGALGO WS1516 A 14.1.2016 Name:................. UID:.................. PC-Nr:................ Beachten Sie: Lesen Sie erst die Angaben aufmerksam, genau und vollständig. Die Verwendung von

Mehr

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java: Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen

Mehr

5.2 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) Kürzeste Wege zwischen allen Knoten. Eingabe: Gerichteter Graph G =(V, E, c)

5.2 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) Kürzeste Wege zwischen allen Knoten. Eingabe: Gerichteter Graph G =(V, E, c) 5.2 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) Kürzeste Wege zwischen allen Knoten. Eingabe: Gerichteter Graph G =(V, E, c) mit V = {1,...,n} und E {(v, w) 1 apple v, w apple n, v 6= w}. c : E!

Mehr

Grundlagen der Programmierung Prof. H. Mössenböck. 10. Klassen

Grundlagen der Programmierung Prof. H. Mössenböck. 10. Klassen Grundlagen der Programmierung Prof. H. Mössenböck 10. Klassen Motivation Wie würde man ein Datum speichern (z.b. 13. November 2004)? 3 Variablen int da; String month; int ear; Unbequem, wenn man mehrere

Mehr

Suchbäume. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Suchbäume. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Suchbäume Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative

Mehr

Bäume. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 10: Collections 4. Inhalt. Bäume. Einführung. Bäume.

Bäume. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 10: Collections 4. Inhalt. Bäume. Einführung. Bäume. Universität Osnabrück 1 Bäume 3 - Objektorientierte Programmierung in Java Vorlesung 10: Collections 4 Einführung Bäume sind verallgemeinerte Listenstrukturen Lineare Liste Jedes Element hat höchstens

Mehr

Wiederholung Wozu Methoden? Methoden Schreiben Methoden Benutzen Rekursion?! Methoden. Javakurs 2012, 3. Vorlesung

Wiederholung Wozu Methoden? Methoden Schreiben Methoden Benutzen Rekursion?! Methoden. Javakurs 2012, 3. Vorlesung Wiederholung Wozu? Schreiben Benutzen Rekursion?! Javakurs 2012, 3. Vorlesung maggyrz@freitagsrunde.org 5. März 2013 Wiederholung Wozu? Schreiben Benutzen Rekursion?! 1 Wiederholung 2 Wozu? 3 Schreiben

Mehr

Bäume, Suchbäume und Hash-Tabellen

Bäume, Suchbäume und Hash-Tabellen Im folgenden Fokus auf Datenstrukturen, welche den assoziativen Zugriff (über einen bestimmten Wert als Suchkriterium) optimieren Bäume: Abbildung bzw. Vorberechnung von Entscheidungen während der Suche

Mehr

Datenstrukturen und Algorithmen

Datenstrukturen und Algorithmen Datenstrukturen und Algorithmen VO 708.031 Bäume robert.legenstein@igi.tugraz.at 1 Inhalt der Vorlesung 1. Motivation, Einführung, Grundlagen 2. Algorithmische Grundprinzipien 3. Sortierverfahren 4. Halden

Mehr

Einführung in Heuristische Suche

Einführung in Heuristische Suche Einführung in Heuristische Suche Beispiele 2 Überblick Intelligente Suche Rundenbasierte Spiele 3 Grundlagen Es muss ein Rätsel / Puzzle / Problem gelöst werden Wie kann ein Computer diese Aufgabe lösen?

Mehr

Algorithmen mit konstantem Platzbedarf: Die Klasse REG

Algorithmen mit konstantem Platzbedarf: Die Klasse REG Algorithmen mit konstantem Platzbedarf: Die Klasse REG Sommerakademie Rot an der Rot AG 1 Wieviel Platz brauchen Algorithmen wirklich? Daniel Alm Institut für Numerische Simulation Universität Bonn August

Mehr

13 Java 4 - Entwurfsmuster am Beispiel des Rucksackproblems

13 Java 4 - Entwurfsmuster am Beispiel des Rucksackproblems 13 Java 4 - Entwurfsmuster am Beispiel des Rucksackproblems 13.1 Modellierung des Rucksackproblems 13.2 Lösung mit Greedy-Algorithmus 13.3 Lösung mit Backtracking 13.4 Lösung mit Dynamischer Programmierung

Mehr

Datenstruktur, die viele Operationen dynamischer Mengen unterstützt

Datenstruktur, die viele Operationen dynamischer Mengen unterstützt Algorithmen und Datenstrukturen 265 10 Binäre Suchbäume Suchbäume Datenstruktur, die viele Operationen dynamischer Mengen unterstützt Kann als Wörterbuch, aber auch zu mehr eingesetzt werden (Prioritätsschlange)

Mehr

Kapitel 4: Minimal spannende Bäume Gliederung der Vorlesung

Kapitel 4: Minimal spannende Bäume Gliederung der Vorlesung Kapitel : Minimal spannende Bäume Gliederung der Vorlesung. Fallstudie Bipartite Graphen 2. Grundbegriffe. Elementare Graphalgorithmen und Anwendungen. Minimal spannende Bäume. Kürzeste Wege. Traveling

Mehr

1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays)

1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays) 1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays) II.1.3. Anweisungen und Kontrollsttukturen - 1 - 3. Anweisungen und Kontrollstrukturen

Mehr

Effiziente Algorithmen I

Effiziente Algorithmen I H 10. Präsenzaufgabenblatt, Wintersemester 2015/16 Übungstunde am 18.01.2015 Aufgabe Q Ein Reiseveranstalter besitzt ein Flugzeug, das maximal p Personen aufnehmen kann. Der Veranstalter bietet einen Flug

Mehr

16. All Pairs Shortest Path (ASPS)

16. All Pairs Shortest Path (ASPS) . All Pairs Shortest Path (ASPS) All Pairs Shortest Path (APSP): Eingabe: Gewichteter Graph G=(V,E) Ausgabe: Für jedes Paar von Knoten u,v V die Distanz von u nach v sowie einen kürzesten Weg a b c d e

Mehr

Grundlagen der Programmierung 2. Bäume

Grundlagen der Programmierung 2. Bäume Grundlagen der Programmierung 2 Bäume Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 24. Mai 2006 Graphen Graph: Menge von Knoten undzugehörige (gerichtete oder ungerichtete)

Mehr

Institut für Programmierung und Reaktive Systeme 25. August 2014. Programmier-Labor. 04. + 05. Übungsblatt. int binarysearch(int[] a, int x),

Institut für Programmierung und Reaktive Systeme 25. August 2014. Programmier-Labor. 04. + 05. Übungsblatt. int binarysearch(int[] a, int x), Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 25. August 2014 Programmier-Labor 04. + 05. Übungsblatt Aufgabe 21: a) Schreiben Sie eine Methode

Mehr

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse Übung 03: Schleifen Abgabetermin: xx.xx.xxxx Name: Matrikelnummer: Gruppe: G1 (Prähofer) G2 (Prähofer) G3 (Wolfinger) Aufgabe Punkte gelöst abzugeben schriftlich abzugeben elektronisch Aufgabe 03.1 12

Mehr

Algorithmen auf Graphen. Kapitel V. Algorithmen auf Graphen

Algorithmen auf Graphen. Kapitel V. Algorithmen auf Graphen Kapitel V Algorithmen auf Graphen 0 0 Inhalt Kapitel V Grundlegendes Breitensuche Tiefensuche Anwendungen der Tiefensuche Minimale Spannbäume Algorithmus von Prim Algorithmus von Kruskal Kürzeste Wege

Mehr

Wiederholung zu Flüssen

Wiederholung zu Flüssen Universität Konstanz Methoden der Netzwerkanalyse Fachbereich Informatik & Informationswissenschaft SS 2008 Prof. Dr. Ulrik Brandes / Melanie Badent Wiederholung zu Flüssen Wir untersuchen Flüsse in Netzwerken:

Mehr

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie Gliederung 1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. äume / Graphen. Hashing 6. Algorithmische Geometrie 4/6, Folie 1 2014 Prof. Steffen Lange - HDa/FbI

Mehr

Rekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Rekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative student"

Mehr

Codes und Informationsgehalt

Codes und Informationsgehalt Aufgaben 2 Codes und Informationsgehalt Auf wie viele Dezimalziffern genau können vorzeichenlose ganze Zahlen in einem binären Code der Länge 32 bit dargestellt werden? 2 Codes und Informationsgehalt Auf

Mehr

Algorithmen & Datenstrukturen 1. Klausur

Algorithmen & Datenstrukturen 1. Klausur Algorithmen & Datenstrukturen 1. Klausur 7. Juli 2010 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 35 2 30 3 30 4 15 5 40 6 30 Gesamt 180 1 Seite 2 von 14 Aufgabe 1) Programm Analyse

Mehr

Rechnerische Komplexität

Rechnerische Komplexität Proseminar Effiziente Algorithmen SS 2002 Rechnerische Komplexität Ulrike Krönert (34180) 0. Inhalt 1. Einführung 2. Algorithmen und Komplexität 2.1. Algorithmen 2.2. Laufzeitabschätzung 2.3. Polynomialzeit

Mehr

2 Lösungen "Peptide de novo Sequencing"

2 Lösungen Peptide de novo Sequencing Lösungen "Peptide de novo Sequencing". Algorithm : PeptideSequencingOnlySux Input: a spectrum M with array of masses M = {m, m,, m n }, Σ, µ : Σ R >0 Output: the peptide string of the spectrum begin peptide

Mehr

Branch-and-Bound. Wir betrachten allgemein Probleme, deren Suchraum durch Bäume dargestellt werden kann. Innerhalb des Suchraums suchen wir

Branch-and-Bound. Wir betrachten allgemein Probleme, deren Suchraum durch Bäume dargestellt werden kann. Innerhalb des Suchraums suchen wir Effiziente Algorithmen Lösen NP-vollständiger Probleme 289 Branch-and-Bound Wir betrachten allgemein Probleme, deren Suchraum durch Bäume dargestellt werden kann. Innerhalb des Suchraums suchen wir 1.

Mehr

Effiziente Algorithmen und Datenstrukturen I. Kapitel 9: Minimale Spannbäume

Effiziente Algorithmen und Datenstrukturen I. Kapitel 9: Minimale Spannbäume Effiziente Algorithmen und Datenstrukturen I Kapitel 9: Minimale Spannbäume Christian Scheideler WS 008 19.0.009 Kapitel 9 1 Minimaler Spannbaum Zentrale Frage: Welche Kanten muss ich nehmen, um mit minimalen

Mehr

Der linke Teilbaum von v enthält nur Schlüssel < key(v) und der rechte Teilbaum enthält nur Schlüssel > key(v)

Der linke Teilbaum von v enthält nur Schlüssel < key(v) und der rechte Teilbaum enthält nur Schlüssel > key(v) Ein Baum T mit Knotengraden 2, dessen Knoten Schlüssel aus einer total geordneten Menge speichern, ist ein binärer Suchbaum (BST), wenn für jeden inneren Knoten v von T die Suchbaumeigenschaft gilt: Der

Mehr

9.4.1 Wegsuche von a nach z

9.4.1 Wegsuche von a nach z 9.4 Wegsuche Beispiele: Weg von a nach z Weg von a nach roter Ecke alle Wege gemäß desgl. mit Länge, ferner kürzester/längster Weg... und weitere alp3-9.4 1 9.4.1 Wegsuche von a nach z Gegeben: Gesucht:

Mehr

public class SternchenRechteckGefuellt {

public class SternchenRechteckGefuellt { Java programmieren: Musterlösungen Konsolen-Aufgaben Aufgabe 1: Gefüllte Rechtecke zeichnen Schreiben Sie ein Programm, das ein durch Sternchen gefülltes Rechteck zeichnet. Der Benutzer soll Breite und

Mehr

Maximaler Fluß und minimaler Schnitt. Von Sebastian Thurm sebastian.thurm@student.uni-magedburg.de

Maximaler Fluß und minimaler Schnitt. Von Sebastian Thurm sebastian.thurm@student.uni-magedburg.de Maximaler Fluß und minimaler Schnitt Von Sebastian Thurm sebastian.thurm@student.uni-magedburg.de Maximaler Fluß und minimaler Schnitt Wasist das? Maximaler Fluss Minimaler Schnitt Warumtut man das? Logistische

Mehr

368 4 Algorithmen und Datenstrukturen

368 4 Algorithmen und Datenstrukturen Kap04.fm Seite 368 Dienstag, 7. September 2010 1:51 13 368 4 Algorithmen und Datenstrukturen Java-Klassen Die ist die Klasse Object, ein Pfeil von Klasse A nach Klasse B bedeutet Bextends A, d.h. B ist

Mehr

Theoretische Grundlagen der Informatik

Theoretische Grundlagen der Informatik Theoretische Grundlagen der Informatik Vorlesung am 12.01.2012 INSTITUT FÜR THEORETISCHE 0 KIT 12.01.2012 Universität des Dorothea Landes Baden-Württemberg Wagner - Theoretische und Grundlagen der Informatik

Mehr