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

Größe: px
Ab Seite anzeigen:

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

Transkript

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

2 Inhalt 1 Motivation 2 Terminologie 3 Datenstrukturen 4 Suche im Graph 5 Topologische Sortierung 6 Zusammenhang in Graphen Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

3 Motivation Warum Graphen? Haupt- und Unterkategorie Hierarchisch angeordnete Kategoriesysteme Durch Verschieben von Kategorien kann ein Zyklus entstehen Graphen können einen Zyklus nachweisen Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

4 Motivation Warum Graphen? Haupt- und Unterkategorie Hierarchisch angeordnete Kategoriesysteme Durch Verschieben von Kategorien kann ein Zyklus entstehen Graphen können einen Zyklus nachweisen Netzwerk Knoten im Netzwerk sind durch Leitungen verbunden Ausfall eines Knotens kann das gesamte Netzwerk zusammenbrechen lassen Mit Graphen kann man Ausfallsicherheit nachweisen Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

5 Motivation Warum Graphen? Prozessabwicklung Fertigungsprozesse bestehen aus verscheidenen Prozessschritten Diese müssen in bestimmter Reihenfolge abgearbeitet werden Durch Graphen kann man die genaue Reihenfolge erstellen Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

6 Terminologie Was ist ein Graph? Ein Graph ist definiert durch G = (V,E) V (vertices): die Menge aller Knoten eines Graphen E (edges): die Menge aller Kanten eines Graphen Eine Kante verbindet genau 2 Knoten Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

7 Terminologie Eigenschaften von Kanten (un)gerichtet Ein Graph kann gerichtet oder ungerichtet sein Ungerichtet: E ist Teilmenge aller 2-elementigen Teilmengen von V Gerichtet: E ist Teilmenge des kartesischen Produktes V V Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

8 Terminologie Eigenschaften von Kanten (un)gerichtet Ein Graph kann gerichtet oder ungerichtet sein Ungerichtet: E ist Teilmenge aller 2-elementigen Teilmengen von V Gerichtet: E ist Teilmenge des kartesischen Produktes V V (un)gewichtet Kanten können mit Gewichten versehen werden Gewichte können positiv oder negativ sein Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

9 Terminologie Nachbarschaft Ein Knoten x heißt Nachbar eines Knotens y in einem ungerichteten Graphen G, wenn x und y zu einer Kante von G gehören Ein Knoten x heißt Vorgänger von y in einem gerichteten Graphen G, wenn (x, y) gerichtete Kante von G ist Analog heißt x Nachfolger von y in G, wenn (y, x) eine gerichtete Kante von G ist Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

10 Terminologie Weg Sei W = (v 1,...,v n ) eine Folge von Knoten aus V mit der Eigenschaft, dass für alle i aus 1,...,n-1 gilt: Die Menge {v i,v i+1 } E, falls G ein ungerichteter Graph ist Das Paar (v i,v i+1 ) E, falls G ein gerichteter Graph ist z.b. A B C D B E Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

11 Terminologie Weg Sei W = (v 1,...,v n ) eine Folge von Knoten aus V mit der Eigenschaft, dass für alle i aus 1,...,n-1 gilt: Die Menge {v i,v i+1 } E, falls G ein ungerichteter Graph ist Das Paar (v i,v i+1 ) E, falls G ein gerichteter Graph ist z.b. A B C D B E Pfad Ein Pfad ist ein Weg in dem jeder Knoten nur höchstens einmal vorkommt z.b. A B E F Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

12 Terminologie Zyklus Ein Zyklus ist ein Weg in dem Start- und Endknoten identisch sind z.b. A B C D B E A Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

13 Terminologie Zyklus Ein Zyklus ist ein Weg in dem Start- und Endknoten identisch sind z.b. A B C D B E A Kreis Ein Kreis ist ein Zyklus in dem nur Start- und Endknoten identisch sind z.b. B C D B Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

14 Terminologie Grad Der Grad d G (v) eines Knotens ist die Anzahl der Kanten, die den Knoten v mit anderen Knoten verbinden In ungerichteten Graphen ist d G (v) die Anzahl der Nachbarn von v In gerichteten Graphen unterscheidet man zwischen Eingangsgrad und Ausgangsgrad eines Knotens Der Eingangsgrad d G (v) ist die Anzahl der Vorgänger von v Der Ausgangsgrad d + G (v) ist die Anzahl der Nachfolger von v Einen Knoten ohne Eingangskanten nennt man Quelle, einen Knoten ohne Ausgangskanten nennt man Senke Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

15 Terminologie Weitere Eigenschaften In einem zusammenhängenden Graph ist jeder Knoten von jedem anderen aus über einen Weg ereichbar Ein Graph, der keine Zyklen enthält, nennt man azyklisch oder Baum Mehrere nicht zusammenhängende Bäume bilden einen Wald Eine Schleife ist eine Kante, die einen Knoten mit sich selbst verbindet G 1 = (V 1, E 1 ) heißt Teilgraph oder Subgraph von G 2 = (V 2, E 2 ), falls V 1 V 2 und E 1 E 2 Umgekehrt heißt G 2 Supergraph oder Obergraph von G 1 Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

16 Datenstrukturen Wie speichert man Graphen im Computer? Es gibt im wesentlichen zwei gebräuchliche Formen: Adjazenzmatrix Adjazenzlisten Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

17 Datenstrukturen Adjazenzmatrix Aufbau Ein Graph mit n Knoten kann durch eine n n-matrix repräsentiert werden Dazu nummeriert man die Knoten von 1 bis n durch und trägt in die Matrix die Beziehungen der Knoten zueinander ein. Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

18 Datenstrukturen Adjazenzmatrix Aufbau Ein Graph mit n Knoten kann durch eine n n-matrix repräsentiert werden Dazu nummeriert man die Knoten von 1 bis n durch und trägt in die Matrix die Beziehungen der Knoten zueinander ein. (un)gerichtet Bei ungerichteten Graphen: { 1, wenn eine Kante Knoten i und j verbindet aij := 0, sonst hier wird nur die halbe Matrix benötigt Bei gerichteten Graphen: { 1, wenn Knoten i Vorgänger von Knoten j ist aij := 0, sonst Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

19 Datenstrukturen Gewichte Bei gewichteten Kanten trägt man das Kantengewicht anstatt der 1 ein Fehlende Kanten werden durch 0 oder gekennzeichnet Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

20 Datenstrukturen Adjazenzliste Aufbau Für jeden Knoten wird eine einfach verkettete Liste erstellt Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

21 Datenstrukturen Adjazenzliste Aufbau Für jeden Knoten wird eine einfach verkettete Liste erstellt (un)gerichtet Bei ungerichteten Graphen: Alle Nachbarn werden an das Ende der Liste des jeweiligen Knotens angehängt Bei gerichteten Graphen: Alle Nachfolger werden an das Ende der Liste des jeweiligen Knotens angehängt Je nach Problemstellung kann man für jeden Knoten auch eine Liste der Vorgänger führen Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

22 Datenstrukturen Gewichte Gewichte werden in den Attributen der Listenelemente gespeichert Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

23 Datenstrukturen Bewertung der Datenstrukturen Adjazenzmatrix Einfach zu implementieren Schnell für Hinzufügen und Löschen von Kanten Schwierig bei nachträglichem Hinzufügen und Löschen von Knoten Viel Speicherplatz nötig (quadratisch anwachsend) Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

24 Datenstrukturen Bewertung der Datenstrukturen Adjazenzmatrix Einfach zu implementieren Schnell für Hinzufügen und Löschen von Kanten Schwierig bei nachträglichem Hinzufügen und Löschen von Knoten Viel Speicherplatz nötig (quadratisch anwachsend) Adjazenzliste Aufwändig zu implementieren Schnell für Hinzufügen und Löschen von Knoten Wenig Speicherplatz nötig Viele graphentheoretische Probleme nur mit Adjazenzlisten in linearer Zeit lösbar Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

25 Suche im Graph Suche im Graph Ziele Wie findet man einen bestimmten Knoten in einem Graph? Wie ist der Graph aufgebaut? Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

26 Suche im Graph Suche im Graph Ziele Wie findet man einen bestimmten Knoten in einem Graph? 2 Arten Wie ist der Graph aufgebaut? Tiefensuche (DFS Depth-First-Search) Breitensuche (BFS Breadth-First-Search) Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

27 Suche im Graph Tiefensuche rekursiv Algorithmus 1 Bestimme den Knoten an dem die Suche beginnen soll 2 Expandiere den Knoten und speichere alle Nachfolger in einem Stack 3 Rufe rekursiv für jeden der Knoten in dem Stack DFS auf 3.1 Falls der Stack leer sein sollte, tue nichts 3.2 Falls das gesuchte Element gefunden worden sein sollte, brich die Suche ab und liefere ein Ergebnis Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

28 Suche im Graph Eigenschaften Schritt 3.2 ist je nach Problemstellung optional Die verwendete Datenstruktur bestimmt auch die Reihenfolge der gefundenen Knoten Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

29 Suche im Graph Eigenschaften Schritt 3.2 ist je nach Problemstellung optional Die verwendete Datenstruktur bestimmt auch die Reihenfolge der gefundenen Knoten Bewertung Geringer Speicherplatzverbrauch Laufzeit: O( V + E ) Problem der Vollständigkeit bei Zyklen und unendlichen Graphen Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

30 Suche im Graph Eigenschaften Schritt 3.2 ist je nach Problemstellung optional Die verwendete Datenstruktur bestimmt auch die Reihenfolge der gefundenen Knoten Bewertung Geringer Speicherplatzverbrauch Laufzeit: O( V + E ) Problem der Vollständigkeit bei Zyklen und unendlichen Graphen Anwendung Topologische Sortierung Zusammenhangskomponenten finden Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

31 Suche im Graph Tiefensuchbaum Der bei der Tiefensuche entstehende Baum nennt man Tiefensuchbaum Die durchgezogenen Linien entsprechen einen rekursiven Aufruf der Tiefensuche Die gestrichelten Linien sind Kanten die im Graph existieren, aber während der Tiefensuche nicht nachgegangen werden Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

32 Suche im Graph Breitensuche Algorithmus 1 Bestimme Anfangsknoten und speichere ihn in einer Warteschlange ab 2 Entnimm Knoten vom Beginn der Warteschlange und markiere ihn 2.1 Falls gesuchtes Element gefunden, gefunden zurücklieferen 2.2 Sonst alle unmarkierten Nachfolger ans Ende der Warteschlange anhänge, die noch nicht in der Warteschlange sind 3 Wiederholen Schritt 2 4 Wenn Warteschlange leer, nicht gefunden zurücklieferen Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

33 Suche im Graph Eigenschaften Schritt 2.1 ist je nach Problemstellung optional Die verwendete Datenstruktur bestimmt auch die Reihenfolge der gefundenen Knoten Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

34 Suche im Graph Eigenschaften Schritt 2.1 ist je nach Problemstellung optional Die verwendete Datenstruktur bestimmt auch die Reihenfolge der gefundenen Knoten Bewertung Hoher Speicherplatzverbrauch Laufzeit: O( V + E ) Problem der Vollständigkeit nur bei unendlichen Graphen ohne Lösung Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

35 Suche im Graph Eigenschaften Schritt 2.1 ist je nach Problemstellung optional Die verwendete Datenstruktur bestimmt auch die Reihenfolge der gefundenen Knoten Bewertung Hoher Speicherplatzverbrauch Laufzeit: O( V + E ) Problem der Vollständigkeit nur bei unendlichen Graphen ohne Lösung Anwendung Allgemein für alle möglichen Distanzprobleme Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

36 Suche im Graph Tiefensuche iterativ Algorithmus 1 Bestimme den Knoten, an dem die Suche beginnen soll 2 Rufe Beschränkte Tiefensuche mit der aktuellen Suchtiefe auf 3 Erhöhe die Suchtiefe um 1 und gehe zu Schritt 2 Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

37 Suche im Graph Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

38 Suche im Graph Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

39 Suche im Graph Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

40 Suche im Graph Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

41 Suche im Graph Eigenschaften Verbesserung der Tiefensuche Kombination aus Tiefensuche und Breitensuche Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

42 Suche im Graph Eigenschaften Verbesserung der Tiefensuche Kombination aus Tiefensuche und Breitensuche Vorteile Vermeidet Problem der Vollständigkeit durch Begrenzung der Suchtiefe Gleicher Speicherplatzverbauch wie bei der rekursiven Tiefensuche Etwas höhere Laufzeit als bei der rekursiven Tiefensuche Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

43 Topologische Sortierung Topologische Sortierung Ziel Durch topologische Sortierung kann man 2 Ziele erreichen Vollständige Ordnung über die Knoten Einen Graphen auf Zyklen testen Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

44 Topologische Sortierung Topologische Sortierung Ziel Durch topologische Sortierung kann man 2 Ziele erreichen Vollständige Ordnung über die Knoten Einen Graphen auf Zyklen testen DAG Ein DAG ist ein directed acyclic graph Bei gerichteten Graphen kann man den Pfeil als eine Beziehung lesen Auf diese Beziehungen wird eine vollständige Ordnung erstellt Bsp.: A kommt vor B Graph muss azyklisch sein Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

45 Topologische Sortierung Topologische Sortierung Eine topologische Sortierung eines DAG G = (V, E): Abbildung ord : V {1,..., n} mit n = V So dass mit (v, w) E auch ord(v) < ord(w) gilt Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

46 Topologische Sortierung Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

47 Topologische Sortierung Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

48 Topologische Sortierung Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

49 Topologische Sortierung Topologische Sortierung durch Tiefensuche Tiefensuche muss nur wenig erweitert werden Vor dem Rückkehren aus einem rekursiven Aufruf legt man den aktuell betrachteten Knoten auf einen Stack Hat man alle Knoten besucht, liegen sie topologisch sortiert auf dem Stack Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

50 Topologische Sortierung Topologische Sortierung durch Tiefensuche Tiefensuche muss nur wenig erweitert werden Vor dem Rückkehren aus einem rekursiven Aufruf legt man den aktuell betrachteten Knoten auf einen Stack Hat man alle Knoten besucht, liegen sie topologisch sortiert auf dem Stack Andere Möglichkeit Ausnutzen der Eigenschaft, dass ein DAG mindesten einen Knoten ohne Vorgänger hat topologische Sortierung azyklischer Graph Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

51 Topologische Sortierung ord[knotentyp]; var lfd.nr. : 0..knotenzahl; Gradnull: stack of knotentyp; Eingrad: array[knotentyp] of 0..knotenzahl-1; setze Eingrad[v] auf den Eingangsgrad von v in G, für alle v V ; übernimm alle Knoten v V mit Eingangsgrad 0 nach Gradnull; lfd.nr := 0; while Gradnull do begin wähle v Gradnull; entferne v aus Gradnull; erhöhe lfd.nr. um 1; ord[v] := lfd.nr.; for all (v,w) E do begin erniedrige Eingrad[w] um 1; if Eingrad[w] = 0 then füge w zu Gradnull hinzu; end; end; if lfd.nr. = knotenzahl then G ist zyklenfrei else G hat zyklen Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

52 Zusammenhang in Graphen Zusammenhang in Graphen Der Zusammenhang eines Graphen sagt viel über die Struktur aus Es gibt verschiedene Arten von Zusammenhang in einem Graph Durch Algorithmen basierend auf Tiefen- oder Breitensuche kann das untersucht werden Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

53 Zusammenhang in Graphen einfacher Zusammenhang Ein ungerichteter Graph ist einfach zusammenhängend, wenn es einen Weg von jedem Knoten zu jeden anderen Knoten im Graph gibt Eine einfache Zusammenhangskomponente eines ungerichteten Graphen G ist ein einfacher zusammenhängender Untergraph von G Eine einfache Erweiterung einer Tiefensuche findet alle zusammenhangskomponenten eines Graphen Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

54 Zusammenhang in Graphen int val[maxv]; int id = 0; struct node{ int v; struct node *next; }; struct node* adj[maxv]; int inval[maxv]; dfs(){ int k,h; for(k = 1; k <= V; k++) val[k] = 0; for(k = 1; k <= V; k++) if(val[k] == 0){ h = id; visit(k); inval[h+1] *= -1; } } visit(int k){ struct node *t; val[k] = ++id; inval[id] = k; for(t = adj[k]; t!= 0; t = t->next) if(val[t->v] == 0) visit(t->v); } Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

55 Zusammenhang in Graphen int val[maxv]; int id = 0; struct node{ int v; struct node *next; }; struct node* adj[maxv]; int inval[maxv]; dfs(){ int k,h; for(k = 1; k <= V; k++) val[k] = 0; for(k = 1; k <= V; k++) if(val[k] == 0){ h = id; visit(k); inval[h+1] *= -1; } } visit(int k){ struct node *t; val[k] = ++id; inval[id] = k; for(t = adj[k]; t!= 0; t = t->next) if(val[t->v] == 0) visit(t->v); } Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

56 Zusammenhang in Graphen adj[] ist eine Adjazenzliste der Knoten Eigentlich eine ganz normale Tiefensuche Mit Ausgabe nach visit(k) könnte man die Zusammenhangskomponenten getrennt ausgeben Besser aber inval[] für späteres Verarbeiten. val[v] gibt die Reihenfolge der Knoten an, in der sie besucht worden sind inval[] ist das inverse Feld dazu. Darin sind Knoten aus der selben Zusammenhangskompopnente benachbart Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

57 Zusammenhang in Graphen zweifacher Zusammenhang Ein ungerichteter Graph ist zweifach zusammenhängend, wenn nach dem Entfernen eines beliebigen Knotens v aus G der verbleibende Graph G-v zusammenhängend bleibt Eine zweifache Zusammenhangskomponente eines ungerichteten Graphen G ist ein zweifach zusammenhängender Untergraph von G Ein Artikulationspunkt in einem zusammenhängenden Graphen ist ein Knoten, der, wenn er gelöscht würde, den Graph in zwei oder mehr einfache Zusammenhangskomponenten zerbrechen lassen würde Eine Brücke in einem zusammenhängenden Graphen ist eine Kante, die, wenn sie gelöscht würde, den Graph in zwei einfache Zusammenhangskomponenten zerbrechen lassen würde Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

58 Zusammenhang in Graphen Gelenkpunkte: A, G, H und J zweifache Zusammenhangskomponenten {A,C,G,D,E,F}, {G,J,L,M}, {B}, {H}, {I}, {K} Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

59 Zusammenhang in Graphen Finden der Artikulationspunkte Wieder bedient man sich der Tiefensuche, um das Problem zu lösen und folgender Aussage: Ein Knoten x ist kein Artikulaionspunkt, falls es für jeden Nachfolger y einen weiter unten im Baum befindlichen Knoten gibt, der (über eine gestrichelte Verbindung) mit einem oberhalb von x im Tiefensuchbaum befindlichen Knoten verbunden ist. Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

60 Zusammenhang in Graphen int visit(int k){ struct node *t; int m, min; val[k] = ++id; min = id; for(t = adj[k]; t!= 0; t = t->next){ if(val[t->v] == 0){ m = visit(t->v); if(m < min) min = m; if(m >= val[k]) printf("%c ", name(k)); } else if(val[t->v] < min) min = val[t->v]; } return min; } Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

61 Zusammenhang in Graphen Ausgabe der Artikulationspunkte visit() bestimmt rekursiv den höchsten Punkt im Baum, der (über eine gestrichelte Verbindung) von irgendeinem Nachfolger des Knotens k erreicht werden kann, und verwendet diese Information, um zu bestimmen, ob k ein Artikulationspunkt ist. Die Artikulationspunkte werden einfach ausgegeben Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

62 Zusammenhang in Graphen Ausgabe der Artikulationspunkte visit() bestimmt rekursiv den höchsten Punkt im Baum, der (über eine gestrichelte Verbindung) von irgendeinem Nachfolger des Knotens k erreicht werden kann, und verwendet diese Information, um zu bestimmen, ob k ein Artikulationspunkt ist. Die Artikulationspunkte werden einfach ausgegeben Problem: Dieser Test kann nicht auf die Wurzel des Tiefensuchbaums angewendet werden. Aber: Wurzel ist Artikulationspunkt, wenn sie 2 oder mehr Nachfolger im Tiefensuchbaum besitzt Wurzel des Tiefensuchbaums ist erster Aufruf von visit() für eine einfach Zusammenhangskomponente Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

63 Zusammenhang in Graphen starker Zusammenhang Ein gerichteter Graph ist stark zusammenhängend, wenn es einen Weg von jedem Knoten zu jedem anderen Knoten im Graph gibt Eine starke Zusammenhangskomponente eines gerichteten Graphen G ist ein stark zusammenhängender Untergraph von G Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

64 Zusammenhang in Graphen Starke Zusammenhangskomponenten: {A,C,G,J,L,M}, {D,E,F}, {H,I}, {B}, {K} Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

65 Zusammenhang in Graphen Algorithmus Entworfen von R. E. Tarjan im Jahre 1972 Erster Algorithmus für dieses Problem der in linearer Zeit abläuft Basiert wieder auf der Tiefensuche Ist der Suche nach Artikulationspunkten sehr ähnlich Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

66 Zusammenhang in Graphen int visit(int k){ struct node *t; int m, min; val[k] = ++id; min = id; stack[p++] = k; for(t = adj[k]; t!= 0; t = t->next){ m = (!val[t->v])? visit(t->v) : val[t->v]; if(m < min) min = m; } if(min == val[k]){ while(stack[p]!= k){ printf(" %c ",name(stack[--p])); val[stack[p]] = V+1; } printf(" \n"); } return min; } Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

67 Zusammenhang in Graphen Algorithmus Verwendet die gleiche Berechnung von min, um den höchsten Knoten im Baum zu finden und gibt diesen zurück Legt die Namen der Knoten auf einen Stack und gibt sie nach Besuchen des letzten Elements der Komponente aus Entscheidende Stelle ist min == val[k]: alle Knoten, die seit Eintritt in die Schleife angetroffen wurden (mit Ausnahme der bereits ausgegebenen), gehören zur selben Komponente wie k Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

68 Zusammenhang in Graphen Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

69 Zusammenhang in Graphen Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

70 Zusammenhang in Graphen Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

71 Zusammenhang in Graphen Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

72 Zusammenhang in Graphen Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

73 Zusammenhang in Graphen Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

74 Zusammenhang in Graphen Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

75 Zusammenhang in Graphen Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

76 Zusammenhang in Graphen Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

77 Zusammenhang in Graphen Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

78 Zusammenhang in Graphen Literatur Algorithmen in C, von Robert Sedgewick Algorithmen und Datenstrukturen, von T. Ottmann / P. Widmayer Graphenalgorithmen (Hallo Welt! 2006), von Philipp Kutzer Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

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

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

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

Datenstrukturen. einfach verkettete Liste

Datenstrukturen. einfach verkettete Liste einfach verkettete Liste speichert Daten in einer linearen Liste, in der jedes Element auf das nächste Element zeigt Jeder Knoten der Liste enthält beliebige Daten und einen Zeiger auf den nächsten Knoten

Mehr

Kap. 6.3: Traversieren von Graphen Kap. 6.4: Elementare Graphalgorithmen

Kap. 6.3: Traversieren von Graphen Kap. 6.4: Elementare Graphalgorithmen Kap. 6.3: Traversieren von Graphen Kap. 6.4: Elementare Graphalgorithmen Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 19. VO DAP2 SS 2008 19. Juni 2008 1

Mehr

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

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

Mehr

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

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

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

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

8 Diskrete Optimierung

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

Mehr

\ E) eines Graphen G = (V, E) besitzt die gleiche Knotenmenge V und hat als Kantenmenge alle Kanten des vollständigen Graphen ohne die Kantenmenge E.

\ E) eines Graphen G = (V, E) besitzt die gleiche Knotenmenge V und hat als Kantenmenge alle Kanten des vollständigen Graphen ohne die Kantenmenge E. Das Komplement Ḡ = (V, ( V ) \ E) eines Graphen G = (V, E) besitzt die gleiche Knotenmenge V und hat als Kantenmenge alle Kanten des vollständigen Graphen ohne die Kantenmenge E. Ein Graph H = (V, E )

Mehr

Zweizusammenhang und starker Zusammenhang

Zweizusammenhang und starker Zusammenhang .. Zeizusammenhang und starker Zusammenhang Carsten Gutenger Vorlesung Algorithmen und Datenstrukturen WS /. Januar Zeizusammenhang Betrachte ein Netzerk (Graph) Z.B. Computernetzerk, Flug- oder Schienennetzerk

Mehr

9. Übung Algorithmen I

9. Übung Algorithmen I INSTITUT FÜR THEORETISCHE INFORMATIK 1 KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft Institut für Theoretische www.kit.edu Informatik Musterlösung

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Datenstrukturen: Anordnung von Daten, z.b. als Liste (d.h. in bestimmter Reihenfolge) Beispiel: alphabetisch sortiertes Wörterbuch... Ei - Eibe - Eidotter... als Baum (d.h.

Mehr

Graphen. Leonhard Euler ( )

Graphen. Leonhard Euler ( ) Graphen Leonhard Euler (1707-1783) 2 Graph Ein Graph besteht aus Knoten (nodes, vertices) die durch Kanten (edges) miteinander verbunden sind. 3 Nachbarschaftsbeziehungen Zwei Knoten heissen adjazent (adjacent),

Mehr

Algorithmen und Datenstrukturen (WS 2007/08) 63

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

Mehr

1 topologisches Sortieren

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

Mehr

Verkettete Datenstrukturen: Bäume

Verkettete Datenstrukturen: Bäume Verkettete Datenstrukturen: Bäume 1 Graphen Gerichteter Graph: Menge von Knoten (= Elementen) + Menge von Kanten. Kante: Verbindung zwischen zwei Knoten k 1 k 2 = Paar von Knoten (k 1, k 2 ). Menge aller

Mehr

Graphen: Datenstrukturen und Algorithmen

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

Mehr

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

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

Informatik 11 Kapitel 2 - Rekursive Datenstrukturen

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

Mehr

Theoretische Informatik 1 WS 2007/2008. Prof. Dr. Rainer Lütticke

Theoretische Informatik 1 WS 2007/2008. Prof. Dr. Rainer Lütticke Theoretische Informatik 1 WS 2007/2008 Prof. Dr. Rainer Lütticke Inhalt der Vorlesung Grundlagen - Mengen, Relationen, Abbildungen/Funktionen - Datenstrukturen - Aussagenlogik Automatentheorie Formale

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

8. Übung zu Algorithmen I 15. Juni 2016

8. Übung zu Algorithmen I 15. Juni 2016 8. Übung zu Algorithmen I 15. Juni 2016 Lisa Kohl Lisa.Kohl@kit.edu (mit Folien von Julian Arz, Timo Bingmann, Sebastian Schlag, Christian Staudt und Christoph Striecks) Nachtrag: Quicksort, alternative

Mehr

Grundlagen Algorithmen und Datenstrukturen TUM Sommersemester 2011 (2) Dozent: Hanjo Täubig

Grundlagen Algorithmen und Datenstrukturen TUM Sommersemester 2011 (2) Dozent: Hanjo Täubig Grundlagen Algorithmen und Datenstrukturen TUM Sommersemester 2011 (2) Dozent: Hanjo Täubig Janosch Maier 3. August 2011 Inhaltsverzeichnis 1 Sortieren 3 1.1 Externes Sortieren..........................

Mehr

ADS: Algorithmen und Datenstrukturen 2

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

Mehr

Das Heiratsproblem. Definition Matching

Das Heiratsproblem. Definition Matching Das Heiratsproblem Szenario: Gegeben: n Frauen und m > n Männer. Bekanntschaftsbeziehungen zwischen allen Männern und Frauen. Fragestellung: Wann gibt es für jede der Frauen einen Heiratspartner? Modellierung

Mehr

Datenstrukturen & Algorithmen

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

Mehr

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen Vorlesung Informatik 2 Algorithmen und Datenstrukturen (18 Bäume: Grundlagen und natürliche Suchbäume) Prof. Dr. Susanne Albers Bäume (1) Bäume sind verallgemeinerte Listen (jedes Knoten-Element kann mehr

Mehr

Algorithmen und Datenstrukturen 2

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

Mehr

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

Vollständiger Graph. Definition 1.5. Sei G =(V,E) ein Graph. Gilt {v, w} E für alle v, w V,v w, dann heißt G vollständig (complete).

Vollständiger Graph. Definition 1.5. Sei G =(V,E) ein Graph. Gilt {v, w} E für alle v, w V,v w, dann heißt G vollständig (complete). Vollständiger Graph Definition 1.5. Sei G =(V,E) ein Graph. Gilt {v, w} E für alle v, w V,v w, dann heißt G vollständig (complete). Mit K n wird der vollständige Graph mit n Knoten bezeichnet. Bemerkung

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 11 (4.6.2014) Binäre Suchbäume II Algorithmen und Komplexität Binäre Suchbäume Binäre Suchbäume müssen nicht immer so schön symmetrisch sein

Mehr

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Datenstrukturen. Mariano Zelke. Sommersemester 2012 Datenstrukturen Mariano Zelke Sommersemester 2012 Einfach verkettete Listen Mariano Zelke Datenstrukturen 2/32 Eine Zeiger-Implementierung von einfach verketteten Listen, also Listen mit Vorwärtszeigern.

Mehr

Breiten- und Tiefensuche in Graphen

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

Mehr

WS 2009/10. Diskrete Strukturen

WS 2009/10. Diskrete Strukturen WS 2009/10 Diskrete Strukturen Prof. Dr. J. Esparza Lehrstuhl für Grundlagen der Softwarezuverlässigkeit und theoretische Informatik Fakultät für Informatik Technische Universität München http://www7.in.tum.de/um/courses/ds/ws0910

Mehr

Grundlagen Datenstrukturen Transitive Hülle Traversierung Kürzeste Wege Spannender Baum Max. Fluss Zuordnungen. 6. Graphen

Grundlagen Datenstrukturen Transitive Hülle Traversierung Kürzeste Wege Spannender Baum Max. Fluss Zuordnungen. 6. Graphen . Graphen viele praktische (Optimierungs-)Probleme sind als graphentheoretische Probleme formulierbar z.b. in Produktionsplanung, Personaleinsatzplanung,.... Grundlagen gerichteter, ungerichteter und gewichteter

Mehr

Übungsblatt 2 - Lösung

Übungsblatt 2 - Lösung Institut für Theoretische Informatik Lehrstuhl Prof. Dr. D. Wagner Übungsblatt 2 - Lösung Vorlesung Algorithmentechnik im WS 08/09 Ausgabe 04. November 2008 Abgabe 8. November, 5:0 Uhr (im Kasten vor Zimmer

Mehr

3. Musterlösung. Problem 1: Boruvka MST

3. Musterlösung. Problem 1: Boruvka MST Universität Karlsruhe Algorithmentechnik Fakultät für Informatik WS 06/07 ITI Wagner. Musterlösung Problem : Boruvka MST pt (a) Beweis durch Widerspruch. Sei T MST von G, e die lokal minimale Kante eines

Mehr

Minimal spannende Bäume

Minimal spannende Bäume http://www.uni-magdeburg.de/harbich/ Minimal spannende Fakultät für Informatik Otto-von-Guericke-Universität 2 Inhalt Definition Wege Untergraphen Kantengewichtete Graphen Minimal spannende Algorithmen

Mehr

Ausarbeitung zum Modulabschluss. Graphentheorie. spannende Bäume, bewertete Graphen, optimale Bäume, Verbindungsprobleme

Ausarbeitung zum Modulabschluss. Graphentheorie. spannende Bäume, bewertete Graphen, optimale Bäume, Verbindungsprobleme Universität Hamburg Fachbereich Mathematik Seminar: Proseminar Graphentheorie Dozentin: Haibo Ruan Sommersemester 2011 Ausarbeitung zum Modulabschluss Graphentheorie spannende Bäume, bewertete Graphen,

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

Kodieren Von Graphen

Kodieren Von Graphen Kodieren Von Graphen Allgemeine Anwendungen: Routenplaner Netzpläne Elektrische Schaltungen Gebäudeerkennung aus Luftaufnahmen Definitionen:? Graph Ein Graph G besteht aus einem geordneten Paar G = (V,E)

Mehr

Customization (Zuschneiden)

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

Mehr

Diskrete Mathematik. Sebastian Iwanowski FH Wedel. Kap. 6: Graphentheorie

Diskrete Mathematik. Sebastian Iwanowski FH Wedel. Kap. 6: Graphentheorie Referenzen zum Nacharbeiten: Diskrete Mathematik Sebastian Iwanowski FH Wedel Kap. 6: Graphentheorie Lang 6 Beutelspacher 8.1-8.5 Meinel 11 zur Vertiefung: Aigner 6, 7 (7.4: Algorithmus von Dijkstra) Matousek

Mehr

Das Briefträgerproblem

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

Mehr

Algorithmen und Datenstrukturen (für ET/IT) Wiederholung: Ziele der Vorlesung. Wintersemester 2012/13. Dr. Tobias Lasser

Algorithmen und Datenstrukturen (für ET/IT) Wiederholung: Ziele der Vorlesung. Wintersemester 2012/13. Dr. Tobias Lasser Algorithmen und Datenstrukturen (für ET/IT) Wintersemester 2012/13 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Wiederholung: Ziele der Vorlesung Wissen: Algorithmische

Mehr

Anmerkungen zur Übergangsprüfung

Anmerkungen zur Übergangsprüfung DM11 Slide 1 Anmerkungen zur Übergangsprüfung Aufgabeneingrenzung Aufgaben des folgenden Typs werden wegen ihres Schwierigkeitsgrads oder wegen eines ungeeigneten fachlichen Schwerpunkts in der Übergangsprüfung

Mehr

4. Kreis- und Wegeprobleme Abstände in Graphen

4. Kreis- und Wegeprobleme Abstände in Graphen 4. Kreis- und Wegeprobleme Abstände in Graphen Abstände in Graphen Definition 4.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. Falls

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 4: Netzplantechnik Gliederung der Vorlesung

Kapitel 4: Netzplantechnik Gliederung der Vorlesung Gliederung der Vorlesung 1. Grundbegriffe 2. Elementare Graphalgorithmen und Anwendungen 3. Kürzeste Wege 4. Netzplantechnik 5. Minimal spannende Bäume 6. Traveling Salesman Problem 7. Flüsse in Netzwerken

Mehr

Kapitel 6: Graphalgorithmen Gliederung

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

Mehr

Binary Decision Diagrams (Einführung)

Binary Decision Diagrams (Einführung) Binary Decision Diagrams (Einführung) Binary Decision Diagrams (BDDs) sind bestimmte Graphen, die als Datenstruktur für die kompakte Darstellung von booleschen Funktionen benutzt werden. BDDs wurden von

Mehr

Grundlagen: Algorithmen und Datenstrukturen

Grundlagen: Algorithmen und Datenstrukturen Grundlagen: Algorithmen und Datenstrukturen Prof. Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Sommersemester 00

Mehr

Graphen. Formale Methoden der Informatik WiSe 2010/2011 teil 2, folie 1 (von 60)

Graphen. Formale Methoden der Informatik WiSe 2010/2011 teil 2, folie 1 (von 60) Graphen Formale Methoden der Informatik WiSe 2010/2011 teil 2, folie 1 (von 60) Teil II: Graphen 1. Einführung 2. Wege und Kreise in Graphen, Bäume 3. Planare Graphen / Traveling Salesman Problem 4. Transportnetzwerke

Mehr

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

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

Mehr

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

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

Mehr

Konzepte der Informatik

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

Mehr

Graphentheorie. Eulersche Graphen. Eulersche Graphen. Eulersche Graphen. Rainer Schrader. 14. November Gliederung.

Graphentheorie. Eulersche Graphen. Eulersche Graphen. Eulersche Graphen. Rainer Schrader. 14. November Gliederung. Graphentheorie Rainer Schrader Zentrum für Angewandte Informatik Köln 14. November 2007 1 / 22 2 / 22 Gliederung eulersche und semi-eulersche Graphen Charakterisierung eulerscher Graphen Berechnung eines

Mehr

Algorithmen und Datenstrukturen in der Bioinformatik Viertes Übungsblatt WS 05/06 Musterlösung

Algorithmen und Datenstrukturen in der Bioinformatik Viertes Übungsblatt WS 05/06 Musterlösung Konstantin Clemens Johanna Ploog Freie Universität Berlin Institut für Mathematik II Arbeitsgruppe für Mathematik in den Lebenswissenschaften Algorithmen und Datenstrukturen in der Bioinformatik Viertes

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

Kürzeste Wege in Graphen. Orte mit Straßenverbindungen. Coma I Rolf Möhring

Kürzeste Wege in Graphen. Orte mit Straßenverbindungen. Coma I Rolf Möhring Kürzeste Wege in Graphen Orte mit Straßenverbindungen Orte als Knoten eines Graphen Straßenverbindungen als Kanten eines Graphen Ungerichteter Graph G = (V,E) Kanten Knoten Knotenmenge V = {,,n} oder {,,n

Mehr

11.1 Grundlagen - Denitionen

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

Mehr

Algorithmen und Datenstrukturen Suchbaum

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

Mehr

Gliederung. 5. Compiler. 6. Sortieren und Suchen. 7. Graphen

Gliederung. 5. Compiler. 6. Sortieren und Suchen. 7. Graphen 5. Compiler Gliederung 1. Struktur eines Compilers 2. Syntaxanalyse durch rekursiven Abstieg 3. Ausnahmebehandlung 4. Arrays und Strings 6. Sortieren und Suchen 1. Grundlegende Datenstrukturen 2. Bäume

Mehr

Einführung in die Informatik 2

Einführung in die Informatik 2 Einführung in die Informatik 2 Listen & Bäume Sven Kosub AG Algorithmik/Theorie komplexer Systeme Universität Konstanz E 202 SvenKosub@uni-konstanzde Sprechstunde: Freitag, 14:00-15:00 Uhr, onv Sommersemester

Mehr

KAPITEL 3 MATCHINGS IN BIPARTITEN GRAPHEN

KAPITEL 3 MATCHINGS IN BIPARTITEN GRAPHEN KAPITEL 3 MATCHINGS IN BIPARTITEN GRAPHEN F. VALLENTIN, A. GUNDERT 1. Definitionen Notation 1.1. Ähnlich wie im vorangegangenen Kapitel zunächst etwas Notation. Wir beschäftigen uns jetzt mit ungerichteten

Mehr

Klausur Informatik B April Teil I: Informatik 3

Klausur Informatik B April Teil I: Informatik 3 Informatik 3 Seite 1 von 8 Klausur Informatik B April 1998 Teil I: Informatik 3 Informatik 3 Seite 2 von 8 Aufgabe 1: Fragekatalog (gesamt 5 ) Beantworten Sie folgende Fragen kurz in ein oder zwei Sätzen.

Mehr

Fortgeschrittene Netzwerk- und Graph-Algorithmen

Fortgeschrittene Netzwerk- und Graph-Algorithmen Fortgeschrittene Netzwerk- und Graph-Algorithmen Dr. Hanjo Täubig Lehrstuhl für Eziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Wintersemester 2007/08

Mehr

Minimal spannender Baum

Minimal spannender Baum Minimal spannender Baum 16 1 2 21 5 11 19 6 6 3 14 33 10 5 4 18 Die Kreise zeigen die vorgesehenen Standorte neu zu errichtender Filialen einer Bank. Entlang der bestehenden Straßen sollen Telefonleitungen

Mehr

Bäume und Wälder. Definition 1

Bäume und Wälder. Definition 1 Bäume und Wälder Definition 1 Ein Baum ist ein zusammenhängender, kreisfreier Graph. Ein Wald ist ein Graph, dessen Zusammenhangskomponenten Bäume sind. Ein Knoten v eines Baums mit Grad deg(v) = 1 heißt

Mehr

Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5

Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5 Robert Elsässer Paderborn, den 15. Mai 2008 u.v.a. Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5 AUFGABE 1 (6 Punkte): Nehmen wir an, Anfang bezeichne in einer normalen

Mehr

Graphenalgorithmen I

Graphenalgorithmen I enalgorithmen I Tobias Pröger 21. Dezember 2016 Erklärung: Diese Mitschrift ist als Ergänzung zur Vorlesung gedacht. Wir erheben keinen Anspruch auf Vollständigkeit und Korrektheit. Wir sind froh über

Mehr

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

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

Mehr

Einführung in Heuristische Suche

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

Mehr

2. Repräsentationen von Graphen in Computern

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

Mehr

MafI I: Logik & Diskrete Mathematik (F. Hoffmann)

MafI I: Logik & Diskrete Mathematik (F. Hoffmann) Lösungen zum 14. und letzten Aufgabenblatt zur Vorlesung MafI I: Logik & Diskrete Mathematik (F. Hoffmann) 1. Ungerichtete Graphen (a) Beschreiben Sie einen Algorithmus, der algorithmisch feststellt, ob

Mehr

2 Tiefen- und Breitensuche

2 Tiefen- und Breitensuche 2 Tiefen- und Breitensuche Übersicht 2.1 SpannendeBäume... 21 2.2 WiefindetmanspannendeBäume?... 24 2.3 AnwendungenvonBFSundDFS... 29 2.4 Aufgaben... 33 2.1 Spannende Bäume Vor nicht allzu langer Zeit

Mehr

Algorithmen II Vorlesung am

Algorithmen II Vorlesung am Algorithmen II Vorlesung am 0..0 Minimale Schnitte in Graphen INSTITUT FÜR THEORETISCHE INFORMATIK PROF. DR. DOROTHEA WAGNER KIT Universität des Landes Baden-Württemberg und Algorithmen nationales Forschungszentrum

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Binärbaum Suchbaum Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 356 Datenstruktur Binärbaum Strukturrepräsentation des mathematischen Konzepts Binärbaum

Mehr

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

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

Mehr

13. Binäre Suchbäume

13. Binäre Suchbäume 1. Binäre Suchbäume Binäre Suchbäume realiesieren Wörterbücher. Sie unterstützen die Operationen 1. Einfügen (Insert) 2. Entfernen (Delete). Suchen (Search) 4. Maximum/Minimum-Suche 5. Vorgänger (Predecessor),

Mehr

Punkt-in-Polygon-Suche Übersicht

Punkt-in-Polygon-Suche Übersicht Folie 1 von 43 Punkt-in-Polygon-Suche Übersicht! Praxisbeispiel/Problemstellung! Zählen von Schnittpunkten " Schnitt einer Halbgerade mit der Masche " Aufwandsbetrachtung! Streifenkarte " Vorgehen und

Mehr

3. Binäre Suchbäume. 3.1 Natürliche binäre Suchbäume. EADS 3.1 Natürliche binäre Suchbäume 78/598 ľernst W. Mayr

3. Binäre Suchbäume. 3.1 Natürliche binäre Suchbäume. EADS 3.1 Natürliche binäre Suchbäume 78/598 ľernst W. Mayr 3. Binäre Suchbäume 3.1 Natürliche binäre Suchbäume Definition 18 Ein natürlicher binärer Suchbaum über einem durch total geordneten Universum U ist ein als interner Suchbaum organisierter Binärbaum (also:

Mehr

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen SS 2009 Grundlagen: Algorithmen und Datenstrukturen Übungsblatt 11 Prof. Dr. Helmut Seidl, S. Pott,

Mehr

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14

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

Mehr

C- Kurs 09 Dynamische Datenstrukturen

C- Kurs 09 Dynamische Datenstrukturen C- Kurs 09 Dynamische Datenstrukturen Dipl.- Inf. Jörn Hoffmann jhoffmann@informaak.uni- leipzig.de Universität Leipzig InsAtut für InformaAk Technische InformaAk Flexible Datenstrukturen Institut für

Mehr

Algorithmen und Datenstrukturen 2-2. Seminar -

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

Mehr

4 Greedy-Algorithmen (gierige Algorithmen)

4 Greedy-Algorithmen (gierige Algorithmen) Greedy-Algorithmen (gierige Algorithmen) Greedy-Algorithmen werden oft für die exakte oder approximative Lösung von Optimierungsproblemen verwendet. Typischerweise konstruiert ein Greedy-Algorithmus eine

Mehr

Informatik II Vorlesung am D-BAUG der ETH Zürich

Informatik II Vorlesung am D-BAUG der ETH Zürich Informatik II Vorlesung am D-BAUG der ETH Zürich Vorlesung 9, 2.5.2016 [Nachtrag zu Vorlesung : Numerische Integration, Zusammenfassung Objektorientierte Programmierung] Dynamische Datenstrukturen II:

Mehr

Wiederholung zu Flüssen

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

Mehr

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

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

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

Mehr

Aufgabe 4.2 Sei G = (V, E, l) ein ungerichteter, gewichteter und zusammenhängender Graph.

Aufgabe 4.2 Sei G = (V, E, l) ein ungerichteter, gewichteter und zusammenhängender Graph. Aufgabe 4.2 Sei G = (V, E, l) ein ungerichteter, gewichteter und zusammenhängender Graph. a) Es seien W 1 = (V, E 1 ), W 2 = (V, E 2 ) Untergraphen von G, die beide Wälder sind. Weiter gelte E 1 > E 2.

Mehr

Was bisher geschah. 1. Zerlegung in monotone Polygone 2. Triangulierung der monotonen Teilpolygone

Was bisher geschah. 1. Zerlegung in monotone Polygone 2. Triangulierung der monotonen Teilpolygone Was bisher geschah Motivation, Beispiele geometrische Objekte im R 2 : Punkt, Gerade, Halbebene, Strecke, Polygon, ebene Zerlegung in Regionen (planare Graphen) maschinelle Repräsentation geometrischer

Mehr

Kombinatorische Optimierung

Kombinatorische Optimierung Juniorprof. Dr. Henning Meyerhenke 1 Henning Meyerhenke: KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Vorlesung 4 Programm des

Mehr

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

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

Mehr

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

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

Mehr