Graphen und Graphalgorithmen

Größe: px
Ab Seite anzeigen:

Download "Graphen und Graphalgorithmen"

Transkript

1 lgorithmen und Datenstrukturen Seite. Kapitel Graphen und Graphalgorithmen Graph Menge von Objekten ( Knoten ) + eziehungen zwischen den Objekten ( Kanten ). in Graph stellt diese eziehungen graphisch dar. eispiele Objekte Städte Stellungen beim Schachspiel Zustände eines utomaten WWW-Seiten eziehungen zwischen den Objekten es gibt eine Flugverbindung zwischen den Städten es gibt einen Zug von einer Stellung zur anderen es gibt einen Übergang zwischen zwei Zuständen es gibt einen Link zwischen den beiden Seiten Definition: (endlicher) Graph in Graph G ist ein Paar G = ( V, ) mit: V: endliche, nichtleere Menge von Knoten : Menge von Kanten: V V. Knoten Kante Knoten ezeichnungen: Wir unterscheiden: gerichtete Graphen ( ( v, v ) ( v, v ), { v, v } V ); Kanten als. ungerichtete Graphen (Symmetrie: ( v, v ) ( v, v ), { v, v } V ) Kanten als. 3 gerichteter Graph 3 ungerichteter Graph Ungerichtete Graphen sind Spezialfälle gerichteter Graphen und lassen sich stets als solche darstellen.

2 lgorithmen und Datenstrukturen Seite. ls Teilgraph eines Graphen mit: V' V und '. G = ( V, ) bezeichnet man einen Graphen G' = ( V', ' ) In einem ungerichteten Graphen heißen zwei Knoten v und v benachbart oder adjazent, falls ( v, v ). In einem gerichteten Graphen heißen zwei Knoten v und v benachbart oder adjazent, falls ( v, v ) oder ( v, v ). Der Grad eines Knotens ist die nzahl der von ihm ausgehenden Kanten. Das Königsberger rückenproblem: Ist es möglich, ausgehend von einem der Punkte,, C oder D, alle rücken einmal zu überqueren und wieder an den usgangspunkt zurückzukehren? (eispiel für einen ungerichteten Multigraphen, d.h. zwei Knoten können durch mehr als eine Kante verbunden sein) genau dann lösbar, wenn der Grad jedes Knotens gerade ist (uler 736). in Weg (Pfad) der Länge n vom Knoten v zum Knoten v ist eine Folge von Knoten ( w 0, w,, w n ) mit w 0 = v, w n = v, w i V, 0 i n und ( w i, w i + ). In einem einfachen Weg sind alle Knoten paarweise verschieden:, 0 i, j n, i j. w i w j usnahme: w 0 = w n ist erlaubt. in Zyklus ist ein einfacher Weg mit w 0 = w n, n. in ulerscher Kreis ist ein spezieller Zyklus, bei dem jede Kante genau einmal durchlaufen wird. in Hamiltonscher Kreis ist ein Zyklus, der jeden Knoten genau einmal durchläuft. In einem ungerichteten Graphen heißt ein Knoten v mit dem Knoten v verbunden, falls es einen Weg von v nach v gibt. In einem gerichteten Graphen heißen zwei Knoten v und v stark verbunden, falls es einen Weg von v nach v und von v nach v gibt. in ungerichteter Graph heißt zusammenhängend, wenn alle Knoten paarweise miteinander verbunden sind. ine (Zusammenhangs-)Komponente von G ist ein maximaler zusammenhängender Teilgraph von G. ine stark verbundene Komponente eines gerichteten Graphen ist ein maximaler Teilgraph (maximale Knoten- und Kantenmenge), in dem alle Knoten paarweise stark verbunden sind.

3 lgorithmen und Datenstrukturen Seite.3 emerkung: äume sind Spezialfälle von Graphen. Den Knoten und speziell den Kanten eines Graphen sind häufig weitere Informationen zugeordnet. markierte Graphen. eispiele für Kantenmarkierungen: edingungen für den Übergang von einem Knoten zum anderen (z..: endl. utomaten). ntfernungen oder Reisezeiten in einem Verkehrsnetz. allgemein: Kosten für den Übergang von einem Knoten auf einen benachbarten Knoten Graph G Graph G Hierbei gilt: Die Kosten eines Weges entsprechen der Summe der Kosten aller beteiligten Kanten.. Speicherdarstellung von Graphen public abstract class NodeSet { public NodeSet() {} public abstract void insert ( int );// Knoten sind durch ihre int-schlüssel repräsentiert public abstract void delete( int ); public abstract boolean ismpty(); public abstract boolean contains ( int ); public abstract void nextlement(); public abstract void union ( NodeSet ); } public abstract class Graph { public int n; // nzahl der Knoten public abstract NodeSet neighbors( int ); public abstract float cost ( int, int ); public void breadthfirsttraversal()... }

4 lgorithmen und Datenstrukturen Seite. s gibt verschiedene Datenstrukturen zur Implementierung von Graphen. Die geeignete Speicherdarstellung ist in der Regel vom nwendungsfall abhängig. s stehen sich dabei gegenüber: der benötigte Speicheraufwand die ffizienz, mit der Zugriffe auf Knoten/Kanten durchgeführt werden können. Wir stellen im folgenden die beiden gebräuchlichsten Datenstrukturen zur Implementierung der obigen abstrakten Klasse Graph vor. Diese sind als statische Strukturen zu verstehen, d.h. die Unterstützung dynamischer infügungen und ntfernungen während der Laufzeit eines darauf basierenden lgorithmus ist kein vorrangiges Ziel... djazenzmatrix Gegeben sei ein Graph G = ( V, ) mit V = n. Seien im folgenden die Knoten mit bis n durchnumeriert. ine djazenzmatrix ist eine boolsche n n-matrix mit: ij [, ] = 0 falls ( v i, v j ) sonst djazenzmatrix zu Graph G : Die djazenzmatrix eines ungerichteten Graphen ist symmetrisch. s genügt daher die Speicherung der oberen Dreiecksmatrix. Werden in die Kosten der Kanten eines markierten Graphen eingetragen, so nennt man eine markierte djazenzmatrix oder Kostenmatrix. Nichtexistierende Kanten werden dabei durch ein ausgewähltes Symbol (hier: ) bezeichnet. Für alle i, i n, gilt ii [, ] = 0. Markierte djazenzmatrix zu Graph G :

5 lgorithmen und Datenstrukturen Seite. Für die Graphdarstellung mit djazenzmatrizen gilt: Vorteil: die xistenz einer bestimmten Kante kann in O() Zeit ermittelt werden. Nachteile: hoher Platzbedarf : On ( ) (bei kleiner Kantenanzahl unverhältnismäßig). hohe Initialisierungszeit von On ( ). lgorithmen, die den gesamten Graphen betrachten: Θ n ( ) ufwand... djazenzliste Jedem der n Knoten wird eine Liste aller seiner adjazenten Knoten (Nachfolger) zugeordnet. Für einen effizienten Zugriff werden die Listenköpfe in einem rray vom Typ djazenzliste organisiert: djazenzliste zu Graph G : 3 ^ 3 ^ 3 3 ^ ^ ^ Im Falle von markierten Graphen können die Listenelemente weitere Informationen, wie etwa die Kosten der jeweiligen Kante, enthalten. Für die Darstellung mit djazenzlisten gilt: Vorteile: der Platzbedarf beträgt nur On ( + ). alle Nachbarn eines Knotens werden in linearer Zeit (in der nzahl der Kanten, die von diesem Knoten ausgehen) gefunden. Nachteil: der Zugriff auf eine bestimmte Kante ( vw, ) ist nicht immer in konstanter Zeit möglich, da die djazenzliste von v zu durchlaufen ist.. Graphdurchläufe Problem: Man besuche systematisch alle Knoten eines Graphen G = ( V, ), die von einem Knoten v aus erreichbar sind. uf der Lösung dieses Grundproblems bauen die meisten Graphalgorithmen auf.

6 lgorithmen und Datenstrukturen Seite.6 Definition: in Graphdurchlauf beginnt mit einem Knoten v V, der sogenannten Wurzel, und sucht jeden von v aus erreichbaren Knoten in G auf. Die Menge dieser Knoten bildet zu v einen Wurzelgraphen. Der Graphdurchlauf erzeugt einen aum der besuchten Knoten; dieser wird unendlich, falls der Wurzelgraph mindestens einen Zyklus enthält. Der Durchlauf wird daher dort abgebrochen, wo er auf einen bereits zuvor besuchten Knoten trifft. s gibt zwei prinzipielle nsätze, einen Graphen systematisch zu durchlaufen: den Tiefendurchlauf und den reitendurchlauf. Tiefendurchlauf (depth-first-search) Prinzip: usgehend von v wird ein zu v adjazenter Knoten v' V besucht. evor nun weitere zu v adjazente Knoten betrachtet werden, wird das Verfahren rekursiv auf v angewandt. Der auf diese Weise erzeugte aum heißt depth-first Spannbaum (depth-first spanning tree). Depth-first Spannbaum zu Graph G (Startknoten v = ): 3,,,3,3, Die folgende Methode depthfirsttraversal erzeugt bzw. durchläuft für jede Komponente des Graphen einen depth-first Spannbaum. Die Knoten seien dabei mit 0,..., n - bezeichnet. s wird eine rekursive Hilfsmethode depthsearch verwendet: public void depthsearch ( int v, boolean visited[] ) { int w; visited[v] = true; Verarbeitung des Knotens v...; Für alle w neighbors(v) (* aus djazenzliste / djazenzmatrix *) if (!visited[w]) depthsearch(w, visited); }

7 lgorithmen und Datenstrukturen Seite.7 void depthfirsttraversal() { boolean visited[] = new boolean [n]; int v ; for (v = 0; v < n; v++) visited[v] = false; for (v = 0; v < n; v++) if (!visited[v]) depthsearch(v, visited); } Laufzeitverhalten des Tiefendurchlaufs im schlechtesten Fall: mit djazenzliste: On ( + ) = Omaxn ( (, ) ). mit djazenzmatrix: On ( ). reitendurchlauf (breadth-first-search) Prinzip: usgehend von v werden zunächst alle zu v adjazenten Knoten besucht und in einer Schlange notiert. nschließend werden nacheinander die Knoten in der Schlange auf dieselbe Weise behandelt, wobei bereits besuchte Knoten übergangen werden. ebenenweiser Durchlauf Der auf diese Weise erzeugte aum heißt breadth-first Spannbaum (breadth-first spanning tree). readth-first Spannbaum zu Graph G (Startknoten v = ): Level Level 3,,3, Level 3,,,3, Die folgende Methode breadthfirsttraversal erzeugt bzw. durchläuft für jede Komponente des Graphen einen breadth-first Spannbaum. ls Datenstruktur zur Verwaltung der noch zu besuchenden Knoten wird eine Schlange (Queue) verwendet. Die Knoten seien mit 0,..., n - bezeichnet.

8 lgorithmen und Datenstrukturen Seite.8 public void breadthfirsttraversal() { boolean visited[] = new boolean [n]; int v, w, w ; Queue q; // Schlange von Knoten mit Queue-Methoden for (v = 0; v < n; v++) visited[v] = false; q = new Queue(); for (v = 0; v < n; v++) { if (!visited[v]) { q.enqueue(v); visited[v] = true; while (!q.ismpty()) { q.dequeue(w); Verarbeitung des Knotens w...; Für alle w neighbors(w) // aus djazenzliste / djazenzmatrix if (!visited[w ]) { q.enqueue(w ); visited[w ] = true;} } // end while } // end if } // end for } // end breadthfirsttraversal Das Laufzeitverhalten des reitendurchlaufs ist dasselbe wie beim Tiefendurchlauf..3 estimmung kürzester Wege in Graphen.3. Single Source Shortest Path-Problem Problem: Gegeben sei ein (gerichteter) Graph G = ( V, ), dessen Kanten mit nicht-negativen reellen Zahlen (Kosten) beschriftet sind. ufgabe ist es, für einen beliebigen Knoten v V die kürzesten Wege zu allen anderen Knoten in G zu berechnen, wobei die Länge eines Weges durch die Summe der Kosten der Kanten beschrieben ist (single source shortest path-problem).

9 lgorithmen und Datenstrukturen Seite.9 Der lgorithmus von Dijkstra (99) Prinzip: usgehend von v wird G sukzessive bearbeitet, wobei die Knoten und Kanten des bereits bearbeiteten Teilgraphen von G jeweils in zwei Klassen eingeteilt werden: grüne und gelbe Knoten bzw. gelbe und rote Kanten. Dabei gilt die folgende Klassifizierung: Knoten Kanten Grün Gelb Gelb Rot Knoten, bei denen bereits alle Kanten zu Nachfolgern betrachtet wurden (d.h. diese liegen ebenfalls im Teilgraphen). Knoten, bei denen die ausgehenden Kanten noch nicht betrachtet wurden ( Peripherie des Teilgraphen). Normale Kanten des Teilgraphen. ilden einen aum der kürzesten Wege innerhalb des Teilgraphen (Lösung eines Teilproblems). Jedem Knoten des Teilgraphen wird weiterhin der kürzeste bstand zu v über Kanten des Teilgraphen (rote Kanten) zugeordnet. Der lgorithmus beginnt mit v als einzelnem gelben Knoten. Schrittweise wächst der Teilgraph dadurch, dass derjenige gelbe Knoten grün gefärbt wird, der den minimalen bstand zu v besitzt. lle noch nicht betrachteten Nachfolger dieses Knotens werden als gelbe Knoten und die Verbindungskanten als rote Kanten in den Teilgraphen aufgenommen. Für bereits gelb markierte Nachfolgerknoten ist der bisher bekannte kürzeste Pfad (rote Kanten) gegebenenfalls zu korrigieren. Der lgorithmus terminiert, wenn alle von v aus erreichbaren Knoten in G bearbeitet (grün gefärbt) sind. eispiel: Gegeben sei der folgende Graph: C 90 0 D F 0 Sei der Knoten, für den die kürzesten Wege zu bestimmen sind. Im folgenden zeigen wir die Situationen, die sich jeweils nach einer Markierung des nächsten gelben Knotens als grün ergeben: Die gestrichelten Kanten stellen dabei die gelben Kanten des Teilgraphen dar, rote Kanten sind als fett und die restlichen Kanten durch normale Striche gekennzeichnet. Grüne Knoten sind fett, gelbe Knoten gestrichelt, die restlichen Knoten normal dargestellt.

10 lgorithmen und Datenstrukturen Seite. Schritt grün (gelb) markiert: usgangsgraph mit markierten Knoten und Kanten aum der kürzesten Wege ( rote Kanten) (,,F) F F C D (C,D) F F C D 70 C D 3 C (F korrig.) F C D F ( korrig.) D 6 C 0 C 0 C 0 C D 70 F D 70 F D 70 F D 70 F C F C F C F D D D

11 lgorithmen und Datenstrukturen Seite. etrachten wir nun den lgorithmus von Dijkstra in Java-Notation. Dabei gelten die folgenden Vereinbarungen: der Startknoten v V wird beim ufruf des lgorithmus spezifiziert. dist[w] ordnet jedem Knoten w seinen (bisherigen) minimalen bstand zu v zu. neighbors(w) liefert die Menge aller Nachfolger von w (z.. über djazenzliste). cost(w, w ) sei das Kostenmaß der Kante von w nach w. Weiterhin seien für den lgorithmus die Variablen green und yellow vom abstrakten Typ NodeSet vereinbart. Insbesondere die geeignete Organisation der Knotenmenge yellow ist für die Laufzeit des lgorithmus von edeutung. public void dijkstra ( int v ) { int dist[] = new int [n]; int w, w ; NodeSet green, yellow, allnodes; green = new NodeSet(); yellow = new Nodeset(); yellow.insert(v); dist[v] = 0; while (!yellow.ismpty()) { () wähle den Knoten w aus yellow mit minimalem Wert dist[w]; green.insert(w); yellow.delete(w); // w grün färben () for (each w aus neighbors(w)) { // über djazenzliste / djazenzmatrix allnodes = new NodeSet(); allnodes.union(yellow); allnodes.union(green); if (! allnodes.contains(w ) { // Knoten w noch nicht besucht färbe die Kante (w, w ) rot; (* bisher kürzester Weg *) yellow.insert (w ); dist[w ] = dist[w] + cost(w, w ); } else if (yellow.contains(w )) { // w über einen neuen Weg erreicht if (dist[w ] > dist[w] + cost(w, w )) { färbe die Kante (w, w ) rot; färbe die bisher rote Kante zu w gelb; dist[w ] = dist[w] + cost(w, w ); } else färbe (w, w ) gelb else // w bereits endgültig bearbeitet (w in green) färbe (w, w ) gelb } // end if } // end for } // end while } // end dijkstra

12 lgorithmen und Datenstrukturen Seite. emerkung: ei Terminierung des lgorithmus sind alle von v aus erreichbaren Knoten grün. s können jedoch nicht erreichbare Knoten auftreten; diese bleiben ungefärbt. Laufzeitanalyse Die Laufzeitanalyse hängt ab von den zugrundeliegenden Datenstrukturen. Wir betrachten im folgenden zwei Varianten: (I) Der Graph G sei über eine Kostenmatrix cost[i, j] (mit inträgen für nicht-existierende Kanten) repräsentiert; die Kostenwerte dist[i] seien über ein rray realisiert (initialisiert als ). Weiterhin werden zwei rrays father und green verwendet: father[i] : repräsentiert den Vorgängerknoten von Knoten i im aum der roten Kanten und damit die roten Kanten selbst. gelbe Kanten sind für kürzeste Wege irrelevant nicht explizit gespeichert. green[i] : boolescher Wert, der angibt, ob Knoten i bereits grün gefärbt wurde. Implementierung von green.contains(w) green[w] = true die Menge der gelben Knoten ist implizit (dist[i] < ) gegeben. Der ufwand des lgorithmus setzt sich dann zusammen aus: () Durchlauf des rrays dist, um den gelben Knoten mit minimalem bstand zum usgangsknoten zu finden ufwand On (). () Durchlauf einer Zeile der Matrix cost[i, ], um alle Nachfolger des neuen grünen Knotens zu finden; dist-wert sowie father-intrag werden gegebenenfalls korrigiert ufwand On (). Da () und () n-mal ausgeführt werden: Gesamtaufwand des lgorithmus: On ( ).

13 lgorithmen und Datenstrukturen Seite.3 (II) G ist durch djazenzlisten mit Kosteneinträgen dargestellt. Weiterhin gebe es rrays dist, father und green wie oben. Der NodeSet yellow der gelben Knoten sei nun jedoch über einen partiell geordneten Heap mit dem bstand als Ordnungskriterium verwaltet. Die Heap-inträge seien dabei doppelt verkettet und ein weiteres rray heapaddress enthalte für jeden gelben Knoten dessen Position im Heap (für effizientes update der Kosten). Jeder inzelschritt des lgorithmus setzt sich dann zusammen aus: () ntfernen des gelben Knotens mit minimalem bstand aus dem Heap ufwand O( logn). n-mal ausgeführt Gesamtaufwand für (): On ( logn). () Finden der m Nachfolger über die djazenzliste: ufwand Om' ( ). neue Nachfolger: infügen als gelbe Knoten in den Heap ( O( logn) ). bereits gelbe Nachfolger: gegebenenfalls Korrektur der inträge im Heap (über heapaddress und doppelte Verkettung: O( logn) ). bereits grün gefärbte Nachfolger: werden übergangen. ufwand insgesamt: Om' ( logn). Da m' = ergibt sich ein Gesamtaufwand über alle Schritte des lgorithmus für () von: O( logn). Gesamtaufwand des lgorithmus: O( logn). im llgemeinen: > n Vergleich der beiden Implementierungen Die Implementierung über djazenzlisten ist effizienter, falls «n. Die Implementierung über djazenzlisten hat einen Speicherplatzbedarf von nur On ( + ) im Vergleich zu On ( ) für die Implementierung mit einer Kostenmatrix.

14 lgorithmen und Datenstrukturen Seite..3. ll Pairs Shortest Path-Problem Problem: Vorgaben wie beim single source shortest path-problem. estimmung der kürzesten Wege zwischen allen Paaren von Knoten des Graphen G, zwischen denen eine Verbindung besteht. Das Problem kann trivialerweise durch iterative nwendung des lgorithmus von Dijkstra auf alle Knoten des Graphen gelöst werden. Wir stellen hier jedoch einen wesentlich einfacheren lgorithmus vor, der das Problem direkt löst: Der lgorithmus von Floyd Prinzip: Die Knoten des Graphen G seien mit bis n durchnumeriert. Der lgorithmus berechnet eine Folge G 0 = G, G,, G n von Graphen, wobei Graph G i, i n, wie folgt definiert ist: besitzt die gleiche Knotenmenge wie G G i Gi in existiert eine Kante von Knoten v nach Knoten w mit Kosten α es gibt einen Pfad von v nach w, der nur Knoten aus {,, i} verwendet und der kürzeste dieser Pfade hat die Länge α. G i entsteht durch folgende Modifikation von G i im i-ten Schritt des lgorithmus: Seien v,, v r die Vorgänger und w,, w s die Nachfolger von Knoten i im Graphen G i, so betrachtet man alle Paare ( v j, w k ), j r und k s. v j α i γ β w k falls noch keine Kante von v j nach w k existiert, so erzeuge eine entsprechende Kante. α β existiert bereits eine solche Kante mit Kosten γ, so ersetze γ durch α+ β < γ. +, falls G i erfüllt dabei wiederum obige igenschaften, denn: in Gi waren alle kürzesten Pfade durch Kanten repräsentiert, die nur auf asis der Zwischenknoten {,, i } entstanden sind. jetzt sind alle Pfade bekannt, die Knoten aus {,, i} benutzen. die Kosten aller kürzesten Wege von Graph G repräsen- Nach n Schritten sind in Graph tiert. G n

15 lgorithmen und Datenstrukturen Seite. eispiel Gegeben sei der eispielgraph von oben, wobei die Knoten numeriert sind: G Im ersten Schritt werden alle Paare von Vorgängern (3) und Nachfolgern (,,6) von Knoten betrachtet. In den Graphen werden dabei die folgenden Kanten G eingefügt, resultierend im Graphen : Kante (3,) mit Kosten 70 und Kante (3,) mit Kosten. G 0 G Im nächsten Schritt betrachten wir innerhalb von die Vorgänger (,3) und Nachfolger (3,) von Knoten. Hinzugefügte Kanten (resultierend in Graph G ) sind hierbei: Kante (,3) (Kosten ), Kante (,) (Kosten 70), Kante (3,) (Kosten ). G G Denselben Vorgang wiederholen wir nun für die Knoten 3,, und 6 :

16 lgorithmen und Datenstrukturen Seite.6 Knoten Vorgänger Nachfolger Neue Kanten Veränderte Kanten 3,,,,, 6 (,): Kosten 0 (,): Kosten 0 (,6): Kosten 0 (,6): Kosten 0,, 3 (,): Kosten 70,, 3,, ,, 3 (,): Kosten 70 (,): Kosten (3,): Kosten, der durch die folgende Kosten- ls Resultat ergibt sich ein gerichteter Graph matrix beschrieben wird: G 6 G nmerkung: Die Knoten,, 3 und 6 sind von Knoten aus und die Knoten bis sind von Knoten 6 aus nicht erreichbar; von Knoten aus erreicht man keinen anderen Knoten. Die entsprechenden Kanten existieren daher im rgebnisgraphen G 6 nicht; es gibt keine (und damit keine kürzeste) zugehörige Verbindung. Im folgenden betrachten wir eine konkrete, vereinfachte Implementierung des lgorithmus von Floyd auf asis der Implementierung des Graphen mit Hilfe einer Kostenmatrix. Sei C die Kostenmatrix für den usgangsgraphen G = ( V, ). Diese sei als globale Variable vorgegeben. Dabei sei vereinbart, dass Cii [, ] = 0, i n, und Cij [, ] =, falls es keine Kante von Knoten i nach Knoten j in G gibt.

17 lgorithmen und Datenstrukturen Seite.7 double [][] floyd () { double [][]a= new double [n][n]; Zuweisung der Kostenmatrix an Matrix a (by value!) for (int i = ; i < n; i++) { // aktueller Knoten i for (int j = ; j < n; j++) { // Vorgänger j betrachten for (int k = ; k < n; k++) // Nachfolger k betrachten if (a[j][i]+ a[i][k]< a[j][ k]) // kürzerer Weg über i gefunden a[j] [k]= a[j][i] + a[i][k]; } } return a; } Die Laufzeit für diese Implementierung ist offensichtlich On ( 3 ). Im Laufe des lgorithmus erhöht sich die Kantenzahl zum Teil deutlich und kommt in der Regel der Maximalzahl von recht nahe. Daher kann auch für eine Darstellung über djazenzlisten kein entscheidend verbessertes Laufzeitverhalten erwartet werden. ufgrund ihrer infachheit ist daher die obige Implementierung im llgemeinen zu bevorzugen. n isher: erechnung ausschließlich der Kosten der kürzesten Pfade. Jetzt: Repräsentation der Pfade selbst mittels geeigneter zusätzlicher Kantenmarkierungen. Konkret markieren wir beim Übergang von Graph G i auf G i (s.o.) die neu hinzukommenden bzw. geänderten Kanten mit Knoten i, d.h. mit dem Knoten, über den der (neue) minimale Weg verläuft. v j α, i α α+β, i i β, i β w k Hierzu benötigen wir eine zusätzliche (zu eginn mit 0-Feldern initialisierte) Matrix: int [][] pathcost = new int [n][n]; In der if-nweisung des obigen lgorithmus von Floyd wird der folgende zusätzliche efehl eingefügt: pathcost [j][k] = i;

18 lgorithmen und Datenstrukturen Seite.8 Nach Terminierung des lgorithmus enthält die Matrix pathcost die folgende Information: pathcost [i][j] = 0 die Kante zwischen Knoten i und j ist kostenminimal, falls sie existiert; ansonsten: kein Weg von Knoten i nach Knoten j vorhanden. pathcost [i][ j] = k > 0 gibt an, über welchen Knoten k die kürzeste Verbindung verläuft (rekursiv!). us dieser Matrix lässt sich der kürzeste Weg zwischen zwei beliebigen Knoten i und j in Or () Zeit konstruieren, wobei r die nzahl der Knoten auf dem kürzesten Weg bezeichnet.. Transitive Hülle Häufig ist (unabhängig von den Kosten) nur von Interesse: existiert ein Weg in Graph G von Knoten i nach Knoten j?, oder allgemeiner: Problem: Welche Knoten eines Graphen sind von welchen anderen Knoten aus durch einen Weg erreichbar? (Zusammenhangsproblem oder rreichbarkeitsproblem) Definition: Transitive Hülle Gegeben sei ein Graph G = ( V, ). Die transitive Hülle von G ist der Graph G = ( V, ), wobei definiert ist durch: ( v, w) es gibt einen Weg in G von v nach w. Die Lösung stellt im wesentlichen eine Vereinfachung des lgorithmus von Floyd dar: Der lgorithmus von Warshall Nehmen wir an, G sei durch eine (boolesche) djazenzmatrix wird eine djazenzmatrix ij [, ] für G generiert: ij [, ] gegeben. Hieraus Prinzip: Ähnlich zum lgorithmus von Floyd wird beginnend mit G eine Folge von Graphen G, G,, G n mit einer zunehmenden Menge von Kanten generiert. Die inträge i [ jk, ] der djazenzmatrix i von Graph G i, i n, entstehen dabei aus der djazenzmatrix von Graph wie folgt: i G i i [ jk, ] := i [ j, k] OR ( i [ ji, ] ND i [ ik, ]).

19 lgorithmen und Datenstrukturen Seite.9 In der resultierenden djazenzmatrix schließlich sind genau diejenigen inträge n [ j, k] mit true belegt, für die gilt: es gibt einen Weg in G von Knoten j nach Knoten k. repräsentiert somit die transitive Hülle von G. G n Die folgende Implementierung entspricht der des lgorithmus von Floyd mit usnahme der if-nweisung im Inneren der geschachtelten Schleifen: booelan [][] warshall () { boolean a[][] = new boolean [n][n]; // Zuweisung der djazenzmatrix an Matrix a (by value!) for (int i = ; i < n; i++) { //aktueller Knoten i for (int j = ; j < n; j++) { // Vorgänger j betrachten for (int k = ; k < n; k++) // Nachfolger k betrachten if (!a[j][k])// Kante (j, k) existiert noch nicht a[j][k] = (a[j][i] && a[i][k]); } } return a; } n. Minimaler Spannbaum Definition: Spannbaum eines Graphen Gegeben sei ein zusammenhängender, ungerichteter Graph G = ( V, ). in Spannbaum von G ist ein Teilgraph der folgenden edingungen erfüllt sind: () G ist zusammenhängend. () G besitzt n Kanten ( n = V ). (3) G ist zyklenfrei. G = ( V, ), bei dem zwei (und damit alle drei) emerkungen: Jeder zusammenhängende Graph besitzt mindestens einen Spannbaum. n n Die nzahl verschiedener Spannbäume von n Knoten beträgt. (ohne eweis)

20 lgorithmen und Datenstrukturen Seite.0 Definition: Minimaler Spannbaum Sind den Kanten des Graphen G Kosten zugeordnet, so besitzt jeder Spannbaum Kosten, die sich aus der Summe seiner Kantenkosten ergeben. Man spricht dann von einem minimalen Spannbaum (kostenminimaler, zyklenfreier, zusammenhängender Teilgraph), falls dessen Kosten minimal unter allen möglichen Spannbäumen von G sind Graph G ein Spannbaum ein minimaler Spannbaum Gesamtkosten = Gesamtkosten = s gibt zwei prinzipielle nsätze, einen minimalen Spannbaum zu ermitteln: Grow-lgorithmus: eginne mit einer leeren Kantenmenge; solange noch kein Spannbaum gefunden ist: füge der Kantenmenge die Kante mit minimalen Kosten aus G hinzu, die keinen Zyklus erzeugt. Shrink-lgorithmus: eginne mit allen Kanten des Graphen als Kantenmenge; solange noch kein Spannbaum gefunden ist: entferne aus der Kantenmenge die Kante mit maximalen Kosten, die nicht die Zusammenhangseigenschaft verletzt. Der lgorithmus von Kruskal Grundlage: das grow-prinzip. Vorbemerkung: (ohne formalen eweis) Sei G = ( V, ) ein zusammenhängender, ungerichteter Graph und { UW, } eine Zerlegung der Knotenmenge V. Sei ( uw, ), u U und w W, eine Kante in G mit minimalen Kosten unter allen Kanten {( u', w' ) u' U, w' W}. Dann gibt es einen minimalen Spannbaum für G, der ( uw, ) enthält. Veranschaulichung: (u,w ) beliebig! u w u w U Kosten (u,w) Kosten (u,w ) W

21 lgorithmen und Datenstrukturen Seite. Hieraus ergibt sich der nsatz des Kruskal schen lgorithmus, schrittweise anwachsende Teilmengen der Knotenmenge V zu betrachten und deren minimale Verbindungskante zu ermitteln: Prinzip: Zu eginn wird jeder der Knoten als einelementige Teilmenge von V betrachtet. Der lgorithmus betrachtet die Kanten in nach aufsteigenden Kosten. Im ersten Schritt werden die beiden durch die kostenminimale Kante verbundenen Knoten zu einer zweielementigen Teilmenge verschmolzen. 3 3 Dieser Schritt wird ( n )-mal iteriert, wobei jeweils diejenige Kante mit minimalen Kosten gewählt wird, die zwei bisher getrennte Knotenmengen verbindet; diese beiden Mengen werden verschmolzen. Schließlich sind alle Knoten zu einer einzigen Knotenmenge vereinigt. Die schrittweise eingefügten Kanten bilden einen minimalen Spannbaum von G Die folgende informelle eschreibung des lgorithmus basiert auf der Tatsache, dass kostenminimale Kanten schnell gefunden werden können. Dazu werden die Kanten nach aufsteigenden Kosten in einem dynamischen Heap K_Heap organisiert. Der Zugriff erfolgt mit Hilfe der Methode get_minimum, wobei die kostenminimale Kante zurückgeliefert und gleichzeitig aus der Struktur gelöscht wird. Weitere benötigte Datenstrukturen sind: Knoten_Sets : organisiert die aktuellen Teilmengen der Knotenmenge. Methoden: find_component und merge_components. Spann_Graph : zweite Graphstruktur mit gleicher Knotenmenge wie G. ufbau des minimalen Spannbaumes. Methode: insert_edge.

22 lgorithmen und Datenstrukturen Seite. LGORITHMUS Kruskal; VR Schrittzahl : CRDINL; v, w : Knoten; a, b : Component; (* abstrakter Datentyp für Knoten_Sets *) GIN initialisiere Knoten_Sets so, dass jeder Knoten eine eigene Komponente bildet; füge alle Kanten aus gemäß ihrer Kosten in K_Heap ein; initialisiere die Kantenmenge von Spann_Graph als leer; Schrittzahl := ; WHIL Schrittzahl < n DO get_minimum ( K_Heap, v, w ); a := find_component ( Knoten_Sets, v ); b := find_component ( Knoten_Sets, w ); IF a b THN (* andernfalls wird die Kante einfach übergangen *) insert_edge ( Spann_Graph, v, w ); (* minimalen Spannbaum aufbauen *) merge_components ( Knoten_Sets, a, b ); INC ( Schrittzahl ); ND ND ND Kruskal; Laufzeitanalyse: Sei n = V und e =, dann besitzt obiger lgorithmus das folgende Laufzeitverhalten: Initialisierung von Spann_Graph und Knoten_Sets : Initialisierung von K_Heap : maximal e Operationen get_minimum : maximal e Operationen find_component : n- Operationen merge_components : Gesamtlaufzeit: Oe ( loge), da e n (G ist zusammenhängend). On () Oe () Oe ( loge) Oe ( logn) On ( logn)

Kapitel 5: Graphen und Graphalgorithmen

Kapitel 5: Graphen und Graphalgorithmen LUDWIG- MAXIMILIANS- UNIVERSITY MUNICH DEPARTMENT INSTITUTE FOR INFORMATICS DATABASE Algorithmen und Datenstrukturen Kapitel 5: Graphen und Graphalgorithmen Skript zur Vorlesung Algorithmen und Datenstrukturen

Mehr

Kürzester Wege in Graphen

Kürzester Wege in Graphen Kürzester Wege in Graphen Zur Bestimmung von kürzesten Wegen in Graphen betrachten wir zwei unterschiedliche Algorithmen: Path Problem All Pairs Shortest Path-Problem Algorithmen und Datenstrukturen 336

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

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

Lernmodul 7 Algorithmus von Dijkstra

Lernmodul 7 Algorithmus von Dijkstra Folie 1 von 30 Lernmodul 7 Algorithmus von Dijkstra Quelle: http://www.map24.de Folie 2 von 30 Algorithmus von Dijkstra Übersicht Kürzester Weg von A nach B in einem Graphen Problemstellung: Suche einer

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

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

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

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

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

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

Übersicht Datenstrukturen und Algorithmen. Übersicht. Probleme auf kantengewichteten Graphen. Vorlesung 14: Minimale Spannbäume

Übersicht Datenstrukturen und Algorithmen. Übersicht. Probleme auf kantengewichteten Graphen. Vorlesung 14: Minimale Spannbäume Übersicht atenstrukturen und lgorithmen Vorlesung : Prof. r. rika Ábrahám Theorie ybrider Systeme Informatik http://ths.rwth-aachen.de/teaching/ss-/ datenstrukturen-und-algorithmen/ 1 reedy lgorithmen

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

7. Transitive Hülle. Kante des Graphen. Zusatz-Kante der transitiven Hülle

7. Transitive Hülle. Kante des Graphen. Zusatz-Kante der transitiven Hülle In Anwendungen ist es oft interessant zu wissen, ob man überhaupt von einem Knoten v zu einem Knoten w gelangen kann, ganz gleich wie lang der Weg auch ist. Gegeben sei dabei ein gerichteter Graph G =

Mehr

Programmierkurs Python II

Programmierkurs Python II Programmierkurs Python II Stefan Thater & Michaela Regneri Universität des Saarlandes FR 4.7 Allgemeine Linguistik (Computerlinguistik) Übersicht Topologische Sortierung (einfach) Kürzeste Wege finden

Mehr

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2 Algorithmen und Datenstrukturen Lerneinheit : Kürzeste Pfade in Graphen Prof. Dr. Christoph Karg Studiengang Informatik Hochschule Aalen Sommersemester 016.6.01 Einleitung Diese Lerneinheit beschäftigt

Mehr

Graphalgorithmen II. Werner Sembach Werner Sembach Graphalgorithmen II / 22

Graphalgorithmen II. Werner Sembach Werner Sembach Graphalgorithmen II / 22 Graphalgorithmen II Werner Sembach 14.04.2014 Werner Sembach Graphalgorithmen II 14.04.2014 1 / 22 Übersicht Datenstrukturen Union-Find Fibonacci-Heap Werner Sembach Graphalgorithmen II 14.04.2014 2 /

Mehr

(a, b)-bäume / 1. Datenmenge ist so groß, dass sie auf der Festplatte abgespeichert werden muss.

(a, b)-bäume / 1. Datenmenge ist so groß, dass sie auf der Festplatte abgespeichert werden muss. (a, b)-bäume / 1. Szenario: Datenmenge ist so groß, dass sie auf der Festplatte abgespeichert werden muss. Konsequenz: Kommunikation zwischen Hauptspeicher und Festplatte - geschieht nicht Byte für Byte,

Mehr

1 Kürzeste Pfade in Graphen

1 Kürzeste Pfade in Graphen Praktikum Algorithmen-Entwurf (Teil 3) 03.11.2011 1 1 Kürzeste Pfade in Graphen Es sei ein gerichteter Graph G = (V, E) mit V = n Knoten, E = m Kanten und Kantengewichten c : E R gegeben. Ein Pfad in G

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

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

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

10. Übungsblatt zu Algorithmen I im SS 2010

10. Übungsblatt zu Algorithmen I im SS 2010 Karlsruher Institut für Technologie Institut für Theoretische Informatik Prof. Dr. Peter Sanders G.V. Batz, C. Schulz, J. Speck 0. Übungsblatt zu Algorithmen I im SS 00 http//algo.iti.kit.edu/algorithmeni.php

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

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

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

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Graphen (2) Spannbäume Kürzeste Wege Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 455 Wiederholung Traversierung eines Graphen via Tiefendurchlaufs

Mehr

Lösungsvorschläge zur Hauptklausur 1661 Datenstrukturen I

Lösungsvorschläge zur Hauptklausur 1661 Datenstrukturen I Lösungsvorschläge zur Hauptklausur 1 atenstrukturen I 7.. ernuniversität in Hagen lle Rechte vorbehalten Seite 2 Lösungsvorschläge zur Klausur vom 7.. Kurs 1 atenstrukturen I ufgabe 1 (a) algebra sorts

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

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 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

HEUTE. Datenstrukturen im Computer. Datenstrukturen. Rekursion. Feedback Evaluation. abstrakte Datenstrukturen

HEUTE. Datenstrukturen im Computer. Datenstrukturen. Rekursion. Feedback Evaluation. abstrakte Datenstrukturen 9.2.5 HUT 9.2.5 3 atenstrukturen im omputer atenstrukturen ie beiden fundamentalen atenstrukturen in der Praxis sind rray und Liste Rekursion Feedback valuation rray Zugriff: schnell Umordnung: langsam

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

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

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

Mehr

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

Routing A lgorithmen Algorithmen Begriffe, Definitionen Wegewahl Verkehrslenkung

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

Mehr

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

10 Kürzeste Pfade SSSP-Problem

10 Kürzeste Pfade SSSP-Problem In diesem Kapitel setzen wir uns mit der Berechnung von kürzesten Pfaden in einem Graphen auseinander. Definition 10.1 (Pfadgewichte). i) Das Gewicht eines Pfades p = (v 0, v 1,..., v k ) ist die Summe

Mehr

5. Bäume und Minimalgerüste

5. Bäume und Minimalgerüste 5. Bäume und Minimalgerüste Charakterisierung von Minimalgerüsten 5. Bäume und Minimalgerüste Definition 5.1. Es ein G = (V, E) ein zusammenhängender Graph. H = (V,E ) heißt Gerüst von G gdw. wenn H ein

Mehr

Teil 2: Graphenalgorithmen

Teil 2: Graphenalgorithmen Teil : Graphenalgorithmen Anwendungen Definitionen Datenstrukturen für Graphen Elementare Algorithmen Topologisches Sortieren Kürzeste Wege Problemstellung Ungewichtete Graphen Distanzgraphen Gewichtete

Mehr

Graphalgorithmen II. Sebastian Ehrenfels Sebastian Ehrenfels Graphalgorithmen II / 44

Graphalgorithmen II. Sebastian Ehrenfels Sebastian Ehrenfels Graphalgorithmen II / 44 Graphalgorithmen II Sebastian Ehrenfels 4.6.2013 Sebastian Ehrenfels Graphalgorithmen II 4.6.2013 1 / 44 Inhalt 1 Datenstrukturen Union-Find Fibonacci-Heap 2 Kürzeste wege Dijkstra Erweiterungen Bellman-Ford

Mehr

Routing Algorithmen. Begriffe, Definitionen

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

Mehr

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

Ü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

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Minimale Spannbäume Maike Buchin 18.7., 20.7.2017 Einführung Motivation: Verbinde Inseln mit Fähren oder Städte mit Schienen und verbrauche dabei möglichst wenig Länge. Problem:

Mehr

Algorithmen und Datenstrukturen, FS17 Prof Dr Christian Tschudin

Algorithmen und Datenstrukturen, FS17 Prof Dr Christian Tschudin Departement Mathematik und Informatik Algorithmen und Datenstrukturen, FS17 Prof Dr Christian Tschudin 12. April 2017 Union-Find Datenstruktur Graphen I Robert E. Tarjan Algorithmen und Datenstrukturen,

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

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

Kürzeste Pfade. Organisatorisches. VL-17: Kürzeste Pfade. (Datenstrukturen und Algorithmen, SS 2017) Walter Unger

Kürzeste Pfade. Organisatorisches. VL-17: Kürzeste Pfade. (Datenstrukturen und Algorithmen, SS 2017) Walter Unger Organisatorisches VL-17: Kürzeste Pfade (Datenstrukturen und Algorithmen, SS 2017) Walter Unger Vorlesung: Gerhard Woeginger (Zimmer 4024 im E1) Sprechstunde: Mittwoch 11:15 12:00 Übungen: Tim Hartmann,

Mehr

Wintersemester 2004/ Februar 2005

Wintersemester 2004/ Februar 2005 Lehrstuhl für Praktische Informatik III Norman May B6, 29, Raum C0.05 68131 Mannheim Telefon: (0621) 181 2517 Email: norman@pi3.informatik.uni-mannheim.de Matthias Brantner B6, 29, Raum C0.05 68131 Mannheim

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

Kürzeste Wege in einem gewichteten Graphen. Anwendungen

Kürzeste Wege in einem gewichteten Graphen. Anwendungen Kürzeste Wege in einem gewichteten Graphen Dazu werden die Gewichte als Weglängen interpretiert. Der kürzeste Weg zwischen zwei Knoten in einem zusammenhängenden Graphen ist derjenige, bei dem die Summe

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

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

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

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Datenstrukturen. Mariano Zelke. Sommersemester 2012 Datenstrukturen Mariano Zelke Sommersemester 2012 Kapitel 3: Elementare Datenstrukturen Mariano Zelke Datenstrukturen 2/18 Einfach verkettete Listen Mariano Zelke Datenstrukturen 3/18 Eine Zeiger-Implementierung

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 217 Marc Bux, Humboldt-Universität zu Berlin Agenda 1. Graphen und Bäume 2. Binäre Suchbäume 3. AVL-Bäume 4. Algorithmen und Datenstrukturen 2 Agenda

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

Relationen und Graphentheorie

Relationen und Graphentheorie Seite Graphentheorie- Relationen und Graphentheorie Grundbegriffe. Relationen- und Graphentheorie gehören zu den wichtigsten Hilfsmitteln der Informatik, die aus der diskretenmathematik stammen. Ein Graph

Mehr

Matchings in Graphen. Praktikum Diskrete Optimierung (Teil 5)

Matchings in Graphen. Praktikum Diskrete Optimierung (Teil 5) Praktikum Diskrete Optimierung (Teil 5) 6.05.009 Matchings in Graphen Es sei ein ungerichteter Graph G = (V, E) gegeben. Ein Matching in G ist eine Teilmenge M E, so dass keine zwei Kanten aus M einen

Mehr

Algorithmische Graphentheorie

Algorithmische Graphentheorie Algorithmische Graphentheorie Vorlesung 7 und 8: Euler- und Hamilton-Graphen Babeş-Bolyai Universität, Department für Informatik, Cluj-Napoca csacarea@cs.ubbcluj.ro 17. April 2018 1/96 WIEDERHOLUNG Eulersche

Mehr

Einführung in die Informatik 2

Einführung in die Informatik 2 Einführung in die Informatik 2 Bäume & Graphen Sven Kosub AG Algorithmik/Theorie komplexer Systeme Universität Konstanz http://www.inf.uni-konstanz.de/algo/lehre/ss08/info2 Sommersemester 2008 Sven Kosub

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

Einführung in die Graphen-Theorie

Einführung in die Graphen-Theorie www.mathematik-netz.de Copyright, Page 1 of 8 Einführung in die Graphen-Theorie 1.0 Grundlegende Definitionen Die Theorie der Graphen, das in faszinierender Weise Anwendungen und Theorie, Anschaulichkeit

Mehr

Graphen KAPITEL 3. Dieses Problem wird durch folgenden Graph modelliert:

Graphen KAPITEL 3. Dieses Problem wird durch folgenden Graph modelliert: KAPITEL 3 Graphen Man kann als Ursprung der Graphentheorie ein Problem sehen, welches Euler 1736 von Studenten aus Königsberg gestellt bekam. Der Fluss Pregel wird von 7 Brücken überquert, und die Frage

Mehr

Wege, Pfade und Kreise

Wege, Pfade und Kreise Wege, Pfade und Kreise ef.: in Weg ist eine olge von Knoten (v 1, v2,..., vk), so dass {vi,vi+1} für alle 1 i

Mehr

14. Rot-Schwarz-Bäume

14. Rot-Schwarz-Bäume Bislang: Wörterbuchoperationen bei binären Suchbäume effizient durchführbar, falls Höhe des Baums klein. Rot-Schwarz-Bäume spezielle Suchbäume. Rot-Schwarz-Baum mit n Knoten hat Höhe höchstens 2 log(n+1).

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

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

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

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

Graphen. Anwendung, Repräsentation, Tiefensuche, Breitensuche, Warshall s Algorithmus, kürzeste Wege.

Graphen. Anwendung, Repräsentation, Tiefensuche, Breitensuche, Warshall s Algorithmus, kürzeste Wege. Graphen Anwendung, Repräsentation, Tiefensuche, Breitensuche, Warshall s Algorithmus, kürzeste Wege. Klausurtermine Nachklausur Do..0.0, 9- Uhr HS V Abschlussklausur Di...0 im AudiMax bisherige Uhrzeit:

Mehr

Fortgeschrittene Netzwerk- und Graph-Algorithmen

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

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

Aufgaben zur Klausurvorbereitung

Aufgaben zur Klausurvorbereitung Vorlesung Graphen und Optimierung Sommersemester 2013/14 Prof. S. Lange Aufgaben zur Klausurvorbereitung Hier finden Sie eine Reihe von Übungsaufgaben, die wir an den beiden Vorlesungsterminen am 29.01.2014

Mehr

Kap. 6.6: Kürzeste Wege

Kap. 6.6: Kürzeste Wege Kap. 6.6: Kürzeste Wege Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 1./. VO DAP SS 009./9. Juli 009 1 Nachtest für Ausnahmefälle Di 1. Juli 009, 16:00 Uhr,

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

Abstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken.

Abstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken. Abstrakte Datentypen und Datenstrukturen/ Einfache Beispiele Abstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken. Datenstruktur (DS): Realisierung

Mehr

Kap. 6.6: Kürzeste Wege

Kap. 6.6: Kürzeste Wege 0.0.00 Nachtest für Ausnahmefälle Kap..: Kürzeste Wege Professor Dr. Lehrstuhl für Algorithm Engineering, LS Fakultät für Informatik, TU Dortmund./. VO DAP SS 00./. Juli 00 Di. Juli 00, :00 Uhr, OH, R.

Mehr

Grundbegriffe der Informatik Tutorium 8

Grundbegriffe der Informatik Tutorium 8 Grundbegriffe der Informatik Tutorium 8 Tutorium Nr. 16 Philipp Oppermann 22. Dezember 2014 KARLSRUHER INSTITUT FÜR TECHNOLOGIE KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum

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

Tutoraufgabe 1 (Implementierung eines ADTs):

Tutoraufgabe 1 (Implementierung eines ADTs): Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Tutoriumslösung - Übung (Abgabe.05.0) F. Corzilius, S. Schupp, T. Ströder Tutoraufgabe (Implementierung eines ADTs): Wir spezifizieren den ADT

Mehr

Counting - Sort [ [ ] [ [ ] 1. SS 2008 Datenstrukturen und Algorithmen Sortieren in linearer Zeit

Counting - Sort [ [ ] [ [ ] 1. SS 2008 Datenstrukturen und Algorithmen Sortieren in linearer Zeit Counting-Sort Counting - Sort ( A,B,k ). for i to k. do C[ i]. for j to length[ A]. do C[ A[ j ] C[ A[ j ] +. > C[ i] enthält Anzahl der Elemente in 6. for i to k. do C[ i] C[ i] + C[ i ]. > C[ i] enthält

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 (billigste) Wege

Kürzeste (billigste) Wege Kürzeste (billigste) Wege 1. Kürzeste (billigste) Wege Gerichteter Graph G = (V, E) Kostenfunktion c : E R 1 2 1 3 3 2 4 4 2 6 6 5 3 2 Entfernung zwischen zwei Knoten Kosten eines Wegs P = v 0, v 1,...,

Mehr

Kapitel 8 Graphenalgorithmen. Minimaler Spannbaum Union-find-Problem Kürzeste Wege

Kapitel 8 Graphenalgorithmen. Minimaler Spannbaum Union-find-Problem Kürzeste Wege Kapitel 8 Graphenalgorithmen Minimaler Spannbaum Union-find-Problem Kürzeste Wege Rückblick Graphen Modelle für Objekte und Beziehungen untereinander Personen - Bekanntschaften Ereignisse - Abhängigkeiten

Mehr

Verkettete Datenstrukturen: Listen

Verkettete Datenstrukturen: Listen Verkettete Datenstrukturen: Listen 2 Listen Formal: Liste = endliche Folge von Elementen [a 1, a 2,..., a n ]. Spezialfall: leere Liste [ ]. Länge einer Liste = Anzahl der Elemente (bei leerer Liste: 0).

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

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2 Algorithmen und Datenstrukturen 2 Sommersemester 2007 11. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik studla@bioinf.uni-leipzig.de Das Rucksack-Problem Ein Dieb, der einen Safe

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 2

Algorithmen und Datenstrukturen 2 Algorithmen und Datenstrukturen 2 Sommersemester 2009 11. Vorlesung Uwe Quasthoff Universität Leipzig Institut für Informatik quasthoff@informatik.uni-leipzig.de Das Rucksack-Problem Ein Dieb, der einen

Mehr

lässt sich auch ableiten, dass es einen augmentierenden Pfad der Länge höchstens

lässt sich auch ableiten, dass es einen augmentierenden Pfad der Länge höchstens Praktikum Algorithmen-Entwurf (Teil 5)..5 Matchings in Graphen Es sei ein ungerichteter Graph G = (V, E) gegeben. Ein Matching in G ist eine Teilmenge M E, so dass keine zwei Kanten aus M einen Endpunkt

Mehr

Datenstrukturen & Algorithmen Lösungen zu Blatt 11 FS 14

Datenstrukturen & Algorithmen Lösungen zu Blatt 11 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 14. Mai

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

Kürzeste-Wege-Algorithmen und Datenstrukturen

Kürzeste-Wege-Algorithmen und Datenstrukturen Kürzeste-Wege-Algorithmen und Datenstrukturen Institut für Informatik Universität zu Köln SS 2009 Teil 1 Inhaltsverzeichnis 1 Kürzeste Wege 2 1.1 Voraussetzungen................................ 2 1.2

Mehr

Kap. 5: Graphen. Carsten Gutwenger Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund. 17. VO DAP2 SS

Kap. 5: Graphen. Carsten Gutwenger Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund. 17. VO DAP2 SS Kap. 5: Graphen Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 17. VO DAP2 SS 2009 23. Juni 2008 1 Motivation Warum soll ich heute hier bleiben? Graphen sind wichtig und

Mehr

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

Diskrete Strukturen. Hausaufgabe 1 (5 Punkte) Hausaufgabe 2 (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 9

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