Algorithmen und Datenstrukturen

Größe: px
Ab Seite anzeigen:

Download "Algorithmen und Datenstrukturen"

Transkript

1 Algorithmen und Datenstrukturen Werner Struckmann Wintersemester 2005/06

2 8. Graphen 8.1 Mathematische Grundlagen 8.2 Darstellung von Graphen 8.3 Ausgewählte Algorithmen für ungewichtete Graphen 8.4 Ausgewählte Algorithmen für gewichtete Graphen

3 Einführung Knoten Kante 1 8 Ein Graph besteht aus Knoten (vertices oder nodes), die durch Kanten (edges) verbunden sind. Die Kanten können ungerichtet oder gerichtet sein. Die entsprechenden Graphen heißen ungerichtete bzw. gerichtete Graphen Zyklus 3 3 Gewicht Ungerichteter gewichteter zyklischer Graph Graphen, deren Kanten durch eine Zahl gewichtet sind, nennt man gewichtete Graphen. Graphen können Zyklen enthalten. Gerichteter azyklischer Graph 8.1 Mathematische Grundlagen 8-1

4 Einführung Knoten können durch eine Kante mit sich selbst verknüpft sein (Schlinge). ungerichteter zyklischer Graph mit Schlingen Knoten können Attribute (zum Beispiel einen Wert oder eine Farbe) besitzen. gerichteter azyklischer gefärbter Graph 8.1 Mathematische Grundlagen 8-2

5 Anwendungsbeispiele Ungerichtete Graphen: Kommunikationsnetz Gewichte als Dauer einer Datenübertragung. Gesucht ist der schnellste Übertragungsweg von a nach b. Gewichte als Kosten einer Datenübertragung. Gesucht ist der günstigste Übertragungsweg von a nach b. Gerichtete Graphen: Straßennetz Gewicht als Länge einer Wegstrecke. Gesucht ist die kürzeste Strecke von a nach b. Begriffsmodellierung, semantische Netze Unterbegriffe: ein Auto ist ein Fahrzeug. 8.1 Mathematische Grundlagen 8-3

6 Anwendungsbeispiele Gerichtete Graphen: Kontrollfluss in Programmen Welche Programmabschnitte werden bei gegebener Eingabe nicht ausgeführt? Gerichtete azyklische Graphen: Stammbäume Gesucht sind die Vorfahren von x. Vererbungshierachie in der objektorientierten Programmierung 8.1 Mathematische Grundlagen 8-4

7 Gerichtete und ungerichtete Graphen Ein gerichteter Graph (Digraph) G ist ein Paar (V, E) mit: V ist eine endliche Menge (Knoten, Knotenmenge). E V V ist eine Relation auf V (Kanten, Kantenmenge). Eine Kante (u, u) E heißt Schlinge. Ein ungerichteter Graph G ist ein Paar (V, E) mit: V ist eine endliche Menge (Knoten, Knotenmenge). E {{u, v} u, v V} ist eine Menge, deren Elemente einoder zweielementige Teilmengen von V sind. (Kanten, Kantenmenge). Eine einelementige Teilmenge{u} heißt Schlinge. E kann als symmetrische Relation E V V angesehen werden. Man schreibt häufig (u, v) E statt{u, v} E. 8.1 Mathematische Grundlagen 8-5

8 Adjazenz Es sei ein gerichteter oder ungerichteter Graph G = (V, E) gegeben. Falls (u, v) E ist sagt bzw. schreibt man: (u, v) tritt aus u aus, (u, v) tritt in v ein, u und v sind adjazent (benachbart), u v. E ist die Adjazenzrelation. 8.1 Mathematische Grundlagen 8-6

9 Grad eines Knotens Ungerichteter Graph: Der Grad eines Knotens ist die Anzahl der mit ihm in Relation stehenden Knoten. Ein Knoten mit dem Grad 0 heißt isoliert. Gerichteter Graph: Der Ausgangsgrad eines Knotens ist die Anzahl seiner austretenden Kanten. Der Eingangsgrad eines Knotens ist die Anzahl seiner eintretenden Kanten. Der Grad eines Knotens ist die Summe aus Ausgangs- und Eingangsgrad. 8.1 Mathematische Grundlagen 8-7

10 Pfade Es sei ein Graph G = (V, E) gegeben. Ein Pfad p der Länge k in G von u V zu u V ist eine Folge p = (v 0, v 1,...,v k ) von Knoten mit u = v 0, u = v k und (v i 1, v i ) E, i = 1,...k. Der Pfad p enthält die Knoten v 0, v 1,...,v k und die Kanten (v 0, v 1 ),...,(v k 1, v k ). Wenn es einen Pfad p von u V zu u V gibt, heißt u von u über p erreichbar. Ein Pfad heißt einfach, wenn alle Knoten verschieden sind. Ein Teilpfad eines Pfads p = (v 0, v 1,...,v k ) ist eine Teilfolge benachbarter Knoten. 8.1 Mathematische Grundlagen 8-8

11 Zyklen Ein Pfad p = (v 0, v 1,...,v k ) heißt Zyklus, wenn v 0 = v k und k> 0 ist. Ein Zyklus ist einfach, wenn seine Knoten paarweise verschieden sind. Ein Graph ohne Schlingen wird einfach genannt. Ein Graph ohne Zyklen wird als azyklisch bezeichnet. 8.1 Mathematische Grundlagen 8-9

12 Zusammenhang Ein ungerichteter Graph heißt zusammenhängend, wenn jedes Knotenpaar durch einen Pfad verbunden ist. Die Zusammenhangskomponenten eines ungerichteten Graphen sind die Äquivalenzklassen bezüglich der Äquivalenzrelation ist erreichbar von. Ein gerichteter Graph heißt stark zusammenhängend, wenn jeder Knoten von jedem anderen Knoten aus erreichbar ist. Die starken Zusammenhangskomponenten eines gerichteten Graphen sind die Äquivalenzklassen bezüglich der Äquivalenzrelation sind gegenseitig erreichbar. 8.1 Mathematische Grundlagen 8-10

13 Teilgraphen und Isomorphie Ein Graph G = (V, E ) ist ein Teilgraph von G = (V, E), falls V V und E E gilt. Ist eine Teilmenge V V gegeben, dann ist der durch V induzierte Teilgraph Graph G = (V, E ) von G = (V, E) durch E ={(u, v) E u, v V }. bestimmt. Zwei Graphen G = (V, E) und G = (V, E ) sind isomorph, wenn es eine bijektive Abbildung f : V V mit gibt. (u, v) E (f(u), f(v)) E 8.1 Mathematische Grundlagen 8-11

14 Spezielle Graphen Ein vollständiger Graph ist ein Graph, in dem jedes Knotenpaar benachbart ist: u, v V (u, v) E Ein bipartiter Graph ist ein Graph, in dem die Knotenmenge V in zwei Teilmengen V 1 und V 2 zerlegt werden kann, dass alle Kanten zwischen V 1 und V 2 verlaufen: (u, v) E (u V 1, v V 2 ) (u V 2, v V 1 ) 8.1 Mathematische Grundlagen 8-12

15 Bäume Ein Wald ist ein azyklischer, ungerichteter Graph. Ein (freier) Baum ist ein zusammenhängender Wald. Ein (gerichteter) Baum ist ein freier Baum, in dem einer der Knoten vor den anderen ausgzeichnet ist. Dieser Knoten heißt Wurzel. In einem geordneten Baum sind die Kinder jedes Knotens geordnet. Mit diesen Definitionen, können wir die Begriffe Kind, Vater, Vorfahre, Höhe, Tiefe, binärer Baum, k-närer Baum,... graphentheoretisch interpretieren. 8.1 Mathematische Grundlagen 8-13

16 Gewichtete Graphen Ein gewichteter Graph G = (V, E, w) besteht aus einem Graphen (V, E) und einer Gewichtsfunktion w : E R, die jeder Kante e E eine reelle Zahl w(e) als Gewicht zuordnet. Das Gewicht w(p) eines Pfads p = (v 0, v 1,...,v k ) ist die Summe der einzelnen Kantengewichte: w(p) := k 1 i=0 w((v i, v i+1 )) 8.1 Mathematische Grundlagen 8-14

17 Kürzeste Pfade Ungewichtete Graphen: Ein Pfad minimaler Länge zwischen zwei Knoten heißt kürzester Pfad zwischen diesen Knoten. Gewichtete Graphen: Ein Pfad minimalen Gewichts zwischen zwei Knoten heißt kürzester Pfad zwischen diesen Knoten. Die Länge bzw. das Gewicht des kürzesten Pfades zwischen zwei Knoten ist die Distanz der beiden Knoten. Kürzeste Pfade müssen nicht existieren (Beispiel: es existiert ein Zyklus mit negativem Gewicht, der beliebig oft durchlaufen werden kann). Kürzeste Pfade sind im Allgemeinen nicht eindeutig bestimmt. 8.1 Mathematische Grundlagen 8-15

18 Erweiterungen Ein Multigraph ist ein Graph, der Mehrfachkanten enthalten kann. Eine Kante in einem Hypergraphen kann mehr als zwei Knoten verbinden. 8.1 Mathematische Grundlagen 8-16

19 Nützliche Funktionen Bei gerichteten Graphen: Ausgangskanten: ak : V P(E), ak(u) ={(u, v) (u, v) E} Eingangskanten: ek : V P(E), ek(u) ={(v, u) (v, u) E} Ausgangsgrad: ag : V N 0, ag(u) = ak(u) Eingangsgrad: eg : V N 0, eg(u) = ek(u) f g a e c b ak(a) ={(a, g),(a, b)} ek(g) ={(a, g),(b, g),(f, g)} d 8.2 Darstellung von Graphen 8-17

20 Nützliche Funktionen Nachfolgerknoten: nk : V P(V), nk(u) ={v (u, v) E} Vorgängerknoten: vk : V P(V), vk(u) ={v (v, u) E} f e g c a b nk(a) ={g, b} d 8.2 Darstellung von Graphen 8-18

21 Möglichkeiten zur Speicherung von Graphen Kantenlisten Knotenlisten Adjazenzmatrizen Adjazenzlisten 8.2 Darstellung von Graphen 8-19

22 Kantenlisten Nummerierung der Knoten von 1 bis V = n Speicherung: V, E, Paare (a, b) mit (a, b) E. Es werden 2+ E 2 Werte unsortiert gespeichert Einfügen von Kanten und Knoten: O(1) Löschen von Kanten erfordert ein Durchsuchen der Liste: O( E ) Kantenliste: 7, 9, 1, 2, 1, 7, 2, 7, 3, 2, 3, 4, 3, 5, 4, 5, 5, 6, 6, 7 3 Löschen von Knoten erfordert ein erneutes Nummerieren der Knoten und ggf. Löschen von Kanten: O( E ) 8.2 Darstellung von Graphen 8-20

23 Knotenliste Nummerierung der Knoten von 1 bis V = n Speicherung: V, E,(ag(v), nk(v)) mit v V aufsteigend sortiert. Es werden 2+ V + E Werte gespeichert Einfügen von Knoten: O(1) 7 3 Einfügen und Löschen von Kanten erfordert ein Durchsuchen der Liste: O( E + V ) 1 2 Knotenliste: 7, 9, 2, 2, 7, 1, 7, 3, 2, 4, 5, 1, 5, 1, 6, 1, 7, 0 Löschen von Knoten erfordert ein erneutes Nummerieren der Knoten und ggf. Löschen von Kanten: O( E + V ) 8.2 Darstellung von Graphen 8-21

24 Adjazenzmatrizen Ein Graph G = (V, E) mit V = n wird als quadratische n n-matrix a von booleschen Werten gespeichert. Es gilt a[i, j] = true (i, j) E. Beispiel für einen gerichteten Graphen: Bei ungerichteten Graphen braucht aus Symmetriegründen nur eine Hälfte der Matrix gespeichert zu werden. 8.2 Darstellung von Graphen 8-22

25 Adjazenzliste Nummerierung der Knoten von 1 bis V. Implementierung durch V + 1 Listen: Basisliste: Liste aller Knoten des Graphen. Pro Knoten: Liste der Nachfolger des Knotens Darstellung von Graphen 8-23

26 Vergleich der Implementierungen Es sei V = n, E = m. Kanten- Knoten- Adjazenz- Adjazenzliste liste matrix liste Speicherbedarf O(m) O(n + m) O(n 2 ) O(n + m) Kante Einfügen O(1) O(n + m) O(1) O(n) Kante Löschen O(m) O(n + m) O(1) O(n + m) Knoten Einfügen O(1) O(1) O(n 2 ) O(1) Knoten Löschen O(m) O(n + m) O(n 2 ) O(n + m) ) für die hier gegebene Implementierung 8.2 Darstellung von Graphen 8-24

27 Übersicht In diesem Abschnitt wollen wir beispielhaft einige Algorithmen für ungewichtete Graphen vorstellen. Systematisches Durchsuchen eines Graphen Breitensuche (breadth-first search) Tiefensuche (depth-first search) Zyklenfreiheit Topologisches Sortieren Erreichbarkeit 8.3 Ausgewählte Algorithmen für ungewichtete Graphen 8-25

28 Breitensuche Besuch aller Knoten eines Graphen G = (V, E), die von einem Startknoten s erreichbar sind. Es wird von s ausgegangen. Zuerst werden alle von s über eine Kante erreichbaren Knoten besucht. Dann alle über zwei Kanten erreichbaren Knoten. usw. 2. Iteration 1. Iteration Startknoten 8.3 Ausgewählte Algorithmen für ungewichtete Graphen 8-26

29 Breitensuche Iterative Kontrollstruktur Schlange Q zur Speicherung der gerade bearbeiteten Knoten in Reihenfolge der Iterationsschritte Drei Verzeichnisse (Abbildungen, Dictionaries) d : V N 0 bildet jeden Knoten auf seine Entfernung vom Startknoten ab. p : V V bildet jeden Knoten auf den Vorgängerknoten ab, von dem ausgehend er erreicht worden ist. p ergibt nach der Abarbeitung einen Breitensuchbaum. c : V {weiß, schwarz, grau} ordnet jedem Knoten eine Farbe abhängig von seinem Bearbeitungszustand zu: weiß: noch unentdeckt, grau: Entfernung bereits bestimmt, schwarz: abgearbeitet. 8.3 Ausgewählte Algorithmen für ungewichtete Graphen 8-27

30 Breitensuche proc BFS(G,s) begin foreach u V \ {s} do c(u) weiß; d(u) ; p(u) nil od; c(s) grau; d(s) 0; p(s) nil; Q empty; enter(q,s); while! isempty(q) do u front(q); leave(q); foreach v nk(u) do if c(v) = weiß then c(v) grau; d(v) d(u)+1; p(v) u; enter(q,v)fi; od; c(u) schwarz; od; end 8.3 Ausgewählte Algorithmen für ungewichtete Graphen 8-28

31 Breitensuche v r w s x t y u q: s v r w s x t y u q: w, r v r w s x t y u q: r, t, x v r w s x t y u q: t, x, v v r w s x t y u q: x, v, u v r w s x t y u q: v, u, y v r w s x t y u q: u, y v r w s x t y u q: y v r w s x t y u q: leer 8.3 Ausgewählte Algorithmen für ungewichtete Graphen 8-29

32 Breitensuche Satz: Es sei G = (V, E) ein gerichteter oder ungerichteter Graph, auf dem die Prozedur BFS für einen Startknoten s V ausgeführt wird. 1. Die Prozedur entdeckt jeden Knoten v V, der von s aus erreichbar ist. Bei der Terminierung ist d(v) gleich der Distanz von v von s für alle v V. 2. Die Laufzeit der Breitensuche liegt in O( V + E ), das heißt, die Laufzeit ist linear in der Größe der Adjazenzliste. 8.3 Ausgewählte Algorithmen für ungewichtete Graphen 8-30

33 Breitensuche Der implizit über das Verzeichnis p erzeugte Breitensuchbaum ist r s t u v w x y Die Pfade von jedem Knoten in diesem Baum zum Startknoten entsprechen kürzesten Pfaden in G. 8.3 Ausgewählte Algorithmen für ungewichtete Graphen 8-31

34 Tiefensuche Besuch aller Knoten eines Graphen G = (V, E). Es wird von einem Startknoten s ausgegangen. Es wird rekursiv so weit wie möglich auf einem Pfad vorangeschritten. Danach wird zu einer Verzweigung mit einem noch nicht besuchten Knoten zurückgegangen (Backtracking). a 1 2 b c j d 15 i 10 f e 6 7 h 8 5 g Ausgewählte Algorithmen für ungewichtete Graphen 8-32

35 Tiefensuche Rekursive Kontrollstruktur Prozeduren DFS(G) und DFS-visit(u) Zeitstempel Vier Verzeichnisse (Abbildungen, Dictionaries) d : V N 0 Beginn der Bearbeitung eines Knotens f : V N 0 Ende der Bearbeitung eines Knotens p : V V Vorgängerknoten c : V {weiß, schwarz, grau} wie oben 8.3 Ausgewählte Algorithmen für ungewichtete Graphen 8-33

36 Tiefensuche proc DFS(G) begin foreach u V do c(u) weiß; p(u) nil od; zeit 0; foreach u V do if c(u) = weiß then DFS-visit(u) fi; od; end 8.3 Ausgewählte Algorithmen für ungewichtete Graphen 8-34

37 Tiefensuche proc DFS-visit(u): begin c(u) grau; zeit zeit+1; d(u) zeit; foreach v nk(u) do if c(v) = weiß then p(v) u; DFS-visit(v) fi; od; c(u) schwarz; zeit zeit+1; f(u) zeit; end 8.3 Ausgewählte Algorithmen für ungewichtete Graphen 8-35

38 Tiefensuche x / u 1/ y / v / z / w / x / u 1/ y / v 2/ z / w / x / u 1/ y 3/ v 2/ z / w / x 4/ u 1/ y 3/ v 2/ z / w / x 4/ u 1/ y 3/ v 2/ z / w / B x 4/5 u 1/ y 3/ v 2/ z / w / B x 4/5 u 1/ y 3/6 v 2/ z / w / B x 4/5 u 1/ y 3/6 v 2/7 z / w / B 8.3 Ausgewählte Algorithmen für ungewichtete Graphen 8-36

39 Tiefensuche 1/ u 2/7 v / w 1/8 u 2/7 v / w 1/8 u 2/7 v 9/ w 1/8 u 2/7 v 9/ w F B F B F B F B C x 4/5 y 3/6 z / x 4/5 y 3/6 z / x 4/5 y 3/6 z / x 4/5 y 3/6 z / 1/8 u 2/7 v 9/ w 1/8 u 2/7 v 9/ w 1/8 u 2/7 v 9/ w 1/8 u 2/7 v 9/12 w F B C F B C F B C F B C x 4/5 y 3/6 z 10/ x 4/5 y 3/6 z 10/ B x 4/5 y 3/6 z 10/11 B x 4/5 y 3/6 z 10/11 B 8.3 Ausgewählte Algorithmen für ungewichtete Graphen 8-37

40 Tiefensuche Der implizit über das Verzeichnis p erzeugte Tiefensuchwald ist 1/8 u 2/7 v 9/12 w x 4/5 F B y 3/6 C z 10/11 B 8.3 Ausgewählte Algorithmen für ungewichtete Graphen 8-38

41 Tiefensuche Klassifikation der Kanten: 1. Baumkanten sind Kanten im Tiefensuchwald. 2. Rückwärtskanten B sind Kanten, die einen Knoten mit einem Vorfahren im Tiefensuchwald verbinden. 3. Vorwärtskanten F sind diejenigen Nichtbaumkanten, die einen Knoten mit einem Nachfahren im Tiefensuchwald verbinden. 4. Querkanten C sind alle übrigen Kanten. Sie können zwischen verschiedenen Tiefensuchbäume verlaufen. Bei einer Tiefensuche auf einem ungerichteten Graphen ist jede Kante eine Baumkante oder eine Rückwärtskante. 8.3 Ausgewählte Algorithmen für ungewichtete Graphen 8-39

42 Zyklenfreiheit Mithilfe der Tiefensuche können Zyklen in gerichteten Graphen ermittelt werden. Es gilt: Ein gerichteter Graph G ist genau dann azyklisch, wenn der Tiefensuchalgorithmus auf G keine Rückwärtskanten liefert. Beweis: s. Cormen et al., Seite Ausgewählte Algorithmen für ungewichtete Graphen 8-40

43 Topologisches Sortieren Gegeben sei ein gerichteter azyklischer Graph G = (V, E). Solche Graphen werden als DAG (directed acyclic graph) bezeichnet. Eine topologische Sortierung von G ist eine lineare Anordnung seiner Knoten mit der Eigenschaft, dass u vor v liegt, wenn es einen Pfad von u nach v gibt. Gesucht ist ein Algorithmus, der zu einem DAG G = (V, E) eine topologische Sortierung seiner Knotenmenge V berechnet. 8.3 Ausgewählte Algorithmen für ungewichtete Graphen 8-41

44 Topologisches Sortieren Beispiel: Gesucht ist die Reihenfolge beim Ankleiden. Nach Festlegung der Reihenfolge einzelner Kleidungsstücke entsteht folgender Graph: Socken Unterhose Schuhe Hose Hemd Gürtel Fliege Uhr Jacke 8.3 Ausgewählte Algorithmen für ungewichtete Graphen 8-42

45 Topologisches Sortieren Mit Tiefensuche kann für jeden Knoten die Endzeit seiner Bearbeitung bestimmt werden. Sie ergibt eine topologische Sortierung. Ist die Bearbeitung eines Knotens abgeschlossen, so wird er am Kopf der zu Beginn leeren Ergebnisliste eingefügt. Die Ergebnisliste gibt die Sortierung an. Reihenfolge: Socken (18), Unterhose (16), Hose (15), Schuhe (14), Uhr (10), Hemd (8), Gürtel (7), Fliege (5), Jacke (4) Unterhose 11/16 Hose 12/15 Gürtel 6/7 Uhr 9/10 Socken 17/18 Schuhe 13/14 Hemd 1/8 Fliege 2/5 Jacke 3/4 8.3 Ausgewählte Algorithmen für ungewichtete Graphen 8-43

46 Floyd-Warshall-Algorithmus Es soll die reflexive, transitive Hülle einer Relation bestimmt werden. Dieses Problem entspricht dem Erreichbarkeitsproblem in einem Graphen Ausgewählte Algorithmen für ungewichtete Graphen 8-44

47 Floyd-Warshall-Algorithmus Es sei V ={1,...,n}. Die Relation E V V liege als Adjazenzmatrix r vor. Für 1 i, j n sei true falls (i, j) E r[i, j] = false sonst func FloyWars(r: bool [n,n]): bool [n,n] begin var i,j,k: int; for i 1 to n do r[i,i] true; od; for k 1 to n do for i 1 to n do for j 1 to n do r[i,j] r[i,j] (r[i,k] r[k,j]); od; od; od; return r; end 8.3 Ausgewählte Algorithmen für ungewichtete Graphen 8-45

48 Übersicht In diesem Abschnitt wollen wir beispielhaft einige Algorithmen für gewichtete Graphen vorstellen. Minimale Spannbäume Algorithmus von Kruskal Algorithmus von Prim Kürzeste Pfade von einem Startknoten Algorithmus von Dijkstra Bellmann-Ford-Algorithmus 8.4 Ausgewählte Algorithmen für gewichtete Graphen 8-46

49 Minimale Spannbäume Gegeben sei ein gewichteter Graph G = (V, E, w). Gesucht ist eine azyklische Teilmenge T E, die alle Knoten verbindet und deren Gesamtgewicht w(t) = w(e) minimal ist. e T Eine Kantenmenge, die azyklisch ist und alle Knoten verbindet, ist ein Baum, der Spannbaum genannt wird. Es ist also ein minimaler Spannbaum gesucht Dieser Baum ist im Allgemeinen nicht eindeutig bestimmt. 8.4 Ausgewählte Algorithmen für gewichtete Graphen 8-47

50 Basisalgorithmus Der Algorithmus verwaltet eine Kantenmenge A, die den minimalen Spannbaum Kante für Kante aufbaut. A ist stets Teilmenge eines minimalen Spannbaums. Eine Kante e E, die zu A hinzugefügt werden kann, ohne die Eigenschaft zu verletzen, dass A Teilmenge eines minimalen Spannbaums ist, heißt sichere Kante für A. proc MST-Basis(G) begin A ; while A bildet keinen Spannbaum do bestimmeeine Kante e E, die sicher für A ist; A A {e}; od; return A; end 8.4 Ausgewählte Algorithmen für gewichtete Graphen 8-48

51 Basisalgorithmus Satz: Es sei G = (V, E) ein zusammenhängender, gewichteter Graph. A sei eine Teilmenge eines minimalen Spannbaums und C = (V C, E C ) eine Zusammenhangskomponente aus dem Wald G A = (V, A). Dann gilt: Falls e E eine Kante mit minimalen Gewicht ist, die C mit einer anderen Komponente von G A verbindet, dann ist e sicher für A. Beweis: s. Cormen, S. 569 f. 8.4 Ausgewählte Algorithmen für gewichtete Graphen 8-49

52 Operationen für disjunkte Mengen MakeSet(x) erzeugt die einelementige Menge{x}. x darf nicht bereits in einer anderen Menge enthalten sein. Union(x,y) bildet die Vereinigungsmenge x y. Es wird x y = vorausgesetzt. FindSet(x) liefert einen Zeiger auf den Repäsentanten der eindeutig bestimmten Menge, die x enthält. 8.4 Ausgewählte Algorithmen für gewichtete Graphen 8-50

53 Algorithmus von Kruskal Selektiere fortwährend eine verbleibende Kante mit geringstem Gewicht, die keinen Zyklus erzeugt, bis alle Knoten verbunden sind (Kruskal, 1956). Eine eindeutige Lösung ist immer dann vorhanden, wenn alle Gewichte verschieden sind Nach Wahl der Kanten 2, 2, 3 und 3 darf die verbleibende 3 nicht gewählt werden, da sonst ein Zyklus entstünde. 8.4 Ausgewählte Algorithmen für gewichtete Graphen 8-51

54 Algorithmus von Kruskal proc MST-Kruskal(G) begin A ; foreach v V do MakeSet(v)od; sortiere die Kanten aufsteigend nach ihrem Gewicht; foreach (u,v) E do if FindSet(u) FindSet(v)then A A {(u,v)} UnionSet(FindSet(u), FindSet(v)); fi; od; return A; end 8.4 Ausgewählte Algorithmen für gewichtete Graphen 8-52

55 Algorithmus von Kruskal A ist zu jedem Zeitpunkt ein Wald, dessen Komponenten nach und nach zu einem minimalen Spannbaum verbunden werden. Die Laufzeit hängt von der Implementierung der disjunkten Mengen ab. Bei einer geeigneten Realisierung der disjunkten Mengen liegt die Laufzeit des Algorithmus von Kruskal in O( E log V ). 8.4 Ausgewählte Algorithmen für gewichtete Graphen 8-53

56 Algorithmus von Prim Beim Algorithmus von Prim bildet die Kantenmenge A stets einen Baum. Der Baum startet bei einem beliebigen Wurzelknoten und wächst, bis er V aufspannt. In jedem Schritt wird eine Kante hinzugefügt, die A mit einem isolierten Knoten von G A = (V, A) verbindet und die bezüglich dieser Eigenschaft minimal ist. Der Algorithmus verwendet zur Verwaltung der Knoten eine Min-Prioritätswarteschlange Q, die auf einem Attribut schlüssel basiert. Für jeden Knoten v ist schlüssel(v) das kleinste Gewicht aller Kanten, die v mit einem Knoten des Baums verbinden. p(v) bezeichnet den Vater von v. 8.4 Ausgewählte Algorithmen für gewichtete Graphen 8-54

57 Algorithmus von Prim proc MST-Prim(G,r) begin foreach u V do schlüssel(u) ; p(u) nil; od; schlüssel(r) 0; Q V; while Q do u ExtractMin(Q); foreach v nk(u) do if v Q und w(u,v) < schlüssel(v) then p(v) u; schlüssel(v) w(u,v); fi; od; od; end 8.4 Ausgewählte Algorithmen für gewichtete Graphen 8-55

58 Algorithmus von Prim Die Laufzeit des Algorithmus von Prim hängt von der Implementierung der Min-Prioritätswarteschlange Q ab. Die Anweisung schlüssel(v) w(u,v) ist beispielsweise eine Decrease-Operation. Wenn Q als binärer Min-Heap realisiert wird, liegt die Laufzeit des Algorithmus von Prim in O( E log V ). Dies entspricht der Laufzeit des Algorithmus von Kruskal. Durch Verwendung von so genannten Fibonacci-Heaps kann die Laufzeit des Algorithmus von Prim auf O( E + V log V ) verbessert werden. 8.4 Ausgewählte Algorithmen für gewichtete Graphen 8-56

59 Problem der kürzesten Pfade bei einem Startknoten Gegeben ist ein gewichteter Graph G = (V, E, w) und ein Startknoten s V. Gesucht ist für jeden Knoten v V ein Pfad p = (v 0,...,v k ) von s = v 0 nach v = v k, dessen Gewicht w(p) = k i=1 w(v i 1, v i ) minimal wird. Falls kein Pfad von s nach v existiert, sei das Gewicht. Die Gewichte können im Allgemeinen negativ sein. 8.4 Ausgewählte Algorithmen für gewichtete Graphen 8-57

60 Problem der kürzesten Pfade bei einem Startknoten Beispiel: Bestimme den kürzesten Weg von Frankfurt nach Celle Augsburg Frankfurt Braunschweig Erfurt Celle Darmstadt Der kürzester Weg ist (Frankfurt, Augsburg, Braunschweig, Celle). Er hat das Gewicht Ausgewählte Algorithmen für gewichtete Graphen 8-58

61 Bellmann-Ford-Algorithmus Der Algorithmus verwendet so genannte Relaxationen und bestimmt so immer kleiner werdende Schätzungen d(v) für das Gewicht eines kürzesten Pfads vom Startknoten s aus zu allen Knoten v V, bis er das tatsächliche Gewicht erreicht hat. Der Algorithmus gibt genau dann wahr zurück, wenn der Graph keine Zyklen mit negativem Gewicht enthält, die von s aus erreichbar sind. p(v) ist wie bisher der Vaterknoten von v. Der Algorithmus führt V 1 Durchläufe über die Kanten des Graphen aus. 8.4 Ausgewählte Algorithmen für gewichtete Graphen 8-59

62 Bellmann-Ford-Algorithmus Initialisierung: proc Init(G,s) begin foreach v V do d(v) ; p(v) nil; od; d(s) 0; end Relaxation: proc Relax(u,v,w) begin if d(v) > d(u) + w(u,v) then d(v) d(u) + w(u,v); p(v) u; fi; end 8.4 Ausgewählte Algorithmen für gewichtete Graphen 8-60

63 Bellmann-Ford-Algorithmus proc Bellmann-Ford(G, s) boolean begin Init(G,s); for i 1 to V - 1 do foreach (u,v) E do Relax(u,v,w); od; od; foreach (u,v) E do if d(v) > d(u) + w(u,v) then return false; fi; od; return true; end Die Laufzeit des Bellmann-Ford-Algorithmus liegt in O( E V ). 8.4 Ausgewählte Algorithmen für gewichtete Graphen 8-61

64 Algorithmus von Dijkstra Der Algorithmus von Dijkstra löst das Problem der kürzesten Pfade bei einem Startknoten, falls alle Gewichte nichtnegativ sind. Wir setzen daher w(e) 0für alle e E voraus. Die Laufzeit des Dijkstra-Algorithmus ist bei guter Implementierung besser als die des Bellmann-Ford-Algorithmus. 8.4 Ausgewählte Algorithmen für gewichtete Graphen 8-62

65 Algorithmus von Dijkstra Der Dijkstra-Algorithmus verwaltet eine Menge S von Knoten, deren endgültige Gewichte der kürzesten Pfade vom Startknoten aus bereits bestimmt wurden. Der Algorithmus wählt in jedem Schritt denjenigen Knoten u V\ S mit der kleinsten Schätzung des kürzesten Pfads aus, fügt u zu S hinzu und relaxiert alle aus u austretenden Kanten In der Implementierung wird eine Min-Prioritätswarteschlange Q für Knoten verwendet. Dabei dienen die d-werte als Schlüssel. 8.4 Ausgewählte Algorithmen für gewichtete Graphen 8-63

66 Algorithmus von Dijkstra proc Dijkstra(G, s) begin Init(G,s); S ; Q V; while Q do u ExtractMin(Q); S S {u}; foreach v nk(u) Relax(u,v,w); od; od; end Die Laufzeit des Dijkstra-Algorithmus hängt von der Implementierung der Min-Prioritätswarteschlange Q ab. Bei guter Implementierung von Q liegt die Laufzeit des Dijkstra-Algorithmus in O( E + V log V ). 8.4 Ausgewählte Algorithmen für gewichtete Graphen 8-64

67 Algorithmus von Dijkstra s 0 10 t x 6 4 s 0 10 t x 6 4 s 0 10 t x y 2 z 5 y 2 z 5 y 2 7 z Q = [s,t,x,y,z] Q = [y,t,x,z] Q = [z,t,x] t 8 1 x 13 t 8 1 x 9 t 8 1 x 9 s s s y 2 7 z 5 y 2 7 z 5 y 2 7 z Q = [t,x] Q = [x] Q = [] 8.4 Ausgewählte Algorithmen für gewichtete Graphen 8-65

68 Ausblick Die Graphentheorie ist ein umfangreiches Gebiet, in dem viele weitere Fragestellungen untersucht werden. Wir stellen drei davon kurz vor: Problem des Handlungsreisenden, planare Graphen, Färbungen von Graphen. 8.4 Ausgewählte Algorithmen für gewichtete Graphen 8-66

69 Problem des Handlungsreisenden Gegeben seien n durch Straßen verbundene Städte mit Reisekosten c(i, j) zwischen je zwei Städten i und j, 1 i, j n. Gesucht ist die billigste Rundreise, die jede Stadt genau einmal besucht (Traveling Salesman Problem, TSP). Augsburg Frankfurt Braunschweig Erfurt Celle Darmstadt Die billigste Rundreise kostet 13 Einheiten. 8.4 Ausgewählte Algorithmen für gewichtete Graphen 8-67

70 Planare Graphen Gegeben sei ein beliebiger Graph G. Lässt sich G planar zeichnen, das heißt, ohne sich schneidende Kanten? Im Beispiel unten ist dies möglich, im Allgemeinen jedoch nicht. Anwendung: Chip- oder Leiterplattendesign. Leiterbahnen sollen möglichst kreuzungsfrei gestaltet werden. 8.4 Ausgewählte Algorithmen für gewichtete Graphen 8-68

71 Färbungen von Graphen Gegeben sei ein Graph G. Die Knoten von G sollen derart gefärbt werden, dass benachbarte Knoten verschiedene Farben besitzen. Wie viele Farben werden benötigt? Im Beispiel unten reichen bereits drei Farben. Für planare Graphen werden im Allgemeinen vier Farben benötigt. Dieses Ergebnis wurde 1976 von K. Appel und W. Haken gezeigt (Vierfarbenproblem). Der Beweis war sehr umfangreich und computergestützt. Anwendungen: Einfärben von Landkarten (Knoten Land, Kante Grenze), Vergabe überschneidungsfreier Klausurtermine (Knoten Fach, Kante beide Fächer werden vom gleichen Studenten gehört, Farbe Termin) 8.4 Ausgewählte Algorithmen für gewichtete Graphen 8-69

Graphenalgorithmen I. Geschickt Programmieren für den ICPC- Wettbewerb. Felix Weissenberger

Graphenalgorithmen I. Geschickt Programmieren für den ICPC- Wettbewerb. Felix Weissenberger Graphenalgorithmen I Geschickt Programmieren für den ICPC- Wettbewerb Felix Weissenberger Inhalt Grundlagen zu Graphen Begriffe Darstellung von Graphen Graphenalgorithmen Breitensuche Tiefensuche Topologisches

Mehr

Definition Gerichteter Pfad. gerichteter Pfad, wenn. Ein gerichteter Pfad heißt einfach, falls alle u i paarweise verschieden sind.

Definition Gerichteter Pfad. gerichteter Pfad, wenn. Ein gerichteter Pfad heißt einfach, falls alle u i paarweise verschieden sind. 3.5 Gerichteter Pfad Definition 291 Eine Folge (u 0, u 1,..., u n ) mit u i V für i = 0,..., n heißt gerichteter Pfad, wenn ( i {0,..., n 1} ) [ (u i, u i+1 ) A]. Ein gerichteter Pfad heißt einfach, falls

Mehr

Institut für Programmierung und Reaktive Systeme 31. Mai Programmieren II. 12. Übungsblatt

Institut für Programmierung und Reaktive Systeme 31. Mai Programmieren II. 12. Übungsblatt Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 1. Mai 01 Programmieren II 1. Übungsblatt Hinweis: Dieses Übungsblatt enthält die dritte Pflichtaufgabe.

Mehr

ADS 2: Algorithmen und Datenstrukturen

ADS 2: Algorithmen und Datenstrukturen ADS : Algorithmen und Datenstrukturen Teil 4 Prof. Peter F. Stadler & Dr. Christian Höner zu Siederdissen Bioinformatik/IZBI Institut für Informatik & Interdisziplinäres Zentrum für Bioinformatik Universität

Mehr

ADS: Algorithmen und Datenstrukturen 2

ADS: Algorithmen und Datenstrukturen 2 ADS: Algorithmen und Datenstrukturen 2 Teil II Peter F. Stadler & Konstantin Klemm Bioinformatics Group, Dept. of Computer Science & Interdisciplinary Center for Bioinformatics, University of Leipzig 07.

Mehr

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Übersicht: Graphen. Definition: Ungerichteter Graph. Definition: Ungerichteter Graph

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Übersicht: Graphen. Definition: Ungerichteter Graph. Definition: Ungerichteter Graph Programm heute Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 07 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München 7 Fortgeschrittene Datenstrukturen Graphen

Mehr

Algorithmen und Datenstrukturen Kapitel 9. und

Algorithmen und Datenstrukturen Kapitel 9. und Algorithmen und Datenstrukturen Kapitel 9 Minimale Spannbäume und Kürzeste Pfade Frank Heitmann heitmann@informatik.uni-hamburg.de 9. Dezember 01 Frank Heitmann heitmann@informatik.uni-hamburg.de 1/13

Mehr

Algorithmen und Datenstrukturen Kapitel 9. und

Algorithmen und Datenstrukturen Kapitel 9. und Algorithmen und Datenstrukturen Kapitel 9 und Kürzeste Pfade Frank Heitmann heitmann@informatik.uni-hamburg.de 9. Dezember 0 Frank Heitmann heitmann@informatik.uni-hamburg.de / Problemstellung Definition

Mehr

ADS: Algorithmen und Datenstrukturen 2

ADS: Algorithmen und Datenstrukturen 2 ADS: Algorithmen und Datenstrukturen 2 Teil 4 Prof. Dr. Gerhard Heyer Institut für Informatik Abteilung Automatische Sprachverarbeitung Universität Leipzig 02. Mai 2017 [Letzte Aktualisierung: 10/07/2018,

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 16 (2.7.2014) Graphtraversierung II, Minimale Spannbäume I Algorithmen und Komplexität Tiefensuche: Pseusocode DFS Traversal: for all u in

Mehr

ADS 2: Algorithmen und Datenstrukturen

ADS 2: Algorithmen und Datenstrukturen ADS 2: Algorithmen und Datenstrukturen Teil 2 Prof. Peter F. Stadler & Sebastian Will Bioinformatik/IZBI Institut für Informatik & Interdisziplinäres Zentrum für Bioinformatik Universität Leipzig 16. April

Mehr

Algorithmen und Datenstrukturen 2-1. Seminar -

Algorithmen und Datenstrukturen 2-1. Seminar - Algorithmen und Datenstrukturen 2-1. Seminar - Dominic Rose Bioinformatics Group, University of Leipzig Sommersemster 2010 Outline 1. Übungsserie: 3 Aufgaben, insgesamt 30 28 Punkte A1 Spannbäume (10 8

Mehr

ADS 2: Algorithmen und Datenstrukturen

ADS 2: Algorithmen und Datenstrukturen ADS : Algorithmen und Datenstrukturen Teil Prof. Dr. Gerhard Heyer Institut für Informatik Abteilung Automatische Sprachverarbeitung Universität Leipzig 09. Mai 08 [Letzte Aktualisierung: 06/07/08, 08:4]

Mehr

ADS 2: Algorithmen und Datenstrukturen

ADS 2: Algorithmen und Datenstrukturen ADS : Algorithmen und Datenstrukturen Teil Prof. Peter F. Stadler & Dr. Christian Höner zu Siederdissen Bioinformatik/IZBI Institut für Informatik & Interdisziplinäres Zentrum für Bioinformatik Universität

Mehr

Diskrete Strukturen WS 2005/06. Ernst W. Mayr. 27. Januar Fakultät für Informatik TU München

Diskrete Strukturen WS 2005/06. Ernst W. Mayr. 27. Januar Fakultät für Informatik TU München WS 2005/06 Ernst W. Mayr Fakultät für Informatik TU München http://www14.in.tum.de/lehre/2005ws/ds/ 27. Januar 2006 Ernst W. Mayr 2.16 Inzidenzmatrix 3. Definitionen für gerichtete Graphen 3.1 Digraph

Mehr

Informatik II, SS 2018

Informatik II, SS 2018 Informatik II - SS 2018 (Algorithmen & Datenstrukturen) Vorlesung 13 (6.6.2018) Graphenalgorithmen II Yannic Maus Algorithmen und Komplexität Repräsentation von Graphen Zwei klassische Arten, einen Graphen

Mehr

12. Graphen. Notation, Repräsentation, Traversieren (DFS, BFS), Topologisches Sortieren, Ottman/Widmayer, Kap ,Cormen et al, Kap.

12. Graphen. Notation, Repräsentation, Traversieren (DFS, BFS), Topologisches Sortieren, Ottman/Widmayer, Kap ,Cormen et al, Kap. 254 12. Graphen Notation, Repräsentation, Traversieren (DFS, BFS), Topologisches Sortieren, Ottman/Widmayer, Kap. 9.1-9.4,Cormen et al, Kap. 22 Königsberg 1736 255 Königsberg 1736 255 Königsberg 1736 255

Mehr

9 Minimum Spanning Trees

9 Minimum Spanning Trees Im Folgenden wollen wir uns genauer mit dem Minimum Spanning Tree -Problem auseinandersetzen. 9.1 MST-Problem Gegeben ein ungerichteter Graph G = (V,E) und eine Gewichtsfunktion w w : E R Man berechne

Mehr

Wie wird ein Graph dargestellt?

Wie wird ein Graph dargestellt? Wie wird ein Graph dargestellt? Für einen Graphen G = (V, E), ob gerichtet oder ungerichtet, verwende eine Adjazenzliste A G : A G [i] zeigt auf eine Liste aller Nachbarn von Knoten i, wenn G ungerichtet

Mehr

Programmiertechnik II

Programmiertechnik II Graph-Algorithmen Anwendungsgebiete "Verbundene Dinge" oft Teilproblem/Abstraktion einer Aufgabenstellung Karten: Wie ist der kürzeste Weg von Sanssouci nach Kunnersdorf? Hypertext: Welche Seiten sind

Mehr

Definition Ein gerichteter Graph G = (V, E) ist ein Graph von geordneten Paaren (u, v) mit u V und v V.

Definition Ein gerichteter Graph G = (V, E) ist ein Graph von geordneten Paaren (u, v) mit u V und v V. Kapitel 4 Graphenalgorithmen 4.1 Definitionen Definition 4.1.1. Der Graph G = (V, E) ist über die beiden Mengen V und E definiert, wobei V die Menge der Knoten und E die Menge der Kanten in dem Graph ist.

Mehr

Algorithmus zur topologischen Nummerierung: while V = 0 do nummeriere eine Quelle mit der nächsten Nummer streiche diese Quelle aus V od

Algorithmus zur topologischen Nummerierung: while V = 0 do nummeriere eine Quelle mit der nächsten Nummer streiche diese Quelle aus V od Algorithmus zur topologischen Nummerierung: while V = 0 do nummeriere eine Quelle mit der nächsten Nummer streiche diese Quelle aus V od Diskrete Strukturen 3.7 dag 473/556 3.8 Zusammenhang Definition

Mehr

Graphenalgorithmen I

Graphenalgorithmen I Graphenalgorithmen I Vortrag im Seminar Hallo Welt! für Fortgeschrittene 7. Juni 211 Graphenalgorithmen I 1/33 Motivation Problem Wie komme ich am schnellsten ins Kanapee? Problem Wie kommt ein Datenpaket

Mehr

Programmiertechnik II

Programmiertechnik II Graph-Algorithmen Anwendungsgebiete "Verbundene Dinge" oft Teilproblem/Abstraktion einer Aufgabenstellung Karten: Wie ist der kürzeste Weg von Sanssouci nach Kunnersdorf? Hypertext: Welche Seiten sind

Mehr

Ferienkurs zur algorithmischen diskreten Mathematik Kapitel 1: Grundlagen der algorithmischen Graphentheorie

Ferienkurs zur algorithmischen diskreten Mathematik Kapitel 1: Grundlagen der algorithmischen Graphentheorie Ferienkurs zur algorithmischen diskreten Mathematik Kapitel 1: Grundlagen der algorithmischen Graphentheorie Dipl-Math. Wolfgang Kinzner 2.4.2012 Kapitel 1: Grundlagen der algorithmischen Graphgentheorie

Mehr

Graphalgorithmen 2. Dominik Paulus Dominik Paulus Graphalgorithmen / 47

Graphalgorithmen 2. Dominik Paulus Dominik Paulus Graphalgorithmen / 47 Graphalgorithmen Dominik Paulus.0.01 Dominik Paulus Graphalgorithmen.0.01 1 / 7 1 Spannbäume Kruskal Prim Edmonds/Chu-Liu Datenstrukturen Fibonacci-Heap Union/Find Kürzeste Pfade Dijkstra Bellman-Ford

Mehr

Traversierung 1 / 16. P.F. Stadler & S. Will (Bioinf, Uni LE) ADS 2, V3 23. April / 16

Traversierung 1 / 16. P.F. Stadler & S. Will (Bioinf, Uni LE) ADS 2, V3 23. April / 16 P.F. Stadler & S. Will (Bioinf, Uni LE) ADS, V. April 0 / P.F. Stadler & S. Will (Bioinf, Uni LE) ADS, V. April 0 / Traversierung ADS: Algorithmen und Datenstrukturen Teil Prof. Peter F. Stadler & Sebastian

Mehr

ADS: Algorithmen und Datenstrukturen 2

ADS: Algorithmen und Datenstrukturen 2 ADS: Algorithmen und Datenstrukturen 2 Teil 4 Prof. Peter F. Stadler & Dr. Christian Höner zu Siederdissen Bioinformatik/IZBI Institut für Informatik & Interdisziplinäres Zentrum für Bioinformatik Universität

Mehr

Algorithmen I. Tutorium 1-8. Sitzung. Dennis Felsing

Algorithmen I. Tutorium 1-8. Sitzung. Dennis Felsing Algorithmen I Tutorium 1-8. Sitzung Dennis Felsing dennis.felsing@student.kit.edu www.stud.uni-karlsruhe.de/~ubcqr/algo 2011-06-06 Überblick 1 Allgemeines Adjazenzliste Adjazenzmatrix Adjazenzfeld Aufgaben

Mehr

12. Graphen. Königsberg Zyklen. [Multi]Graph

12. Graphen. Königsberg Zyklen. [Multi]Graph Königsberg 76. Graphen, Repräsentation, Traversieren (DFS, BFS), Topologisches Sortieren, Ottman/Widmayer, Kap. 9. - 9.,Cormen et al, Kap. [Multi]Graph Zyklen C Kante Gibt es einen Rundweg durch die Stadt

Mehr

23. Graphen. Königsberg Zyklen. [Multi]Graph

23. Graphen. Königsberg Zyklen. [Multi]Graph Königsberg 76. Graphen, Repräsentation, Reflexive transitive Hülle, Traversieren (DFS, BFS), Zusammenhangskomponenten, Topologisches Sortieren Ottman/Widmayer, Kap. 9. - 9.,Cormen et al, Kap. 60 60 [Multi]Graph

Mehr

Effiziente Algorithmen

Effiziente Algorithmen Effiziente Algorithmen Martin Hofmann und Jan Johannsen Institut für Informatik LMU München Sommersemester 2002 Graphalgorithmen Grundlegendes Repräsentation von Graphen Breiten- und Tiefensuche Minimale

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Prof. Martin Lercher Institut für Informatik Heinrich-Heine-Universität Düsseldorf Teil 10 Suche in Graphen Version vom 13. Dezember 2016 1 / 2 Vorlesung 2016 / 2017 2 /

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 17 (8.7.2014) Minimale Spannbäume II Union Find, Prioritätswarteschlangen Algorithmen und Komplexität Minimaler Spannbaum Gegeben: Zus. hängender,

Mehr

Institut für Programmierung und Reaktive Systeme 27. Mai Programmieren II. 12. Übungsblatt

Institut für Programmierung und Reaktive Systeme 27. Mai Programmieren II. 12. Übungsblatt Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 27. Mai 206 Programmieren II 2. Übungsblatt Hinweis: Auf diesem und den folgenden Übungsblättern

Mehr

Institut für Programmierung und Reaktive Systeme 28. Mai Programmieren II. 12. Übungsblatt

Institut für Programmierung und Reaktive Systeme 28. Mai Programmieren II. 12. Übungsblatt Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 28. Mai 208 Programmieren II 2. Übungsblatt Hinweis: Auf diesem und den folgenden Übungsblättern

Mehr

Informatik II, SS 2016

Informatik II, SS 2016 Informatik II - SS 208 (Algorithmen & Datenstrukturen) Vorlesung 4 (..208) Graphenalgorithmen III Algorithmen und Komplexität Bäume Gegeben: Zusammenhängender, ungerichteter Graph G = V, E Baum: Zusammenhängender,

Mehr

Graphen und Bäume. A.1 Graphen

Graphen und Bäume. A.1 Graphen Algorithmen und Datenstrukturen 96 A Graphen und Bäume A.1 Graphen Ein gerichteter Graph (auch Digraph) G ist ein Paar (V, E), wobei V eine endliche Menge und E eine Relation auf V ist, d.h. E V V. V heißt

Mehr

4.2 Minimale Spannbäume: Der Algorithmus von Jarník/Prim Definition 4.2.1

4.2 Minimale Spannbäume: Der Algorithmus von Jarník/Prim Definition 4.2.1 Allgemeines. Minimale Spannbäume: Der Algorithmus von Jarník/Prim Definition.. (a) Ein Graph G =(V, E) heißt kreisfrei, wenn er keinen Kreis besitzt. Beispiel: Ein kreisfreier Graph: FG KTuEA, TU Ilmenau

Mehr

Algorithmen und Datenstrukturen SS09. Foliensatz 16. Michael Brinkmeier. Technische Universität Ilmenau Institut für Theoretische Informatik

Algorithmen und Datenstrukturen SS09. Foliensatz 16. Michael Brinkmeier. Technische Universität Ilmenau Institut für Theoretische Informatik Foliensatz 16 Michael Brinkmeier Technische Universität Ilmenau Institut für Theoretische Informatik Sommersemester 2009 TU Ilmenau Seite 1 / 45 Graphen TU Ilmenau Seite 2 / 45 Graphen 1 2 3 4 5 6 7 8

Mehr

2.4 Starke Zusammenhangskomponenten in Digraphen

2.4 Starke Zusammenhangskomponenten in Digraphen Starke Zusammenhangskomponenten Einleitung 2.4 Starke Zusammenhangskomponenten in Digraphen Definition 2.4.1 Zwei Knoten v und w in einem Digraphen G heißen äquivalent, wenn v w und w v gilt. Notation:

Mehr

Informatik II, SS 2016

Informatik II, SS 2016 Informatik II - SS 2018 (Algorithmen & Datenstrukturen) Vorlesung 12 (4.6.2018) Graphenalgorithmen I Yannic Maus Algorithmen und Komplexität Graphen Knotenmenge V, typischerweise n V Kantenmenge E, typischerweise

Mehr

Teil 2: Graphenalgorithmen

Teil 2: Graphenalgorithmen Teil : Graphenalgorithmen Anwendungen Definitionen Datenstrukturen für Graphen Elementare Algorithmen Topologisches Sortieren Kürzeste Wege Minimal aufspannende Bäume Problemstellung Algorithmus von Prim

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Kürzeste Wege Maike Buchin 4. und 6.7.2017 Einführung Motivation: Bestimmung von kürzesten Wegen ist in vielen Anwendungen, z.b. Routenplanung, ein wichtiges Problem. Allgemeine

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Graphdurchläufe Maike Buchin 22. und 27.6.2017 Graphexploration Motivation: Für viele Zwecke will man den gesamten Graphen durchlaufen, zb. um festzustellen ob er (stark) zusammenhängt.

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen Wintersemester 018/19 1. Vorlesung Minimale Spannbäume Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Motivation ) Kantengewichte w : E R >0 ) w(e ) := e E w(e)

Mehr

Datenstrukturen und Algorithmen (SS 2013)

Datenstrukturen und Algorithmen (SS 2013) Datenstrukturen und Algorithmen (SS 2013) Übungsblatt 10 Abgabe: Montag, 08.07.2013, 14:00 Uhr Die Übungen sollen in Gruppen von zwei bis drei Personen bearbeitet werden. Schreiben Sie die Namen jedes

Mehr

3. Minimale Spannbäume. Definition 99 T heißt minimaler Spannbaum (MSB, MST) von G, falls T Spannbaum von G ist und gilt:

3. Minimale Spannbäume. Definition 99 T heißt minimaler Spannbaum (MSB, MST) von G, falls T Spannbaum von G ist und gilt: 3. Minimale Spannbäume Sei G = (V, E) ein einfacher ungerichteter Graph, der o.b.d.a. zusammenhängend ist. Sei weiter w : E R eine Gewichtsfunktion auf den Kanten von G. Wir setzen E E: w(e ) = e E w(e),

Mehr

Informatik II, SS 2016

Informatik II, SS 2016 Informatik II - SS 2016 (Algorithmen & Datenstrukturen) Vorlesung 13 (8.6.2016) Graphenalgorithmen I Algorithmen und Komplexität Graphen Knotenmenge V, typischerweise n V Kantenmenge E, typischerweise

Mehr

Graphen. Definitionen

Graphen. Definitionen Graphen Graphen werden häufig als Modell für das Lösen eines Problems aus der Praxis verwendet, wie wir im Kapitel 1 gesehen haben. Der Schweizer Mathematiker Euler hat als erster Graphen verwendet, um

Mehr

ADS: Algorithmen und Datenstrukturen 2

ADS: Algorithmen und Datenstrukturen 2 ADS: Algorithmen und Datenstrukturen 2 Teil 3 Prof. Peter F. Stadler & Dr. Christian Höner zu Siederdissen Bioinformatik/IZBI Institut für Informatik & Interdisziplinäres Zentrum für Bioinformatik Universität

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Graphen 9/1 Begriffsdefinitionen Ein Graph besteht aus Knoten und Kanten. Ein Knoten(Ecke) ist ein benanntes Objekt. Eine Kante verbindet zwei Knoten. Kanten haben ein Gewicht

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

15. Elementare Graphalgorithmen

15. Elementare Graphalgorithmen Graphen sind eine der wichtigste Modellierungskonzepte der Informatik Graphalgorithmen bilden die Grundlage vieler Algorithmen in der Praxis Zunächst kurze Wiederholung von Graphen. Dann Darstellungen

Mehr

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Einheit 11: Graphen Thomas Worsch Karlsruher Institut für Technologie, Fakultät für Informatik Wintersemester 2010/2011 1/59 Graphische Darstellung von Zusammenhängen schon

Mehr

ADS: Algorithmen und Datenstrukturen 2

ADS: Algorithmen und Datenstrukturen 2 ADS: Algorithmen und Datenstrukturen 2 Teil 4 Prof. Dr. Gerhard Heyer Institut für Informatik Abteilung Automatische Sprachverarbeitung Universität Leipzig 24. April 2019 [Letzte Aktualisierung: 24/04/2019,

Mehr

Kapitel IV Minimale Spannbäume

Kapitel IV Minimale Spannbäume Kapitel IV Minimale Spannbäume. Grundlagen Ein Graph G = (V, E) besteht aus einer Menge V von Knoten und einer Menge E von Kanten. Wir werden nur endliche Knoten- (und damit auch Kanten-) Mengen betrachten.

Mehr

Graphentheorie. Yichuan Shen. 10. Oktober 2013

Graphentheorie. Yichuan Shen. 10. Oktober 2013 Graphentheorie Yichuan Shen 0. Oktober 203 Was ist ein Graph? Ein Graph ist eine kombinatorische Struktur, die bei der Modellierung zahlreicher Probleme Verwendung findet. Er besteht ganz allgemein aus

Mehr

3.2 Generischer minimaler Spannbaum-Algorithmus

3.2 Generischer minimaler Spannbaum-Algorithmus 3.2 Generischer minimaler Spannbaum-Algorithmus Initialisiere Wald F von Bäumen, jeder Baum ist ein singulärer Knoten (jedes v V bildet einen Baum) while Wald F mehr als einen Baum enthält do wähle einen

Mehr

ADS: Algorithmen und Datenstrukturen 2

ADS: Algorithmen und Datenstrukturen 2 ADS: Algorithmen und Datenstrukturen 2 Teil 6 Prof. Dr. Gerhard Heyer Institut für Informatik Abteilung Automatische Sprachverarbeitung Universität Leipzig 16. Mai 2018 [Letzte Aktualisierung: 18/05/2018,

Mehr

Institut für Programmierung und Reaktive Systeme 12. Juni Programmieren II. 12. Übungsblatt

Institut für Programmierung und Reaktive Systeme 12. Juni Programmieren II. 12. Übungsblatt Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 2. Juni 205 Programmieren II 2. Übungsblatt Hinweis: Auf diesem und den folgenden Übungsblättern

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

Lösungen zu Kapitel 5

Lösungen zu Kapitel 5 Lösungen zu Kapitel 5 Lösung zu Aufgabe : (a) Es gibt derartige Graphen: (b) Offensichtlich besitzen 0 der Graphen einen solchen Teilgraphen. Lösung zu Aufgabe : Es sei G = (V, E) zusammenhängend und V

Mehr

VL-14: Graphalgorithmen I. (Datenstrukturen und Algorithmen, SS 2017) Gerhard Woeginger

VL-14: Graphalgorithmen I. (Datenstrukturen und Algorithmen, SS 2017) Gerhard Woeginger VL-14: Graphalgorithmen I (Datenstrukturen und Algorithmen, SS 2017) Gerhard Woeginger SS 2017, RWTH DSAL/SS 2017 VL-14: Graphalgorithmen I 1/48 Organisatorisches Vorlesung: Gerhard Woeginger (Zimmer 4024

Mehr

Überblick. 1 Graphen. 2 Arten von Graphen. 3 Graph als Datenstruktur. 4 Breitensuche. 5 Tiefensuche. 5 Topologisches Sortieren

Überblick. 1 Graphen. 2 Arten von Graphen. 3 Graph als Datenstruktur. 4 Breitensuche. 5 Tiefensuche. 5 Topologisches Sortieren Teil IX Graphen Überblick 1 Graphen 2 Arten von Graphen 3 Graph als Datenstruktur 4 Breitensuche 5 Tiefensuche 5 Topologisches Sortieren 6 Algorithmen auf gewichteten Graphen Prof. G. Stumme Algorithmen

Mehr

Effiziente Algorithmen

Effiziente Algorithmen Effiziente Algorithmen Graphdurchläufe Vorlesender: Martin Aumüller (nach Folien von Prof. Martin Dietzfelbinger) April/Mai 0 FG KTuEA, TU Ilmenau Effiziente Algorithmen Sommersemester 0 Einleitung Kapitel

Mehr

Algorithmen und Datenstrukturen 13

Algorithmen und Datenstrukturen 13 19. Juli 2012 1 Besprechung Blatt 12 Fragen 2 Bäume AVL-Bäume 3 Graphen Allgemein Matrixdarstellung 4 Graphalgorithmen Dijkstra Prim Kruskal Fragen Fragen zu Blatt 12? AVL-Bäume AVL-Bäume ein AVL-Baum

Mehr

Datenstrukturen und Algorithmen

Datenstrukturen und Algorithmen Prof. Dr. Erika Ábrahám Datenstrukturen und Algorithmen 1/1 Datenstrukturen und Algorithmen Vorlesung 14: Prof. Dr. Erika Ábrahám Theorie Hybrider Systeme Informatik 2 http://ths.rwth-aachen.de/teaching/ss-14/

Mehr

Graphalgorithmen. 9. November / 54

Graphalgorithmen. 9. November / 54 Graphalgorithmen 9. November 2017 1 / 54 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

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

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen 13. Übung minimale Spannbäume, topologische Sortierung, AVL-Bäume Clemens Lang Übungen zu AuD 4. Februar 2010 Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen

Mehr

Graphentheorie Graphentheorie. Grundlagen Bäume Eigenschaften von Graphen Graphen-Algorithmen Matchings und Netzwerke

Graphentheorie Graphentheorie. Grundlagen Bäume Eigenschaften von Graphen Graphen-Algorithmen Matchings und Netzwerke Graphen Graphentheorie Graphentheorie Grundlagen Bäume Eigenschaften von Graphen Graphen-Algorithmen Matchings und Netzwerke 2 Was ist ein Graph? Ein Graph ist in der Graphentheorie eine abstrakte Struktur,

Mehr

14. Elementare Graphalgorithmen

14. Elementare Graphalgorithmen Graphen sind eine der wichtigsten Modellierungskonzepte der Informatik Graphalgorithmen bilden die Grundlage vieler Algorithmen in der Praxis Übersicht: Zunächst eine kurze Einführung in Graphen. Dann

Mehr

Algorithmen & Komplexität

Algorithmen & Komplexität Algorithmen & Komplexität Angelika Steger Institut für Theoretische Informatik steger@inf.ethz.ch Kürzeste Pfade Problem Gegeben Netzwerk: Graph G = (V, E), Gewichtsfunktion w: E N Zwei Knoten: s, t Kantenzug/Weg

Mehr

Kapitel IV Minimale Spannbäume

Kapitel IV Minimale Spannbäume Kapitel IV Minimale Spannbäume 1. Grundlagen Ein Graph G = (V, E) besteht aus einer Menge V von Knoten und einer Menge E von Kanten. Wir werden nur endliche Knoten- (und damit auch Kanten-) Mengen betrachten.

Mehr

Diskrete Strukturen. Hausaufgabe 1 (5 Punkte) Wintersemester 2007/08 Lösungsblatt Januar 2008

Diskrete Strukturen. Hausaufgabe 1 (5 Punkte) Wintersemester 2007/08 Lösungsblatt Januar 2008 Technische Universität München Fakultät für Informatik Lehrstuhl für Informatik 15 Computergraphik & Visualisierung Prof. Dr. Rüdiger Westermann Dr. Werner Meixner Wintersemester 2007/08 Lösungsblatt 8

Mehr

Anwendungen von Graphen

Anwendungen von Graphen Anwendungen von Graphen Strassen- und Verkehrsnetze Computernetzwerke elektrische Schaltpläne Entity-Relationship Diagramme Beweisbäume endliche Automaten Syntaxbäume für Programmiersprachen Entscheidungsbäume

Mehr

Elementare Definitionen. Anwendungen von Graphen. Formalisierung von Graphen. Formalisierung von Digraphen. Strassen- und Verkehrsnetze

Elementare Definitionen. Anwendungen von Graphen. Formalisierung von Graphen. Formalisierung von Digraphen. Strassen- und Verkehrsnetze Anwendungen von Graphen Strassen- und Verkehrsnetze Computernetzwerke Elementare Definitionen Ein Graph besteht aus Knoten und Kanten, die die Knoten verbinden. elektrische Schaltpläne Entity-Relationship

Mehr

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Einheit 11: Graphen Thomas Worsch Universität Karlsruhe, Fakultät für Informatik Wintersemester 2008/2009 1/42 Graphische Darstellung von Zusammenhängen schon an vielen Stellen

Mehr

2. November Gradfolgen Zusammenhang Kürzeste Wege. H. Meyerhenke: Algorithmische Methoden zur Netzwerkanalyse 37

2. November Gradfolgen Zusammenhang Kürzeste Wege. H. Meyerhenke: Algorithmische Methoden zur Netzwerkanalyse 37 2. November 2011 Gradfolgen Zusammenhang Kürzeste Wege H. Meyerhenke: Algorithmische Methoden zur Netzwerkanalyse 37 Satz von Erdős und Gallai Eine Partition einer natürlichen Zahl ist genau dann die Gradfolge

Mehr

Berechnung von Abständen

Berechnung von Abständen 3. Kreis- und Wegeprobleme Abstände in Graphen Abstände in Graphen Definition 3.4. Es sei G = (V, E) ein Graph. Der Abstand d(v, w) zweier Knoten v, w V ist die minimale Länge eines Weges von v nach w.

Mehr

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Kapitel 15: Graphen Thomas Worsch KIT, Institut für Theoretische Informatik Wintersemester 2015/2016 GBI Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik

Mehr

Quicksort ist ein Divide-and-Conquer-Verfahren.

Quicksort ist ein Divide-and-Conquer-Verfahren. . Quicksort Wie bei vielen anderen Sortierverfahren (Bubblesort, Mergesort, usw.) ist auch bei Quicksort die Aufgabe, die Elemente eines Array a[..n] zu sortieren. Quicksort ist ein Divide-and-Conquer-Verfahren.

Mehr

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Datenstrukturen. Mariano Zelke. Sommersemester 2012 Datenstrukturen Mariano Zelke Sommersemester 2012 Tiefensuche: Die globale Struktur Der gerichtete oder ungerichtete Graph G werde durch seine Adjazenzliste A repräsentiert. Im Array besucht wird vermerkt,

Mehr

= n (n 1) 2 dies beruht auf der Auswahl einer zweielementigen Teilmenge aus V = n. Als Folge ergibt sich, dass ein einfacher Graph maximal ( n E = 2

= n (n 1) 2 dies beruht auf der Auswahl einer zweielementigen Teilmenge aus V = n. Als Folge ergibt sich, dass ein einfacher Graph maximal ( n E = 2 1 Graphen Definition: Ein Graph G = (V,E) setzt sich aus einer Knotenmenge V und einer (Multi)Menge E V V, die als Kantenmenge bezeichnet wird, zusammen. Falls E symmetrisch ist, d.h.( u,v V)[(u,v) E (v,u)

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Graphen (1) Darstellung Traversierung Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 441 Generalisierung von Bäumen Verallgemeinerung (von Listen zu Graphen)

Mehr

Graphdurchmusterung, Breiten- und Tiefensuche

Graphdurchmusterung, Breiten- und Tiefensuche Prof. Thomas Richter 18. Mai 2017 Institut für Analysis und Numerik Otto-von-Guericke-Universität Magdeburg thomas.richter@ovgu.de Material zur Vorlesung Algorithmische Mathematik II am 18.05.2017 Graphdurchmusterung,

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Wintersemester 2012/13 22. Vorlesung Tiefensuche und Topologische Sortierung Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Vorlesungsumfrage Nutzen Sie die Vorlesungsbefragung

Mehr

Übersicht. Datenstrukturen und Algorithmen. Das Rechenproblem: kürzeste Pfade. Übersicht. Vorlesung 17: Kürzeste Pfade (K24) Bellman-Ford Dijkstra

Übersicht. Datenstrukturen und Algorithmen. Das Rechenproblem: kürzeste Pfade. Übersicht. Vorlesung 17: Kürzeste Pfade (K24) Bellman-Ford Dijkstra Datenstrukturen und Algorithmen Vorlesung 17: (K) Joost-Pieter Katoen Lehrstuhl für Informat Software Modeling and Verification Group http://moves.rwth-aachen.de/teaching/ss-15/dsal/ 1. Juni 15 1 Joost-Pieter

Mehr

Graphalgorithmen I. Simon Regnet. May 16, Universität Erlangen. Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

Graphalgorithmen I. Simon Regnet. May 16, Universität Erlangen. Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56 Graphalgorithmen I Simon Regnet Universität Erlangen May 16, 2008 Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, 2008 1 / 56 Inhalt 1 Motivation 2 Terminologie 3 Datenstrukturen 4 Suche

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

Graphen Jiri Spale, Algorithmen und Datenstrukturen - Graphen 1

Graphen Jiri Spale, Algorithmen und Datenstrukturen - Graphen 1 Graphen 27 Jiri Spale, Algorithmen und Datenstrukturen - Graphen Motivation Einsatz: Berechnung von Entfernungen Auffinden von Zyklen in Beziehungen Ermittlung von Verbindungen Zeitmanagement Konzept:

Mehr

Algo&Komp. - Wichtige Begriffe Mattia Bergomi Woche 6 7

Algo&Komp. - Wichtige Begriffe Mattia Bergomi Woche 6 7 1 Kürzeste Pfade Woche 6 7 Hier arbeiten wir mit gewichteten Graphen, d.h. Graphen, deren Kanten mit einer Zahl gewichtet werden. Wir bezeichnen die Gewichtsfunktion mit l : E R. Wir wollen einen kürzesten

Mehr

Lösungsvorschlag Hausübung 8

Lösungsvorschlag Hausübung 8 Lösungsvorschlag Hausübung 8 Peter Kling 16. Juli 2007 Aufgabe 27 Betrachten Sie den Algorithmus Heapsort (vgl. Alg. 1) aus der Vorlesung. Illustrieren Sie die Arbeitsweise von Heapsort am Beispiel des

Mehr

Institut für Programmierung und Reaktive Systeme 5. Dezember Programmieren II. 12. Übungsblatt

Institut für Programmierung und Reaktive Systeme 5. Dezember Programmieren II. 12. Übungsblatt Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 5. Dezember 206 Programmieren II 2. Übungsblatt Hinweis: Auf diesem und den folgenden Übungsblättern

Mehr

Einheit 11 - Graphen

Einheit 11 - Graphen Einheit - Graphen Bevor wir in medias res (eigentlich heißt es medias in res) gehen, eine Zusammenfassung der wichtigsten Definitionen und Notationen für Graphen. Graphen bestehen aus Knoten (vertex, vertices)

Mehr

Programmierkurs Python II

Programmierkurs Python II Programmierkurs Python II Stefan Thater & Michaela Regneri FR.7 Allgemeine Linguistik (Computerlinguistik) Universität des Saarlandes Sommersemester 011 Heute Ein wenig Graph-Theorie (in aller Kürze) Datenstrukturen

Mehr

A B = {(a,b) a A, b B}

A B = {(a,b) a A, b B} Binäre Relationen Def: A, B zwei Mengen. Das kartesische Produkt von beiden ist A B = {(a,b) a A, b B} Eine MengeR A B heißt (zweistellige) Relation. Anstatt (a,b) R schreibt man oft auch arb. 1 SindR,S

Mehr