Formale Grundlagen der Informatik (Fuchs/Kraan SS 99) Formale Grundlagen der Informatik (Fuchs/Kraan SS 99) Elementare Definitionen Anwendungen • Ein Graph besteht anschaulich aus Knoten und Kanten, die die Knoten verbinden. • Flussdiagramme • Versorgungsnetze • Computernetzwerke • Petri-Netze • Entity-Relationship Diagramme • elektrische Schaltpläne • Kanten können • semantische Netze 1. Gerichtet oder ungerichtet sein • Automaten 2. Mehrfach oder einfach sein 3. Einen Knoten mit sich selbst verbinden oder nicht (Schlaufen) • Syntaxbäume für Programmiersprachen • Entscheidungsbäume • Arten von Graphen 4. Einfache Graphen (ungerichtete Einfachkanten) 5. Digraphen (gerichtete Einfachkanten) 6. Multigraphen (ungerichtete Mehrfachkanten) Graphen 1 Graphen 2 Formale Grundlagen der Informatik (Fuchs/Kraan SS 99) Formale Grundlagen der Informatik (Fuchs/Kraan SS 99) Formalisierung von Graphen Formalisierung von Digraphen • Ein einfacher Graph G = ( V , E ) ohne Schlaufen kann formalisiert werden als ein Paar aus einer endlichen Menge V (vertex, Knoten) und einer Menge E (edge, Kante) von Mengen von zwei Elementen aus V. • Ein Digraph G = ( V , ) (ohne Schlaufen) ist ein Paar aus einer endlichen Menge V und einer (irreflexiven) Relation V V. ({A, B, C, D, E, F}, {(A, E), (B, E), (C, A), (A, F), (F, D), (C, D)}) ({A, B, C, D, E, F}, {{A, E}, {B, E}, {A, C}, {A, F}, {F, D}, {D, C}}) Alternative Formalisierung: Ein einfacher Graph (ohne Schlaufen) ist ein Paar G = ( V , ) aus einer endlichen Menge V und einer symmetrischen (und irreflexiven) Relation V V. ({A, B, C, D, E, F}, {(A, E), (B, E), (A, C), (A, F), (F, D), (D, C), (E, A), (E, B), (C, A), (F, A), (D, F), (C, D)}) Graphen 3 Graphen 4 Formale Grundlagen der Informatik (Fuchs/Kraan SS 99) Formale Grundlagen der Informatik (Fuchs/Kraan SS 99) Formalisierung von Multigraphen Verbindungen in (Di-)Graphen • Ein ungerichteter Multigraph ohne Schlaufen G = ( V , E , ) ist ein Tupel aus endlichen Mengen V und E, mit V b E = A, und einer Funktion : E ' { P V | | P | = 2 }. Für eine Kante e gibt (e) die Endpunkte an. • In einem (Di-)Graph sei e eine Kante von x nach y. Dann sind x und y inzident zu e, e ist inzident zu x und y, und x und y sind adjazent. ({A, B, C, D, E, F}, {a, b, c, d, e, f, g, h, i}, {(a, {F, A}), (b, {F, A}), (c, {F, A}), (d, {A, B}), (e, {E, B}), (f, {E, D}), (g, {E, D}), (h, {D, C}), (i, {D, C})}) • Ein gerichteter Multigraph mit Schlaufen G = ( V , E , i , f ) ist ein Tupel aus endlichen Mengen E und V, mit E b V = A, und Funktionen i , f : E ' V. Für eine Kante e gibt i(e) den Anfangs- und f(e) den Endpunkt. ({A, B, C, D, E, F}, {a, b, c, d, e, f, g, h, i}, {(a, A), (b, F), (c, F), (d, B), (e, B), (f, D), (g, D), (h, C), (i, C)}, {(a, F), (b, A), (c, A), (d, A), (e, E), (f, E), (g, E), (h, D), (i, C)}) • Ein Weg in einem (Di-)Graph ist ein n-Tupel ( x1 , x2 , … xn ), mit n > 1, von Knoten xi V, bei dem alle ( xI , xi+1 ) Kanten sind. Die Länge des Wegs ist n-1, der Anfangspunkt ist x1 und der Endpunkt ist xn. • Ein Zyklus ist ein Weg, dessen Anfangs- und Endpunkt gleich sind, der mindestens die Länge drei hat, und in dem eine Kante höchstens einmal vorkommt. • Ein Knoten y ist in einem (Di-)Graph von einem Knoten x erreichbar, wenn es einen Weg mit Anfangspunkt x und Endpunkt y gibt. Ein Punkt ist immer von sich selbst aus erreichbar. • Zwei Knoten x und y in einem (Di-)Graph sind zusammenhängend, wenn x von y und y von x erreichbar sind. • Ein (Di-)Graph heisst zusammenhängend, wenn je zwei seiner Knoten zusammenhängend sind. Graphen 5 Graphen 6 Formale Grundlagen der Informatik (Fuchs/Kraan SS 99) Formale Grundlagen der Informatik (Fuchs/Kraan SS 99) Zusammenhang in (Di-)Graphen Teilgraphen • Die Relation * V V, für die x * y genau dann gilt, wenn x und y zusammenhängend sind, heisst die Zusammenhangsrelation eines (Di-)graphs. • Ein (Di-)Graph ( F , ) heisst genau dann ein Teilgraph eines (Di-)Graphs ( E , ), wenn F E und . • Die Zusammenhangsrelation ist eine Äquivalenzrelation. • Eine Zusammenhangskomponente eines (Di-)Graphs ist eine Äquivalenzklasse der Zusammenhangsrelation auf dem (Di-)Graph. • Ein (Di-)Graph ( F , ) heisst genau dann ein induzierter Teilgraph eines (Di-)Graphs ( E , ), wenn F ein Teilgraph von E ist und wenn es zwischen jedem Paar von Punkten aus F genau dann eine Kante gibt wenn es auch in ( E , ) eine Kante gibt. • Ein vollständiger Graph ist ein Graph, bei dem je zwei verschiedene Punkte durch eine Kante verbunden sind. Graphen 7 Graphen 8 Formale Grundlagen der Informatik (Fuchs/Kraan SS 99) Formale Grundlagen der Informatik (Fuchs/Kraan SS 99) Beispielgraphen Bäume und Wälder als Graphen • Ein Baum ist ein zusammenhängender Graph ohne Zyklen. • Ein Wald ist ein Graph ohne Zyklen, dessen Zusammenhangskomponenten Bäume sind. • Sei ( P , ) ein zusammenhängender Graph. Ein spannender Baum ist ein Teilgraph von ( P , ), der ein Baum ist und alle Knoten des Graphs enthält, also ein Baum der Form ( P , ) mit . Graphen 9 Graphen 10 Formale Grundlagen der Informatik (Fuchs/Kraan SS 99) Formale Grundlagen der Informatik (Fuchs/Kraan SS 99) Eigenschaften von Bäumen Bipartite Graphen • Ein Graph ist genau dann ein Baum, wenn • Ein bipartiter Graph ( A a B , E ) ist ein Graph, bei dem die Menge der Knoten so in zwei nichtleere, disjunkte Mengen A und B zerlegt werden kann, dass jede Kante einen Knoten in A mit einem Knoten in B verbindet, d.h., kein Paar von Knoten aus A und kein Paar von Knoten aus B ist adjazent. 1. Er zusammenhängend ist. 2. Wenn er unzusammenhängend wird, sobald eine Kante entfernt wird. • Der Grad eines Knotens in einem (Di-)Graph ist die Anzahl der Kanten, die inzident zu dem Knoten sind. • Ein (Di-)Graph heisst planar, wenn er so in der Ebene gezeichnet werden kann, dass die Schnittpunkte der Kanten genau die Knoten des (Di-)Graphs sind. • Sei T ein endlicher Baum mit mindestens einem Knoten. Dann gilt: 1. T hat einen Knoten mehr als Kanten. 2. T hat mindestens einen Knoten mit Grad < 2. 3. T ist planar Graphen 11 Graphen 12 Formale Grundlagen der Informatik (Fuchs/Kraan SS 99) Formale Grundlagen der Informatik (Fuchs/Kraan SS 99) Matching Attributierte Graphen • Ein Matching in einem bipartiten Graph ist eine Menge von Kanten, die keine gemeinsamen Knoten haben. • Graph mit attributierten Kanten: Jeder Kante wird ein Attribut zugeordnet • Ein Matching ist vollständig, wenn alle Knoten aus A in einer Kante vorkommen. • Graph mit attributierten Knoten: Jedem Knoten wird ein Attribut zugeordnet • Ein Matching ist perfekt, wenn alle Knoten in einer Kante vorkommen. • Anwendungen attributierter Graphen: Graphen mit Kosten (Wegoptimierung, z.B. traveling salesman), Färbung, neurale Netze • In einem bipartiten Graph ( A a B , E ) gibt es genau dann ein vollständiges Matching, wenn für jede Menge C A es mindestens | C | Knoten in B gibt, die adjazent zu Knoten in C sind. • In einem bipartiten Graph ( A a B , E ) gibt es genau dann ein perfektes Matching, wenn es ein vollständiges Matching gibt, und wenn | A | = | B |. Graphen 13 Graphen 14 Formale Grundlagen der Informatik (Fuchs/Kraan SS 99) Formale Grundlagen der Informatik (Fuchs/Kraan SS 99) Isomorphie Spezielle Graphen • Strukturelle Unterschiede zwischen Graphen, nicht Unterschiede in der Benennung interessieren uns. Graphen, die sich nur in der Benennung unterscheiden, nennt man isomorph. • Kn ist der vollständige Graph ohne Schlaufen mit n Knoten, d.h., mit Kanten zwischen allen Knoten • Zwei (Di-)Graphen G = (E, ) und H = (F, ) sind isomorph, wenn es eine bijektive Funktion f : G ' H gibt mit > u, v E : (u, v) 2 (f(u), f(v)) K5 • Km, n ist der vollständige bipartite Graph mit einer Partition der Menge der Knoten in eine Menge M mit m und eine Menge N mit n Knoten. Jeder Knoten aus M ist zu allen Knoten aus N adjazent. K3,3 Graphen 15 Graphen 16 Formale Grundlagen der Informatik (Fuchs/Kraan SS 99) Formale Grundlagen der Informatik (Fuchs/Kraan SS 99) Theorem von Euler Tests auf Planarität • Eine Fläche eines Graphs ist eine der endlich grossen, durch den Graph abgegrenzten Regionen der Zeichnungsebene. • Planare Zeichnung • Sei G ein endlicher, planarer Graph mit einer Menge V von Knoten, einer Menge E von Kanten und einer Menge F von Flächen. Sei | V | > 0. Dann gilt |V|+|F|=|E|+1 • 1. Eulerkriterium: Ist die dreifache Knotenzahl kleiner als die Kantenzahl + 6, dann ist der Graph nicht planar. • 2. Eulerkriterium: Ist die zweifache Knotenzahl kleiner als die Kantenzahl + 4 und enthält der Graph keine Dreiecke, dann ist der Graph nicht planar. • 3. Eulerkriterium: Hat der Graph nur Knoten vom Grad 6 und grösser, dann ist der Graph nicht planar. • Kuratowski Kriterium: Eine Graph ist genau dann planar, wenn er weder K3,3 noch K5 noch einen Unterteilungsgraphen dieser zwei Graphen als Teilgraph enthält. Unterteilungsgraph: Seien F und G zwei Graphen. F heisst ein Unterteilungsgraph von G, wenn F aus G ausschliesslich durch Hinzufügen von Knoten vom Grad 2 entsteht, die eine bereits bestehende Kanten zweiteilen. Graphen 17 Graphen 18 Formale Grundlagen der Informatik (Fuchs/Kraan SS 99) Formale Grundlagen der Informatik (Fuchs/Kraan SS 99) Färbung von Graphen Färbung von planaren Graphen • Sei C eine Menge (von Farben). Eine Färbung eines Graphs G = ( V , E ) ist eine Zuweisung von Elementen aus V zu den Elementen von C so, dass adjazenten Knoten unterschiedliche Elemente von C zugewiesen werden. • Es ist relativ einfach zu zeigen, dass 5 Farben genügen, um einen planaren Graph zu färben. • Die chromatische Zahl eines Graphs G = ( V , E ) ist die kleinste Zahl von Farben, mit der er gefärbt werden kann. • Die Färbung von Karten ist dasselbe Problem wie die Färbung von Graphen. • Es gelang nicht, einen planaren Graph zu finden, der fünf Farben brauchte. • 1976 bewiesen Appel und Haken mit Computerunterstützung, dass vier Farben genügen. • Scheduling kann ebenfalls als Färbungsproblem formuliert werden. Graphen 19 Graphen 20 Formale Grundlagen der Informatik (Fuchs/Kraan SS 99) Formale Grundlagen der Informatik (Fuchs/Kraan SS 99) Das Fünf Farben Theorem (1) Das Fünf Farben Theorem (2) • Behauptung: Jeder endliche, planare Graph G = ( V , E ) kann mit fünf (oder weniger) Farben gefärbt werden. 2. Es gibt genau eine Zusammenhangskomponente. • Beweis: Induktion über die Anzahl der Knoten| V |. Verankerung: Für | V | 5 kann jeder Knoten mit einer unterschiedlichen Farbe gefärbt werde. QED Induktionsschritt: Unter der Annahme, dass alle Graphen mit weniger Knoten als G mit fünf Farben gefärbt werden können (Induktionshypothese), müssen wir zeigen, dass auch G mit fünf Farben gefärbt werden kann. Man teile G in seine Zusammenhangskomponenten auf. Wir unterscheiden zwischen Graphen mit mehr als einer und mit genau einer Zusammenhangskomponente. 1. Falls es mehr als eine Zusammenhangskomponente gibt, hat jede Zusammenhangskomponente weniger Knoten als G. Gemäss Induktionshypothese können diese mit fünf Farben gefärbt werden. Da es keine Kanten zwischen den Zusammenhangskomponenten gibt, haben wir damit bereits eine Färbung von G mit fünf Farben. Es gilt das Theorem von Euler| V | + | F | = | E | + 1. (a) Wir betrachten nun die Zahl N von Paaren ( e , f ), wobei e eine Kante einer Fläche f ist. Jede Kante kann höchstens zwei Flächen begrenzen. Somit gilt N 2 * | E |. Jede Fläche wird von mindestens 3 Kanten begrenzt. Somit (b) gilt N 3 * | F | und damit 3 * | F | 2 * | E |. Für jedes n sei Vn die Anzahl Knoten mit Grad n. Wenn k der maximale Grad eines Knotens von G ist, so ist | V | = | V1 | + | V2 | + … + | Vk |. (c) Es gilt: In einem endlichen Graph ist die Summe der Grade der Knoten zweimal die Zahl der Kanten: 2 * | E | = | V1 | + 2 * | V2 | + … + k * | Vk |. Nun folgt 02*|E|-3*|F| | E | 3 * (| E | - | F |) | E | 3 * (| V | - 1) 2 * | E | 6 * (| V | - 1) Formale Grundlagen der Informatik (Fuchs/Kraan SS 99) Das Fünf Farben Theorem (3) Das Fünf Farben Theorem (4) 7 * | V7 | + … + k * | V k | 5 * | V1 | + 4 *| V2 | + 3 *| V3 | + 2 * | V4 | + | V5 | + 6 *| V7 | + … + 6 *| Vk | - 6 arithm. arithm. aus (a) arithm. aus Graphen 22 Formale Grundlagen der Informatik (Fuchs/Kraan SS 99) aus (c) aus (b) | V1 | + 2 * | V2 | + … + k * | Vk | 6 * (| V | - 1) (d) Graphen 21 | V1 | + 2 * | V2 | + … + k * | Vk | 6 * | V1 | + 6 *| V2 | + … + 6 *| Vk | - 6 (d) Der schwierigere Fall: Die zu P adjazenten Knoten sind mit fünf unterschiedlichen Farben gefärbt. Wir nennen sie willkürlich rot, orange, grün, jade und blau, wenn wir die die Nachbarn von P im Uhrzeigersinn mit Pr, Po, Pg, Pj und Pb bezeichnen. | V7 | + 2 * | V8 | … + (k – 6) * | Vk | + 6 5 * | V1 | + 4 *| V2 | + 3 *| V3 | + 2 * | V4 | + | V5 | arithm. Wir definieren einen rot-grün Weg als einen Weg von Pr nach Pg, der nur Knoten verwendet, die rot und grün gefärbt sind. Wir definieren ebenso einen orange-jade Pfad. 6 5 * | V1 | + 4 *| V2 | + 3 *| V3 | + 2 * | V4 | + | V5 | arithm. Diese müssen sich kreuzen, so dass es nicht beide Pfade geben kann. Nehmen wir an, dass es keinen rot-grünen Weg gibt. Wir färben dann P grün. Schliesslich färben wir jeden roten bzw. grünen Knoten, der nur über rote und grüne Knoten von P aus erreichbar ist, mit grün bzw. rot. Damit haben wir eine Färbung von G mit fünf Farben. | V1 | … | V5 | können somit nicht alle gleich 0 sein. Damit muss es einen Knoten mit Grad 5 geben. Sei P ein Knoten mit Grad 5. Sei G’ = ( V’ , E’ ) der induzierte Teilgraph von G mit V’ = V \ { P }. G’ ist planar und hat weniger Knoten als G. Somit kann dieser Graph gemäss Induktionshypothese mit fünf Farben gefärbt werden. Man nehme ein solche Färbung. Damit sind die zu P adjazenten Knoten gefärbt. Falls diese Knoten mit weniger als fünf unterschiedlichen Farben gefärbt sind, steht für P noch eine neue Farbe zur Verfügung. Graphen 23 Graphen 24 Formale Grundlagen der Informatik (Fuchs/Kraan SS 99) Formale Grundlagen der Informatik (Fuchs/Kraan SS 99) Färbung nichtplanarer Graphen Charakteristische Funktion einer Relation • Die charakteristische Funktion einer Relation R auf einer Menge X ist eine Funktion von X X auf { 0 , 1 }, mit dem Wert 1, wenn das entsprechende Paar in der Relation ist, 0, wenn nicht. • Wenn n Elemente in der Menge X enthalten sind, entspricht dies einer n n Matrix A, deren ( r , s )-tes Element 1 oder 0 ist, je nach dem, ob das Paar ( xr , xs ) in R enthalten ist oder nicht. K5 • Beispiel: X = { a , b , c }, R = { ( a , a ) , ( b , a ) , ( c , b ) } 1 0 0 A = 1 0 0 0 1 0 K3,3 Graphen 25 Graphen 26 Formale Grundlagen der Informatik (Fuchs/Kraan SS 99) Formale Grundlagen der Informatik (Fuchs/Kraan SS 99) Repräsentation von (Di-)Graphen als Adjazenzmatrix Repräsentation von Multigraphen als Adjazenzmatrix • Die Adjazenzmatrix eines (Di-)Graphs ist die charakteristische Funktion der Kantenrelation. • Der Eintrag in die Adjazenzmatrix ist die Anzahl Kanten zwischen den Knoten. 0 0 1 0 0 1 0 0 0 1 0 0 1 1 1 0 0 0 0 1 Graphen 27 2 1 0 0 1 1 0 0 1 0 0 1 Graphen 28 Formale Grundlagen der Informatik (Fuchs/Kraan SS 99) Formale Grundlagen der Informatik (Fuchs/Kraan SS 99) Matrix mit Wegen der Länge n Konsolidierung der Kanten • Sei G ein Graph und n 8 £. Der Graph Gn enthält eine Kante von x nach y genau dann, wenn es einen Weg der Länge n von x nach y gibt. • Wenn uns nur interessiert, ob ein Weg existiert, und nicht n wie viele, lautet die Adjazenzmatrix A von Gn • Für n = 2 und G = 0 1 1 1 0 1 1 0 0 1 0 0 1 1 1 1 n lautet die Adjazenzmatrix A von Gn 0 0 0 1 2 1 0 0 0 1 1 0 × 0 0 1 0 0 0 1 1 2 1 0 0 0 1 1 1 = 0 0 1 1 0 0 1 1 0 2 3 0 0 2 0 0 1 2 1 1 Graphen 29 Graphen 30 Formale Grundlagen der Informatik (Fuchs/Kraan SS 99) Formale Grundlagen der Informatik (Fuchs/Kraan SS 99) Transitive und reflexiv transitive Hülle eines Graphs Algorithmus von Warshall • Sei A die Adjazenzmatrix einer binären Relation R auf einer Menge X mit n Elementen. • Wir definieren + auf der Menge { 0 , 1 } wie folgt: 0+0=0 0+1=1 1+0=1 1+1=1 2 • Sei Am eine n n Matrix, deren ( r , s )-tes Element am( r , s ) 1 oder 0 ist, je nach dem ob es einen Weg von r nach s gibt nur über Knoten aus { 1 , 2 , … m }. An ist die Matrix der transitiven Hülle. • Wir berechnen nacheinander A0, A1, …, An. 1. A0 = A, Hauptdiagonale von A0 auf 1 setzen • Die Adjazenzmatrix der transitiven Hülle von R lautet A+A +…+A • Die Berechnung der transitiven Hülle kann effizienter gemacht werden, z.B. mit dem Algorithmus von Warshall. n 2. Die Elemente von Am mit m > 0 werden wie folgt berechnet: am(r,s) = am-1(r,s) + am-1(r,m) * am-1 (m,s) • Die Adjazenzmatrix der reflexiv transitiven Hülle von R lautet 2 I+A+A +…+A n-1 Graphen 31 Graphen 32 Formale Grundlagen der Informatik (Fuchs/Kraan SS 99) Formale Grundlagen der Informatik (Fuchs/Kraan SS 99) Minimale Distanzen in gewichteten Graphen Gewichte der minimalen Wege einer bestimmten Länge • Verallgemeinerung der Berechnung der Erreichbarkeit und des Zusammenhangs durch Attributierung der Kanten mit einem Zahl. • Sei A die Matrix der Gewichte der Kanten eines Digraphs. Die Matrix der Gewichte der Kanten des Digraphs Gn ist n A , wobei das Minimum anstatt +, sowie + anstatt * verwendet wird: • Zur Vereinfachung geht man von vollständigen Graphen aus, wobei Kanten, die nicht zum ursprünglichen Graph gehören, das Gewicht 7 bekommen. n a (r,s) = min(a(r,1) + a(1,s), a(r,2) + a(2,s), …, a(r,n) + a(n,r)) ∞ 1 3 3 3 6 2 ∞ 2 ∞ 6 3 4 ∞ ∞ 2 = ∞ 5 ∞ 3 ∞ ∞ 5 ∞ 2 ∞ 1 3 3 2 ∞ 2 ∞ 4 ∞ ∞ 2 ∞ 3 ∞ ∞ 5 5 4 7 7 5 ∞ 3 ∞ 1 3 3 7 4 6 2 ∞ 2 ∞ 5 7 5 4 ∞ ∞ 2 = 7 10 7 ∞ 3 ∞ ∞ 9 6 8 3 5 7 9 7 Graphen 33 Graphen 34 Formale Grundlagen der Informatik (Fuchs/Kraan SS 99) Formale Grundlagen der Informatik (Fuchs/Kraan SS 99) Gewichte der minimalen Wege beliebiger Länge Algorithmus von Floyd • Berechnung der minimalen Wege zwischen allen Knoten • Um die Gewichte der minimalen Wege beliebiger Länge zwischen zwei Knoten zu bestimmen, nehmen wir das Minimum der Wege aller Längen von 1 bis n-1, 2 n-1 min( J , A , A , … , A ) mit • Wie der Algorithmus von Warshall für die Berechnung der transitiven Hülle. Wir berechnen nacheinander A0, A1, …, An. 1. A0 = A, Hauptdiagonale von A0 auf 1 setzen 2. Die Elemente von Am mit m > 0 werden wie folgt berechnet: 0 ∞ ∞ ∞ ∞ 0 ∞ ∞ J = ∞ ∞ 0 ∞ ∞ ∞ ∞ 0 am(r,s) = min(am-1(r,s), am-1(r,m) + am-1 (m,s)) • Laufzeitverhalten O(n ) 3 • Für das Beispiel ergibt dies 0 2 4 5 1 3 3 0 2 4 5 0 2 3 5 0 Graphen 35 Graphen 36 Formale Grundlagen der Informatik (Fuchs/Kraan SS 99) Formale Grundlagen der Informatik (Fuchs/Kraan SS 99) Algorithmus von Dijkstra Algorithmus von Prim • Berechnung der minimalen Wege von einem Startknoten zu allen anderen Knoten • Berechnung eines minimalen Spannbaums eines Graphs • Ein „greedy“Algorithmus mit Laufzeitverhalten O(n ) • Ein „greedy“Algorithmus mit Laufzeitverhalten O(n ) 2 2 • Bei jedem Schritt haben wir eine Menge S von Knoten, für die der minimale Weg bekannt ist und zu der wir einen weiteren Knoten hinzufügen. Nach n Schritten enthält S alle Knoten. Die Länge der Wege wird in einem Array d der Länge n gespeichert. 1. Man nummeriere die Knoten des Graphs von 1 bis n, wobei der Startknoten die Nummer 1 bekommt. Man initialisiere S = { 1 }, d1 = 0, und di = a1,i für i ≠ 1. 2. Falls | S | < n, füge man den Knoten i aus {1, 2,…n} \ S hinzu, für den di minimal ist. Falls es mehr als einen solchen Knoten gibt, wähle man willkürlich einen aus. Für alle Knoten j, die nicht in S sind, setze man dj = min( dj, di + ai,j ) • Bei jedem Schritt haben wir eine Menge S von Knoten und einen minimalen Spannbaum T auf S, und fügen einen Knoten zu S und eine Kante zu T. Nach n Schritten enthält S alle Knoten und T einen minimalen Spannbaum. 1. Man nummeriere die Knoten des Graphs von 1 bis n. Man initialisiere S = { 1 } und T = {} . 2. Falls | S | < n, suche Knoten i aus S und j aus {1, 2,…n} \ S mit minimalem ai,j. Falls es mehr als ein solches Paar gibt, wähle man willkürlich eines aus. Man füge j zu S und die Kante ( i , j ) zu T. Falls | S | = n, fertig. Falls | S | = n, fertig. • Der Algorithmus kann so erweitert werden, dass nicht nur die Länge des minimalen Wegs, sondern auch der Weg selbst berechnet wird. Die minimalen Wege bilden zusammen einen Spannbaum des Graphs. Graphen 37 Graphen 38 Formale Grundlagen der Informatik (Fuchs/Kraan SS 99) Formale Grundlagen der Informatik (Fuchs/Kraan SS 99) Übersicht Matrixoperationen Eulersche Graphen • Sei A eine n n Matrix, die zu einem Graph gehört • Ein Eulerscher Weg ist eine Weg, in dem jede Verbindungskante des Graphen genau einmal auftaucht. Berechnung Elemente von A Operation A→ A' Anzahl Wege der Länge 2 Anzahl Kanten x'ij = xi1*x1j + xi2*x2j +…+ xin*xnj • Theoreme: Existenz eines 1 wenn mind. Eine x'ij = max(xi1*x1j, xi2*x2j, …, xin*xnj) Kante, 0 wenn Wegs der keine Kante Länge 2 Minimaler Weg der Länge 2 • Ein Eulerscher Graph ist ein Graph, in dem es einen geschlossenen Eulerschen Weg gibt, d.h., Anfangs- und Endpunkt sind gleich. Kosten jeder Kante, ∞ wenn keine Kante x'ij = min(xi1+x1j, xi2+x2j, …, xin+xnj) 1. Ein Graph ist genau dann ein Eulerscher Graph, wenn er zusammenhängend ist und jeder Eckpunkt einen geradzahligen Grad hat. 2. Ein Graph enthält genau dann einen offenen Eulerschen Weg, wenn er zusammenhängend ist und höchstens zwei Eckpunkte mit ungeradzahligem Grad besitzt. 3. In jedem Graphen ist die Anzahl der Eckpunkte mit ungeradzahligem Grad gerade. Graphen 39 Graphen 40 Formale Grundlagen der Informatik (Fuchs/Kraan SS 99) Formale Grundlagen der Informatik (Fuchs/Kraan SS 99) Hamiltonsche Graphen Beziehung zwischen Eulerschen und Hamiltonschen Graphen • Ein Hamiltonscher Weg ist ein Weg, in dem jeder Eckpunkt des Graphen genau einmal auftaucht. • Ein Hamiltonscher Graph ist ein Graph, in dem es einen geschlossenen Hamiltonschen Weg gibt. • Theoreme: 1. Ist in einem Graph mit mindestens drei Eckpunkten der Grad jedes Eckpunkts grösser gleich der halben Anzahl von Eckpunkten, dann ist der Graph Hamiltonsch. 2. Ist in einem Graph mit mindestens drei Eckpunkten für jedes Paar nicht adjazenter Eckpunkte die Summe der Grade grösser oder gleich der Anzahl seiner Eckpunkte, dann ist der Graph Hamiltonsch. Graphen 41 Graphen 42 Formale Grundlagen der Informatik (Fuchs/Kraan SS 99) Formale Grundlagen der Informatik (Fuchs/Kraan SS 99) Das Traveling Salesman Problem Petri Netze • Ein Handelsreisender soll von seinem Wohnort alle Städte auf einer Landkarte je einmal besuchen, und zwar so, dass die Anzahl zurückgelegter Kilometer minimal ist. • Petri-Netze sind eine Technik zur Darstellung paralleler und verteilter Prozesse. • Dies entspricht der Suche nach einem minimalen Hamiltonschen Zyklus. • Diese Problem ist NP-vollständig, d.h., obwohl es nicht bewiesen ist, dass es nicht in polynomialer Zeit berechnet werden kann, sind alle bekannten Algorithmen von exponentieller Komplexität. • Sogar die Suche nach irgendeinem Hamiltonschen Zyklus ist ein NP-vollständiges Problem. • Eine Aktion bedeutet, dass das System in einen neuen Zustand übergeführt wird. Eine Aktion wird durch eine Transition modelliert und als dicken Strich gezeichnet. • Aktionen können nur eintreten, wenn gewisse Bedingungen erfüllt sind. Eine Bedingung wird durch eine Stelle modelliert und als Kreis gezeichnet. • Gültige Bedingungen werden durch Markierung der Stellen modelliert. Markierungen werden als fette Punkte dargestellt. Stellen können mehrere Marken tragen. • Bei beiden Problemen müssen im schlimmsten Fall alle Wege durch den Graph aufgezählt und getestet werden. Graphen 43 Graphen 44 Formale Grundlagen der Informatik (Fuchs/Kraan SS 99) Formale Grundlagen der Informatik (Fuchs/Kraan SS 99) Struktur der Petri Netze Bezeichnungen in Petri Netzen • Ein Petri Netz ist ein Quadrupel (S, T, SNT, TNS) aus • Eingangsstellen der Transition t t = { s S | (s , t) SNT } 3. Einer nichtleeren, endlichen Menge S von Stellen 4. Einer nichtleeren, endlichen Menge T von Transitionen 5. Einer Relation SNT S T von den Stellen auf die Transitionen 6. Einer Relation TNS T S von den Transitionen auf die Stellen mit S b T = A. • Ausgangstellen der Transition t t = { s S | (t , s) TNS } • Eingangstransitionen der Stelle s s = { t T | (t , s) TNS } • Ausgangstransitionen der Stelle s Ein Petri Netz ist ein bipartiter Digraph mit einer Bipartition, deren zwei Mengen Stellen und Transitionen heissen, und einer Attributierung der Stellen. s = { t T | (s , t) SNT } Graphen 45 Graphen 46 Formale Grundlagen der Informatik (Fuchs/Kraan SS 99) Formale Grundlagen der Informatik (Fuchs/Kraan SS 99) Statik der Petri Netze Dynamik der Petri Netze • Eine Funktion M : S '£0 von den Stellen in die natürlichen Zahlen heisst eine Markierung eines Petri Netzes. M gibt zu jeder Stelle die Anzahl Marken an, die auf der Stelle liegen. • Ein Petri Netz trage eine Markierung. Wenn es eine Transition gibt, die durch die Markierung aktiviert ist, dann kann das Petri Netz schalten. • Eine Stelle s S heisst markiert unter der Markierung M, wenn s mit mindestens einer Marke belegt ist: M(s) > 0. • Eine Transition t T heisst aktiviert durch die Markierung M, wenn jede Eingangsstelle von t markiert ist. • Sind mehrere Transitionen durch eine Markierung aktiviert, gibt es zwei Möglichkeiten: 1. Sind die Mengen der Eingangs- und Ausgangsstellen der Transitionen paarweise disjunkt, dann sind die Transitionen unabhängig und können alle schalten. 2. Sonst wählt das Petri Netz nichtdeterministisch eine unabhängige Menge von Transitionen und schaltet sie. • Schalten: Sei M eine Markierung und U T eine unabhängige Menge durch M aktivierter Transitionen, bezüglich welcher das Netz schaltet. Dann ergibt sich die neue Markierung M’ durch: M'(s) = M(s) – 1 2 s t, s Ê t M'(s) = M(s) + 1 2 s t, s Ê t M'(s) = M(s) sonst. Graphen 47 Graphen 48 Formale Grundlagen der Informatik (Fuchs/Kraan SS 99) Beispiel eines Petri Netzes Graphen 49