Graphalgorithmen I Hallo Welt! für Fortgeschrittene
|
|
- Kristin Frei
- vor 6 Jahren
- Abrufe
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 1 Motivation Wie komme ich am besten von Freiburg nach Ulm? Was ist die kürzeste Rundreise durch eine gegebene Menge von Städten?
MehrInformatik 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
Mehr10 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
MehrGraphen: 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.
MehrTechnische 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
MehrAlgorithmen 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
MehrBreiten- 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
MehrEin 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
MehrAlgorithmen 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
MehrAlgorithmen 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
Mehr1 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
MehrRouting 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
MehrAlgorithmen 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
Mehr8 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
MehrADS: 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
MehrCustomization (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
Mehr11.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
MehrKapitel 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:
MehrBinä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
MehrKü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
MehrProgrammierkurs 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
MehrC++, 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
MehrAlgorithmen 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
MehrTutoraufgabe 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
MehrFlü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
MehrVorlesung 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/
MehrDynamische 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
MehrGliederung. 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
MehrGeordnete 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
MehrDatenstrukturen & 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
MehrEine 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
MehrDatenstrukturen & 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
MehrAm 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
MehrInformatik 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:
MehrKapitel 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
MehrName: 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?
MehrAlgorithmen 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
Mehr4. 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.
MehrDatenstrukturen. 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
MehrEinfü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
MehrKonzepte 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
MehrKapiteltests 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
MehrRekursion. 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
Mehr1. 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
MehrDas Briefträgerproblem
Das Briefträgerproblem Paul Tabatabai 30. Dezember 2011 Inhaltsverzeichnis 1 Problemstellung und Modellierung 2 1.1 Problem................................ 2 1.2 Modellierung.............................
Mehr2. 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
Mehr3.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)
MehrGrundwissen 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
Mehr3.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
MehrInformatik 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
MehrJAVA - 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
MehrEinstieg 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
MehrAlgorithmen 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
MehrSortieralgorithmen. 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
MehrEinfü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:
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)
Mehr2. 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
MehrLö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
MehrAlgorithmen 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
MehrTutorium 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
MehrAlgorithmen 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
Mehr1. 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
MehrAlgorithmen 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
MehrGrundlagen 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.:
MehrEndTermTest 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
MehrII. 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
Mehr5.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!
MehrGrundlagen 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
MehrSuchbä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
MehrBä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
MehrWiederholung 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
MehrBä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
MehrDatenstrukturen 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
MehrEinfü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?
MehrAlgorithmen 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
Mehr13 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
MehrDatenstruktur, 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)
MehrKapitel 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
Mehr1. 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
MehrEffiziente 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
Mehr16. 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
MehrGrundlagen 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)
MehrInstitut 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 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
MehrAlgorithmen 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
MehrWiederholung 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:
Mehr1. 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
MehrRekursion. 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"
MehrCodes 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
MehrAlgorithmen & 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
MehrRechnerische 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
Mehr2 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
MehrBranch-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.
MehrEffiziente 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
MehrDer 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
Mehr9.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:
Mehrpublic 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
MehrMaximaler 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
Mehr368 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
MehrTheoretische 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