Einführung in die Graphentheorie Modellierung mit Graphen Aufgabe Ein Mann steht mit einem Wolf, einer Ziege und einem Kohlkopf am einen Ufer eines Flusses, den er überqueren will. • Motivation Er hat ein Boot, das groß genug ist, ihn und ein weiteres Objekt zu transportieren, so dass er immer nur eins der drei mit sich hinübernehmen kann. • Ungerichtete Graphen • Gerichtete Graphen Falls der Mann allerdings den Wolf und die Ziege oder die Ziege und den Kohlkopf unbewacht an einem Ufer zurücklässt, so wird einer gefressen werden. Credits: Ist es möglich, den Fluss zu überqueren, ohne dass die Ziege oder der Kohlkopf gefressen werden? Wie viele Fahrten benötigt man mindestens? D. Jungnickel: Graphen, Netzwerke und Algorithmen, BI 1994 G. Goos: Vorlesungen über Informatik, Springer 2000 www.easy-mod.de www.fh-bochum.de www.usa.de www.matheprisma.uni-wuppertal.de ag-kastens.upb.de/lehre/material/model/ (Alkuin, Abt des Klosters St. Martin in Tours, Lehrer und Ratgeber Karls des Großen) Man fängt natürlich sofort an, im Kopf die verschiedenen Möglichkeiten zum Transport durchzuspielen und die sich ergebenden Verteilungen von Mann, Wolf, Ziege und Kohlkopf auf die beiden Ufer zu überprüfen. Wie kann man die Möglichkeiten systematisch durchsuchen? • Modellierung der Situationen • Modellierung der Übergänge von Situation zu Situation c LETTMANN 2003/04 Modellierung — Graphentheorie VI-1 c LETTMANN 2003/04 Modellierung — Graphentheorie VI-2 Eine Modellierung des Rätsels Modellierung mit Graphen Eine Situation ist eine mögliche Verteilung von Mann, Wolf, Ziege, Kohlkopf auf die beiden Flussufer. symbol. Modell Situationen können modelliert werden durch Paare von Teilmengen von S := {M, W, Z, K}: := {(S1, S2) | S1 ∪ S2 = S, S1 ∩ S2 = ∅} Simulation Verhalten Transfer Abstraktion Durch Überqueren des Flusses ggf. mit einem Objekt kann der Mann die Situation verändern. graph. Modell Überquerungen können modelliert werden durch Verbindungen zwischen Zuständen. Die Verbindungen werden beschriftet mit den transportierten Elementen aus S. ({M,W,Z,K},{}) ({W,Z,K},{M}) ({Z,K},{M,W}) ({W,K},{M,Z}) ({M,K},{W,Z}) ({W},{M,Z,K}) ({M,Z,K},{W}) ({M,W,Z},{K}) Verhalten Abstraktion Transfer ({W,Z},{M,K}) System ({M,W,K},{Z}) ({K},{M,W,Z}) Simulation Experiment Verhalten Domäne ({M,W},{Z,K}) ({Z},{M,W,K}) ({M,Z},{W,K}) ({},{M,W,Z,K}) c LETTMANN 2003/04 Modellierung — Graphentheorie VI-3 c LETTMANN 2003/04 Modellierung — Graphentheorie VI-4 Ungerichteter Graph Beispiele für Graphen Definition Ein (ungerichteter) Graph G = (V, E) ist ein Paar bestehend aus • V einer endlichen Menge von Knoten (vertices) und • E ⊂ P(V ) einer Menge von Kanten (edges), i.e. zweielementigen Teilmengen von V . Knoten modellieren Zustände, Situationen, Positionen, . . . Kanten modellieren Relationen zwischen den Knoten. Für eine Kante e = {v, w} ∈ E zwischen den Knoten v ∈ V und w ∈ V verwendet man folgende Bezeichnungen: Knoten = Staat; Kante = gemeinsame Grenze • v und w heißen inzident zu e, • e heißt inzident zu v und w und • v und w heißen adjazent. 3 2 6 4 1 5 Knoten = Bauteil oder Leitungsknoten; Kante = Leitung c LETTMANN 2003/04 Modellierung — Graphentheorie VI-5 c LETTMANN 2003/04 Modellierung — Graphentheorie VI-6 Verallgemeinerungsmöglichkeiten für ungerichtete Graphen Maximale Kantenanzahl ungerichteter Graphen Lemma Für jeden ungerichteten Graphen G = (V, E) gilt: • Schlaufen oder Schlingen Eine Kante führt von einem Knoten zu diesem selbst zurück. |E| ≤ |V | · (|V | − 1) 3 2 Die Kantenanzahl für Graphen ohne Schlingen ist höchstens |V | · (|V | − 1), da jeder Knoten von V als Anfangs- oder als Endpunkt auftreten kann, aber nicht gleichzeitig Anfangs- und Endpunkt sein darf. 6 4 1 5 • Mehrfachkanten Die Kantenanzahl für Graphen mit Schlingen ist höchstens |V |2, da jeder Knoten von V als Anfangs- und als Endpunkt auftreten kann. Zu zwei Knoten gibt es (eventuell) mehrere Kanten, die sie miteinander verbinden. Die Kantenanzahl für Multigraphen ist nicht beschränkt, da zu zwei Knoten von V beliebig viele Kanten inzident sein können. 3 2 6 Die Kantenanzahl für Hypergraphen ist höchstens 2|V | , da jede Teilmenge von V als Kante auftreten kann. 4 1 5 • Hypergraphen Kanten sind Mengen von Knoten. 3 2 6 4 1 5 c LETTMANN 2003/04 Modellierung — Graphentheorie VI-7 c LETTMANN 2003/04 Modellierung — Graphentheorie VI-8 Datenstrukturen zur Verarbeitung von Graphen Teilgraphen ungerichteter Graphen Für einen Graphen G = (V, E) sei eine lineare Sortierung der Knoten gegeben: V = {v1, . . . , vn } Definition Ein Graph G = (V , E ) ist ein Teilgraph eines Graphen G = (V, E), wenn gilt V ⊆ V und E ⊆ E mit E ⊂ P(V ). 3 3 2 2 Adjazenzmatrix : 6 mit ai,j = 6 MG = (ai,j )i,j∈{1,...,n} 4 4 1 1 {vi , vj } ∈ E 0 1 5 5 Definition Ein Teilgraph G = (V , E ) eines Graphen G = (V, E) mit V = V heißt erzeugender Teilgraph (spanning subgraph). Adjazenzliste: LG = ((v1, al1), . . . , (vn, aln)) 3 mit ali sortierte Liste der zu vi adjazenten Knoten (bzgl. E) in V . 3 2 2 6 6 Beispiel: 1 1 G = ({a, b, c, d}, {{a, b}, {a, d}, {b, c}, {c, d}}) 0 1 MG = 0 1 4 4 1 0 1 0 0 1 0 1 1 0 1 0 b 5 5 Definition Für einen Graphen G = (V, E) und V ⊆ V heißt der Graph G = (V , E ) mit E := {{v1, v2} ∈ E | v1, v2 ∈ V } der von V induzierte Teilgraph von G. d 3 3 2 LG = ( a, b, c, d, c LETTMANN 2003/04 (b, d) (a, c) (b, d) (a, c) ) 2 6 6 4 4 1 a 1 c 5 Modellierung — Graphentheorie VI-9 c LETTMANN 2003/04 5 Modellierung — Graphentheorie VI-10 Isomorphie von Graphen Knoten- und Kantenmarkierungen Definition Für zwei Graphen G1 = (V1, E1) und G2 = (V2, E2) sei eine totale und bijektive Abbildung f : V1 → V2 gegeben. f heißt Isomorphismus von V1 auf V2 genau dann, wenn für alle Knoten v, w ∈ V gilt: {v, w} ∈ E1 ⇐⇒ Definition Eine Knotenmarkierung eines Graphen G = (V, E) ist eine Abbildung m:V →M die jedem Knoten v eine Markierung m(v) ∈ M zuordnet. {f (v), f (w)} ∈ E2 Definition Eine Kantenmarkierung eines Graphen G = (V, E) ist eine Abbildung m:E→M Offenes Problem der Komplexitätstheorie Gibt es ein effizientes (d.h. polynomielles) Verfahren, um zu entscheiden, ob zwei Graphen G1 und G2 isomorph sind? die jeder Kante e eine Markierung m(e) ∈ M zuordnet. Durch Verwendung von Kantenmarkierungen lassen sich Multigraphen auf einfache Graphen zurückführen: Kantenmarkierung = Anzahl paralleler Kanten Dies Problem tritt meist in (vielleicht?) schärferer Form als Teilgraph-Isomorphismus-Problem auf: Gibt es einen Teilgraphen in G1, der isomorph zu G2 ist? Identifiziere in einer hydraulischen Anlage die Linearachsen. c LETTMANN 2003/04 Modellierung — Graphentheorie VI-11 c LETTMANN 2003/04 Modellierung — Graphentheorie VI-12 Knotengrade Beispiel: Landkarte Definition Für einen Graphen G = (V, E) und einen Knoten v ∈ V heißt (v) := |{v ∈ V | {v, v } ∈ E}| der (Knoten-)Grad von v in G. Der Knotengrad von v in G ist die Anzahl der mit v inzidenten Kanten. Definition Für einen Graphen G = (V, E) heißt (G) := max (v) v∈V der (Knoten-)Grad von G. Satz Die Anzahl der Punkte mit ungeradem Grad in einem Graphen ist gerade. Knoten = Autobahnkreuze/-dreiecke, nächste Städte Kanten = Autobahnteilstücke Knotenmarkierungen: Name des Autobahnkreuzes/-dreiecks, Name der Stadt,... Die Summe der Knotengrade aller Knoten ist 2∗(Anzahl Kanten), also gerade. Kantenmarkierungen: Nummer der Autobahn, Entfernung in Straßenkilometern, Anzahl der parallelen Spuren,... c LETTMANN 2003/04 Modellierung — Graphentheorie VI-13 c LETTMANN 2003/04 Modellierung — Graphentheorie VI-14 Wege Wege und Adjazenzmatrix Beispiel: G = ({a, b, c, d}, {{a, b}, {a, d}, {b, c}, {c, d}}) Induktive Definition Sei G = (V, E) ein Graph. 0 1 MG = 0 1 • Für jeden Knoten v0 ∈ V ist (v0) ein Weg in G von v0 nach v0. • Für Knoten v0, . . . , vn, vn+1 ∈ V , eine Kante e = {vn, vn+1} ∈ E ist mit einem Weg (v0, . . . , vn) von v0 nach vn in G auch (v0, . . . , vn , vn+1) ein Weg in G und zwar von v0 nach vn+1. 2 0 MG2 = MG · MG = 2 0 Ein Weg ist also eine nicht-leere Folge von Knoten, die durch Kanten miteinander verbunden sind. 1 0 1 0 0 1 0 1 1 0 1 0 0 2 0 2 2 0 2 0 0 2 0 2 b d a c Sei G = (V, E) ein Graph mit |V | = n und Adjazenzmatrix MG. Meistens findet man die folgende Definition: Definition Für einen Graphen G = (V, E), n ∈ N und Knoten v0, . . . , vn ∈ V mit {vi, vi+1} ∈ E für 0 ≤ i < n ist (v0, . . . , vn) ein Weg von v0 nach vn in G. Die Induktion steckt hier in der Verwendung der (induktiv definierten) endlichen Folgen (v0, . . . , vn ) von Knoten. • Das Matrixelement ai,j von MG gibt die Anzahl der Wege der Länge 1 von vi nach vj an. • Das Matrixelement ai,j von MG gibt die Anzahl der Wege der Länge 2 von vi nach vj an. Satz Für einen Graphen G = (V, E) mit Adjazenzmatrix MG gibt die Matrix MGk die Anzahl der Wege an zwischen Knoten aus V mit genau der Länge k. Definition Die Länge l eine Weges (v0, . . . , vn) in einem GraphenG ist die Anzahl der Kanten auf dem Weg: l((v0, . . . , vn)) = n c LETTMANN 2003/04 Modellierung — Graphentheorie VI-15 c LETTMANN 2003/04 Modellierung — Graphentheorie VI-16 Königsberger Brückenproblem Spezielle Wege Königsberg liegt an den Ufern und zwei Inseln des Pregel. Inseln und Ufer sind mit sieben Brücken miteinander verbunden. Gibt es eine Rundweg in Köningsberg, auf dem man die sieben Brücken jeweils genau einmal überschreitet? Definition Ein Eulerscher Weg in einem Graphen G = (V, E) ist ein Weg, der jede Kante von E genau einmal enthält. Definition Ein Hamiltonscher Weg in einem Graphen G = (V, E) ist ein Weg, der jeden Knoten von V genau einmal enthält. Definition Ein Kreis in einem Graphen G = (V, E) ist ein Weg (v, . . . , v) von v nach v der Länge l(v, . . . , v) ≥ 1. Definition Ein Eulerscher Kreis in G = (V, E) ist ein Kreis, der jede Kante von E genau einmal enthält. Die Untersuchung dieser Frage durch Euler im Jahre 1736 stellt den Anfangspunkt der modernen Graphentheorie dar. Definition Ein Hamiltonscher Kreis in G = (V, E) ist ein Kreis, der jeden Knoten von V genau einmal enthält (ausser Anfangspunkt). c LETTMANN 2003/04 Modellierung — Graphentheorie VI-17 c LETTMANN 2003/04 Modellierung — Graphentheorie VI-18 Beispiele für Wege Aussagen über Wege Kreis in einem Graphen: Lemma Die Länge jedes Weges in einem Graphen G = (V, E) ist beschränkt durch |E|. 3 2 6 Lemma Jeder Weg w in einem Graphen G = (V, E) mit Länge l(w) ≥ |V | enthält einen Kreis. 4 1 5 Satz Jeder kreisfreie Graph mit n Knoten enthält höchstens n − 1 Kanten. Eulerweg in einem Graphen: 3 1 2 2 9 Satz Ist in einem Graph mit mindestens drei Knoten der Grad jedes Knotens grösser gleich der halben Anzahl von Knoten, dann enthält der Graph einen Hamiltonschen Kreis. 3 6 10 4 6 1 4 8 5 7 5 Hamiltonweg in einem Graphen: 3 2 6 4 1 5 c LETTMANN 2003/04 Modellierung — Graphentheorie VI-19 c LETTMANN 2003/04 Modellierung — Graphentheorie VI-20 Traveling Salesman Problem Zusammenhang Optimierungsproblem Gegeben ist ein Menge von Städten, die durch Straßen bekannter Längen verbunden sind. Gesucht ist ein kürzester Rundweg durch alle Städte. Definition Ein Knoten w ∈ V eines Graphen G = (V, E) ist erreichbar vom Knoten v ∈ V aus genau dann, wenn es einen Weg (v, . . . , w) in G gibt. Entscheidungsproblem Gegeben ist ein Menge von Städten, die durch Straßen bekannter Längen verbunden sind. Gesucht ist ein Rundweg durch alle Städte, der höchstens eine vorgegebene Länge B hat. Definition Ein Graph G = (V, E) heißt zusammenhängend, wenn für alle v, w ∈ V gilt, w ist von v aus erreichbar. Entscheidungsproblem Gegeben ist ein Gitter von n × n Prozessoren. Eine Nachricht soll eine sequentiell von Prozessor zu Prozessor weitergegeben werden. Sie soll jeden Prozessor erreichen und zum Initiator zurückkehren. Für welche n ist das möglich? Entscheidungsproblem Gegeben ist ein Graph G = (V, E). Enthält G einen Hamiltonschen Kreis? Definition Eine Zusammenhangskomponente eines Graphen G = (V, E) ist der von einer maximalen Knotenmenge V ⊆ V induzierte Teilgraph von G, so dass G zusammenhängend ist, d.h. der durch Hinzufügen eines weiteren Knotens v ∈ V \ V von V ∪ {v } induzierte Teilgraph von G ist nicht zusammenhängend. Definition Eine Zusammenhangskomponente eines Graphen, die nur aus einem Knoten besteht, heißt auch isolierter Knoten. c LETTMANN 2003/04 Modellierung — Graphentheorie VI-21 c LETTMANN 2003/04 Modellierung — Graphentheorie VI-22 Existenz von Eulerwegen Sätze zum Zusammenhang Beispiel: Das Haus vom Nikolaus Satz Jeder zusammenhängende Graph mit n Knoten enthält mindestens n − 1 Kanten. Satz Ein Graph G = (V, E) enthält genau dann einen Eulerschen Weg, wenn G zusammenhängend ist und höchstens zwei Knoten mit ungeradem Grad enthält. Satz Für einen zusammenhängenden Graphen G = (V, E) sind folgende Aussagen äquivalent: Nicht nur ein Eulerweg existiert, sondern sogar mehrere. Was ist, wenn das Haus vom Nikolaus einen Anbau erhält? • G enthält einen Eulerschen Kreis. • Jeder Knoten in G hat einen geraden Grad. • Die Kantenmenge von G kann in Kreise zerlegt werden. c LETTMANN 2003/04 Modellierung — Graphentheorie VI-23 c LETTMANN 2003/04 Modellierung — Graphentheorie VI-24 Verbindungen und Zusammenhang Bäume Definition Ein Knoten v ∈ V eines zusammenhängenden Graphen G = (V, E) heißt Schnittknoten in G, falls der von V \ {v} induzierte Teilgraph nicht zusammenhängend ist. Definition Eine Kante e ∈ E eines zusammenhängenden Graphen G = (V, E) heißt Brückenkante in G, falls der Graph (V, E \ {e}) nicht zusammenhängend ist. Schnittknoten und Brückenkanten sind also kritische Knoten bzw. Kanten, da der Graph durch ihre Entfernung in verschiedene Zusammenhangskomponenten zerfällt. Schnittkanten spielen bei der Orientierung von Graphen eine Rolle. c LETTMANN 2003/04 Modellierung — Graphentheorie VI-25 Definition Ein Baum ist ein zusammenhängender, kreisfreier Graph G = (V, E). Die Klassenhierarchie des Pakets java.lang in Java bildet einen Baum mit Wurzelklasse Object. Definition Ein Wald ist ein kreisfreier Graph G = (V, E), d.h. die Zusammenhangskomponenten von G sind Bäume. Definition Ein erzeugender Baum (spanning tree) für einen Graphen G = (V, E) ist ein Teilgraph G = (V, E ), der ein Baum ist, d.h. ein Baum, der alle Knoten von G enthält. c LETTMANN 2003/04 Modellierung — Graphentheorie VI-26 Beispiele für Bäume Sätze über Bäume Vollständiger binärer Baum der Tiefe 3 Satz Für einen Graphen G = (V, E) sind folgende Aussagen äquivalent: • G ist eine Baum. • G ist zusammenhängend und für jede Kante e ∈ E ist der Teilgraph G = (V, E \ {e}) nicht zusammenhängend. • G ist kreisfrei und für zwei Knoten v, w ∈ V mit {v, w} ∈ E ist der Wald von vollständigen binären Bäumen Graph G = (V, E ∪ {{v, w}}) nicht kreisfrei. • Zwischen je zwei Knoten aus V gibt es genau einen Weg. Korollar Für einen Baum G = (V, E) mit |V | ≥ 1 gilt: • |V | = |E| + 1 • G hat mindestens einen Knoten v ∈ V mit Grad (v) < 2. Erzeugender Baum für das Nikolaushaus mit Anbau Vom Wurzelknoten des Spannbaumes aus erreicht man jeden Knoten des Graphen über Kanten des Spannbaumes! Meist werden Spannbäume mit zusätzlichen Eigenschaften gesucht, beispielsweise minimales Gesamtgewicht aller Kanten. c LETTMANN 2003/04 Modellierung — Graphentheorie VI-27 c LETTMANN 2003/04 Modellierung — Graphentheorie VI-28 Gewurzelte Bäume (1) Beispiele für Bäume Wurzel Induktive Definition • Für jeden Knoten v ist der Graph G = ({v}, { }) ein Baum mit Wurzel v. • Für ein k ∈ N seinen G1 = (V1, E1), ..., Gk = (Vk , Ek ) Bäume mit Wurzeln v1, ..., vk und paarweise disjunkten Knotenmengen V1, ..., Vk und sei v ∈ V1 ∪ ... ∪ Vk . Dann ist G = ({v} ∪ V1 ∪ ... ∪ Vk , {{v, vi}|1 ≤ i ≤ k} ∪ E1 ∪ ... ∪ Ek ) innere Knoten Blätter ein Baum mit Wurzel v. Mit einer anderen Wurzel ergibt sich der folgende Baum: • Nur so gebildete Graphen sind Bäume. Schränkt man in der Definition die Wahl für k weiter ein, so erhält man spezielle Bäume: • Für k ≤ 2 erhält man die Menge der binären Bäume. • Für k ≤ 3 erhält man die Menge der ternären Bäume. • Für festes k ∈ N erhält man die Menge der k-ären Bäume. c LETTMANN 2003/04 Modellierung — Graphentheorie VI-29 c LETTMANN 2003/04 Modellierung — Graphentheorie VI-30 Gewurzelte Bäume (2) Kantorowitsch-Baum Beobachtung Für einen Baum G = (V, E) kann man jeden Knoten w ∈ V als Wurzel von G festlegen. Definition Ein Kantorowitsch-Baum ist ein Baum G = (V, E) mit Wurzel w ∈ V sowie einer Knotenmarkierung m : V → F ∪ V , so dass Definition In einen Baum G = (V, E) mit Wurzel w heißen für einen Knoten v ∈ V sind alle die Knoten v ∈ V Nachfolger von v, für die v im kürzesten Weg von w nach v enthalten ist. Knoten ohne Nachfolger heißen Blätter, Knoten mit Nachfolgern heißen innere Knoten. Die Nachfolger v von v mit {v, v } ∈ E heißen unmittelbare oder direkte Nachfolger von v. • jeder innere Knoten als Markierung einen Operator hat mit einer Stelligkeit k > 0, sowie genau k unmittelbare Nachfolgerknoten hat und • jeder Blattknoten als Markierung eine Variabe hat oder einen nullstelligen Operator. Kantorowitsch-Baum für die Formel ∀x(∃yP (x, f (y, a)) → P (x, a)) Definition Für einen Baum G = (V, E) mit Wurzel w ∈ V und einen Knoten v ∈ V heißt die Länge eines kürzesten Weges von w nach v die Tiefe von v in G. Die Tiefe des Baumes G mit Wurzel w ist die maximale Tiefe eines Knotens in G. A x Die Tiefe eines Baumes richtet sich also danach, welcher Knoten im Baum als Wurzel festgelegt worden ist. Die Tiefe ist die maximale Länge eines kürzesten Weges von der Wurzel zu einem Knoten. Modellierung — Graphentheorie VI-31 P y P x a x f Definition Für n-ärer Baum G = (V, E) mit Wurzel w ∈ V heißt vollständiger n-ärer Baum genau dann, wenn jeder innere Knoten genau n unmittelbare Nachfolger besitzt und alle Blätter die gleiche Tiefe haben. c LETTMANN 2003/04 E y a c LETTMANN 2003/04 Modellierung — Graphentheorie VI-32 Sätze über k-äre Bäume Induktive Beweise mit k-ären Bäume Satz Ein vollständiger k-ärer Baum G = (V, E) mit Wurzel w ∈ V und n−1 i k Tiefe n, k, n ∈ N, k > 0 hat genau k n Blätter und genau i=0 innere Knoten. Satz Ein vollständiger k-ärer Baum G = (V, E) mit Wurzel w ∈ V und n−1 i k Tiefe n, k, n ∈ N, k > 0 hat genau k n Blätter und genau i=0 innere Knoten. Beweis Beweise über Knotenanzahlen k-ärer Bäume werden durch Induktion über die Tiefe n der Bäume und ihren Aufbau geführt. Die Gesamtzahl der Knoten ist also für k ∈ N, k > 1 n−1 i=0 i n k +k = n i=0 ki = k n+1 − 1 k−1 n=0 Der einzige k-äre Baum der Tiefe 0 ist der Baum der nur aus einem Wurzelknoten besteht. Dieser Baum ist auch vollständig. i Er hat genau k 0 = 1 Blätter und 0−1 i=0 k = 0 innere Knoten. Der Beweis des Satzes wird durch eine Induktion über den Aufbau k-ärer Bäume geführt. Korollar Ein k-ärer Baum G = (V, E) mit Wurzel w ∈ V und Tiefe n, n+1 k, n ∈ N, k > 0 hat höchstens k k−1−1 Knoten. n≥0 Jeder vollständige k-äre Baum G = (V, E) mit Wurzel w ∈ V n−1 i k innere und Tiefe n hat genau k n Blätter und genau i=0 Knoten. n → n + 1 Sei G = (V, E) ein vollständiger k-ärer Baum mit Wurzel w ∈ V und Tiefe n + 1. Also hat w genau k unmittelbare Nachfolger v1 , . . . , v k ∈ V . Der Graph (V \ {w}, E \ {{w, v1}, . . . , {w, vk }}) besteht dann aus genau k Zusammenhangskomponenten, die jeweils vollständige k-äre Bäume mit Wurzeln v1, . . . , vk sind. Diese Zusammenhangskomponenten haben also jeweils genau k n n−1 i Blätter und i=0 k innere Knoten. Insgesamt ergibt sich damit für G = (V, E) • k · k n = k n+1 als Gesamtzahl der Blätter und n−1 i n−1 i+1 (n+1)−1 i (n+1)−1 i • 1 + k · i=0 k 1 + i=0 k = 1 + i=1 k = i=0 k als Gesamtzahl der inneren Knoten. c LETTMANN 2003/04 Modellierung — Graphentheorie VI-33 c LETTMANN 2003/04 Modellierung — Graphentheorie VI-34 Bipartite Graphen Beispiele für bipartite Graphen 3 Definition Ein Graph G = (V, E) heißt bipartit, wenn es zwei disjunkte Knotenmengen V1, V2 ⊆ V (also V1 ∩ V2 = ∅ gibt, so dass E ⊆ {{v1, v2} | v1 ∈ V1, v2 ∈ V2} gilt. 2 6 Die Knotenmenge von G kann also in zwei disjunkte Mengen aufgeteilt werden, so dass Kanten immer mit je einem Knoten aus jeder dieser Mengen inzident sind. 4 1 Ein bipartiter Graph wird auch mit (V1 V2, E) beschrieben, wenn gilt E ⊆ {{v1, v2} | v1 ∈ V1, v2 ∈ V2} und zusätzlich |V1| ≥ |V2|. 5 nicht bipartit Definition Ein Matching (Korrespondenz) in einem bipartiten Graph G = (V1 ∪ V2, E) ist eine Menge von Kanten, die paarweise keine gemeinsamen Knoten haben. 3 2 Für jeden Knoten aus vi ∈ Vi gehört also maximal eine mit vi inzidente Kante zu einem Matching (i = 1, 2). 6 4 1 Definition Ein Matching in einem bipartiten Graph G = (V1 V2, E) heißt vollständig, wenn jeder Knoten aus V2 mit einer Kante des Matching inzident ist. (Beachte hierbei |V1| ≥ |V2|.) 5 bipartit Definition Ein Matching heißt perfekt, wenn alle Knoten aus V1 ∪ V2 mit einer Kante des Matchings inzident sind. c LETTMANN 2003/04 Modellierung — Graphentheorie VI-35 c LETTMANN 2003/04 Modellierung — Graphentheorie VI-36 Beispiele für bipartite Graphen Modellierung mit bipartiten Graphen Satz (P. Hall 1935) In einem bipartiten Graph G = (V1 V2, E) mit |V1| ≥ |V2| gibt es genau dann ein vollständiges Matching, wenn es für jede Menge J ⊆ V2 gilt |{v1 ∈ V1|∃v2 ∈ J : {v1, v2} ∈ E}| ≥ |J| also mindestens |J| Knoten aus V1 zu den Knoten aus J adjazent sind. bipartit Falls |V1| = |V2| gilt, dann ist ein vollständiges Matching auch ein perfektes Matching und umgekehrt. Beispiel: Heiratsproblem Es sei eine endliche Menge V1 von Damen und eine endliche Menge V2 von Herren gegeben. Die Funktion : V2 → P gibt zu jedem Herren die Menge der Damen an, die zu ehelichen er bereit ist. Außerdem sei |V1| ≥ |V2|. Nach dem Satz von Hall gibt es ein vollständiges Matching, wenn für jede Teilmenge J von Herren die Menge v∈J (v) mindestens |J| Elemente enthält. vollständiges Matching maximales Matching “Wenn die Herren nicht zu wählerisch sind, bekommt jeder eine Dame ab.” maximal = maximale Mächtigkeit c LETTMANN 2003/04 Modellierung — Graphentheorie VI-37 c LETTMANN 2003/04 Modellierung — Graphentheorie VI-38 Färbung von Graphen Vierfarbenproblem Definition Eine Färbung eines Graphen G = (V, E) ist eine Knotenmarkierung m : V → M , die jedem Knoten eine Farbe aus M zuordnet, so dass für adjazente Knoten v, w ∈ V gilt m(v) = m(w). Ist jede Landkarte mit maximal vier Farben färbbar? (Länder = Knoten, Kante = gemeinsame Grenze) Definition Ein Graph heißt k-färbbar, falls eine Färbung des Graphen mit k Farben existiert, d.h. mit |M | = k. Eine Färbung eines Graphen mit einer beschränkten Anzahl Farben nennt man auch eine konfliktfreie Knotenmarkierung. Anwendungen sind: Knoten Staat auf Partygast Kursus Prozess Variable im Programm Kante gemeinsame Grenze verfeindet haben gemeinsame Teilnehmer benötigen gleiche Ressource gleichzeitig lebendig Farbe / Marke Farbe Zuordnung auf Tisch Termin Ausführungszeitpunkt Registerspeicher Ja! (Appel & Haken 1977) Definition Die chromatische Zahl χ(G) ist die minimale Anzahl von Farben, mit der eine Färbung des Graphen G möglich ist. Satz Für jeden Graphen G gilt χ(G) ≤ 1 + (G). c LETTMANN 2003/04 Modellierung — Graphentheorie VI-39 c LETTMANN 2003/04 Modellierung — Graphentheorie VI-40 Kantendisjunkte Wege Gerichteter Graph Definition Ein (gerichteter) Graph G = (V, E) ist ein Paar bestehend aus In einem Computernetzwerk bilden die Computer und Netzwerk-Komponenten die Knoten und die Netzwerk-Kabelverbindungen die Kanten. • V einer endlichen Menge von Knoten (vertices) und • E ⊂ V × V einer Menge von Kanten (edges, arcs), i.e. Paaren von Knoten aus V . 3 2 Knoten modellieren Zustände, Situationen, Positionen, . . . Kanten modellieren gerichtete Übergänge zwischen den Knoten. 6 4 Für eine Kante e = (v, w) ∈ E zwischen den Knoten v ∈ V und w ∈ V verwendet man folgende Bezeichnungen: 1 • v und w heißen inzident zu e, • e heißt inzident zu v und w und 5 • v und w heißen adjazent. • v heißt Startknoten und w Endknoten von e. Typische Fragen: 3 Wie viele Netzwerkverbindungen können ausfallen, ohne dass die Verbindung von Computer A zu Computer B unterbrochen wird? 2 Auf wie vielen komplett verschiedenen Wegen können Nachrichten von Computer A an Computer B übermittelt werden? 6 4 1 5 c LETTMANN 2003/04 Modellierung — Graphentheorie VI-41 c LETTMANN 2003/04 Modellierung — Graphentheorie VI-42 Verallgemeinerungsmöglichkeiten für gerichtete Graphen • Schlaufen oder Schlingen Beachte: Schlaufen oder Schlingen, d.h. eine Kante von einem Knoten aus zu diesem selbst zurück, sind nach Definition der gerichteten Graphen ERLAUBT. Maximale Kantenanzahl gerichteter Graphen Lemma Für jeden gerichteten Graphen G = (V, E) gilt: |E| ≤ |V |2 Die Kantenanzahl für gerichtete Graphen kann den Wert |V |2 erreichen, da jeder Knoten von V als Start- und als Endpunkt auftreten kann. 3 2 6 4 1 Die Kantenanzahl für Multigraphen ist nicht beschränkt, da zu zwei Knoten von V beliebig viele Kanten inzident sein können. 5 • Mehrfachkanten Beachte: Zwischen zwei Knoten können nach Definition bereits bis zu zwei Kanten existieren, eine hin und eine zurück. 3 Die Kantenanzahl für Hypergraphen ist höchstens (2|V | )2 = 22|V |, da jede Teilmenge von V als Kante auftreten kann. 2 6 4 1 5 • Hypergraphen Kanten sind Paare von Mengen von Knoten. 3 2 6 4 1 5 c LETTMANN 2003/04 Modellierung — Graphentheorie VI-43 c LETTMANN 2003/04 Modellierung — Graphentheorie VI-44 Datenstrukturen zur Verarbeitung von Graphen Teilgraphen gerichteter Graphen Für einen gerichteten Graphen G = (V, E) sei eine lineare Sortierung der Knoten gegeben: Definition Ein gerichteter Graph G = (V , E ) ist ein Teilgraph eines gerichteten Graphen G = (V, E), wenn gilt V ⊆ V und E ⊆ E mit E ⊆ V × V . V = {v1, . . . , vn } 3 3 2 2 Adjazenzmatrix : mit ai,j = 6 MG = (ai,j )i,j∈{1,...,n} 6 4 1 (vi , vj ) ∈ E 0 1 4 1 5 5 Definition Ein Teilgraph G = (V , E ) eines gerichteter Graphen G = (V, E) mit V = V heißt erzeugender Teilgraph (spanning subgraph). Adjazenzliste: LG = ((v1, al1), . . . , (vn, aln)) mit ali sortierte Liste der Endknoten in V von Kanten in E mit Startknoten vi. 3 3 2 2 6 6 4 Beispiel: 1 G = ({a, b, c, d}, {(a, b), (d, a), (c, b), (c, d)}) 0 0 MG = 0 1 1 0 1 0 0 0 0 0 5 b 5 Definition Für einen gerichteten Graphen G = (V, E) und V ⊆ V heißt der gerichtete Graph G = (V , E ) mit E := {(v1, v2) ∈ E | v1, v2 ∈ V } der von V induzierte Teilgraph von G. 0 0 1 0 4 1 d 3 3 2 LG = ( a, b, c, d, c LETTMANN 2003/04 (b) () (b, d) (a) ) 2 6 6 4 1 a Modellierung — Graphentheorie 4 1 5 c VI-45 c LETTMANN 2003/04 5 Modellierung — Graphentheorie VI-46 Isomorphie von gerichteten Graphen Knoten- und Kantenmarkierungen Definition Für zwei Graphen G1 = (V1, E1) und G2 = (V2, E2) sei eine totale und bijektive Abbildung f : V1 → V2 gegeben. f heißt Isomorphismus von V1 auf V2 genau dann, wenn für alle Knoten v, w ∈ V gilt: (v, w) ∈ E1 ⇐⇒ Definition Eine Knotenmarkierung eines gerichteten Graphen G = (V, E) ist eine Abbildung m:V →M die jedem Knoten v eine Markierung m(v) ∈ M zuordnet. (f (v), f (w)) ∈ E2 Definition Eine Kantenmarkierung eines gerichteten Graphen G = (V, E) ist eine Abbildung m:E→M Offenes Problem der Komplexitätstheorie Gibt es ein effizientes (d.h. polynomielles) Verfahren, um zu entscheiden, ob zwei gerichtete Graphen G1 und G2 isomorph sind? die jeder Kante e eine Markierung m(e) ∈ M zuordnet. Durch Verwendung von Kantenmarkierungen lassen sich gerichtete Multigraphen auf einfache gerichtete Graphen zurückführen: Kantenmarkierung = Anzahl paralleler Kanten mit gleicher Kantenrichtung Dies Problem tritt meist in (vielleicht?) schärferer Form als Teilgraph-Isomorphismus-Problem auf: Gibt es einen Teilgraphen in G1, der isomorph zu G2 ist? c LETTMANN 2003/04 Modellierung — Graphentheorie VI-47 c LETTMANN 2003/04 Modellierung — Graphentheorie VI-48 Wege Knotengrade in gerichteten Graphen Definition Für einen gerichteten Graphen G = (V, E) und einen Knoten v ∈ V heißt (v) := |{v ∈ V | (v, v ) ∈ E}| Definition Für einen gerichteten Graphen G = (V, E), n ∈ N und Knoten v0, . . . , vn ∈ V mit (vi, vi+1) ∈ E oder (vi+1, vi) ∈ E für 0 ≤ i < n ist (v0, . . . , vn) ein Kantenzug von v0 nach vn in G. der Eingangsgrad von v in G, Definition Für einen gerichteten Graphen G = (V, E), n ∈ N und Knoten v0, . . . , vn ∈ V mit (vi, vi+1) ∈ E für 0 ≤ i < n ist (v0, . . . , vn) ein Weg von v0 nach vn in G. vn ist dann von v0 aus erreichbar. (v) := |{v ∈ V | (v , v) ∈ E}| der Ausgangsgrad von v in G und (v) := (v) + (v) der Grad von v in G. Knoten mit Eingangsgrad 0 heißen auch Quellen und Knoten mit Ausgangsgrad 0 heißen auch Senken. Der Knotengrad von v in G ist die Anzahl der mit v inzidenten Kanten, außer eine Schleife führt von v zu v. Die Kantenrichtung aller Kanten auf dem Weg führt also vom Startknoten v0 des Weges zu seinem Endknoten vn . Ein Weg ist also eine nicht-leere Folge von Knoten, die durch Kanten passender Richtung miteinander verbunden sind. In der Literatur findet man hierfür auch den Begriff des gerichteten Weges. Definition Die Länge l eine Weges (v0, . . . , vn) in einem gerichteten GraphenG ist die Anzahl der Kanten auf dem Weg: Definition Für einen Graphen G = (V, E) heißt (G) := max (v) v∈V l((v0, . . . , vn)) = n der (Knoten-)Grad von G. Satz Die Summe der Eingangsgrade aller Knoten ist gleich der Summe der Ausgangsgrade aller Knoten eines gerichteten Graphen. Die Anzahl der Punkte mit ungeradem Grad in einem gerichteten Graphen ist gerade. c LETTMANN 2003/04 Modellierung — Graphentheorie VI-49 Definition Ein Zyklus in einem gerichteten Graphen G = (V, E) ist ein Weg (v, . . . , v) von v nach v der Länge l(v, . . . , v) ≥ 1. c LETTMANN 2003/04 Modellierung — Graphentheorie VI-50 Wege und Adjazenzmatrix 0 0 MG = 0 1 1 0 1 0 0 0 0 0 Beispiele für Wege 0 0 1 0 Zyklus in einem Graphen: 3 2 6 Beispiel: G = ({a, b, c, d}, {(a, b), (d, a), (c, b), (c, d)}) 0 0 MG = 0 1 0 0 MG2 = MG · MG = 1 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 4 1 b d 5 Gerichteter Eulerweg in einem Graphen: 0 0 0 0 3 1 2 2 a c 9 3 6 10 4 6 1 8 Sei G = (V, E) ein gerichteter Graph mit |V | = n und Adjazenzmatrix MG. 5 • Das Matrixelement ai,j von MG gibt die Anzahl der Wege der Länge 2 von vi nach vj an. Satz Für einen gerichteten Graphen G = (V, E) mit Adjazenzmatrix MG gibt die Matrix MGk die Anzahl der Wege an zwischen Knoten aus V mit genau der Länge k. Modellierung — Graphentheorie 5 7 • Das Matrixelement ai,j von MG gibt die Anzahl der Wege der Länge 1 von vi nach vj an. c LETTMANN 2003/04 4 VI-51 Nach der hier vorgestellten Definition für Wege dürfen auch Kanten mehrfach in Wegen benutzt werden. In der Literatur findet man für diese allgemeine Variante auch den Begriff Kantenzug (walk). Bei Kantenzügen und Wegen (trail) ist dabei oft auch die Kantenrichtung irrelevant, man unterscheidet z.B. Wege und gerichtete Wege. Außerdem dürfen Wege meist keine Kante mehrfach nutzen und einfache Wege oder Pfade (path) keinen Knoten mehrfach nutzen. c LETTMANN 2003/04 Modellierung — Graphentheorie VI-52 Zusammenhang Aussagen über Wege Lemma Die Länge jedes Weges in einem gerichteten Graphen G = (V, E) ist beschränkt durch |E|. Lemma Jeder Weg w in einem gerichteten Graphen G = (V, E) mit Länge l(w) ≥ |V | enthält einen Zyklus. Bemerkung Es gibt zyklenfreie gerichtete Graphen mit n Knoten und mehr als n − 1 Kanten. Definition Zwei Knoten v, w ∈ V eines gerichteten Graphen G = (V, E) heißen zusammenhängend genau dann, wenn es einen Kantenzug (v, . . . , w) in G gibt. Definition Ein gerichteter Graph G = (V, E) heißt zusammenhängend, wenn für alle v, w ∈ V gilt, v und w sind zusammenhängend. Definition Eine Zusammenhangskomponente eines gerichteten Graphen G = (V, E) ist der von einer maximalen Knotenmenge V ⊆ V induzierte Teilgraph von G, so dass G zusammenhängend ist, d.h. der durch Hinzufügen eines weiteren Knotens v ∈ V \ V von V ∪ {v } induzierte Teilgraph von G ist nicht zusammenhängend. Satz Jeder zusammenhängende gerichtete Graph mit n Knoten enthält mindestens n − 1 Kanten. c LETTMANN 2003/04 Modellierung — Graphentheorie VI-53 c LETTMANN 2003/04 Modellierung — Graphentheorie VI-54 Starker Zusammenhang Beispiele zum Zusammenhang Definition Ein gerichteter Graph G = (V, E) heißt stark zusammenhängend, wenn für alle v, w ∈ V gilt, dass ein Weg von v nach w in G existiert. Definition Eine starke Zusammenhangskomponente eines gerichteten Graphen G = (V, E) ist der von einer maximalen Knotenmenge V ⊆ V induzierte Teilgraph G von G, so dass G stark zusammenhängend ist, d.h. der durch Hinzufügen eines weiteren Knotens v ∈ V \ V von V ∪ {v } induzierte Teilgraph von G ist nicht mehr stark zusammenhängend. Beispiel 1: Einbahnstraßenregelung zu Libori Aufgrund des hohen Verkehrsaufkommens bei Volksfesten überlegt der Stadtrat, ob nicht sämtliche Straßen für diese Zeit zu Einbahnstraßen gemacht werden. Können Sie den Stadtrat davon überzeugen, dass alle Stellen im Stadtgebiet erreichbar bleiben? Eine starke Zusammenhangskomponente S in G kann man folgendermaßen ermitteln: 1. Setzte S := {v} für einen Knoten v ∈ V . Beispiel 1: Baustelle auf dem Rathausvorplatz 2. Solange ein Knoten w ∈ V \ S existiert mit (a) Es gibt einen Weg von einem Knoten v ∈ S nach w und (b) es gibt einen Weg von w zu einem Knoten v ∈ S. füge w zu S hinzu. 3. Kann kein Knoten aus V \ S mehr zu S hinzugefügt werden, so ist S eine starke Zusammenhangskomponente. Der schlechte Zustand des Pflasters vor dem Rathaus macht eine Erneuerung nötig. Können Fußgänger noch alle Bereiche der Fußgängerzone erreichen, wenn der Rathausvorplatz komplett gesperrt wird, ohne dass sie den Fußgängerbereich verlassen müssen? Ein gerichteter Graph G = (V, E) kann in starke Zusammenhangskomponenten S1 , ..., Sk zerlegt werden, so dass für die S1 , ..., Sk definierenden Knotenmengen V1, ..., Vk gilt V = V1 ... Vk c LETTMANN 2003/04 Modellierung — Graphentheorie VI-55 c LETTMANN 2003/04 Modellierung — Graphentheorie VI-56 Orientierung Vollständige Orientierung Definition Ein gerichteter Graphen Gg = (Vg , Eg ) heißt Orientierung eines ungerichteten Graphen Gu = (Vu, Eu ), falls gilt Definition Ein gerichteter Graph Gg = (Vg , Eg ) heißt vollständige Orientierung eines ungerichteten Graphen Gu = (Vu, Eu ), falls gilt 1. Vg = Vu und 1. Vg = Vu und 2. für jede Kante {v, w} ∈ Eu gilt (v, w) ∈ Eg oder (w, v) ∈ Eg und 2. für jede Kante {v, w} ∈ Eu gilt (v, w) ∈ Eg und (w, v) ∈ Eg . 3. |Eu | = |Eg |. Die vollständige Orientierung eines ungerichteten Graphen G = (V, E) erhält man also, in dem man jede Kante durch die beiden entgegengesetzt gerichteten Kanten ersetzt. Eine Orientierung eines ungerichteten Graphen G = (V, E) kann man als Abbildung auffassen: o : E → V × V mit f ({v, w}) ∈ {(v, w), (w, v)} für {v, w} ∈ E Der gerichtete Graph ergibt sich dann als Go = (V, {f (e) | e ∈ E}). co : E → V × V mit f ({v, w}) = {(v, w), (w, v)} für {v, w} ∈ E und damit Gco = (V, e∈E f (e)). Definition Für einen gerichteten Graphen G = (V, E) ohne Schleifen heißt der ungerichtete Graph |G| = (V, {{v, w}|(v, w) ∈ E}) der zughörige (ungerichtete) Graph (underlying graph) zu G. Definition Ein ungerichteter Graph G = (V, E) heißt orientierbar, falls eine Orientierung von G existiert, die stark zusammenhängend ist. Satz Ein zusammenhängender ungerichteter Graph G = (V, E) ist orientierbar genau dann, wenn G keine Brückenkante enthält. c LETTMANN 2003/04 Modellierung — Graphentheorie VI-57 c LETTMANN 2003/04 Modellierung — Graphentheorie VI-58 Gerichtete Bäume Beispiel für Bäume Definition Ein gerichteter Baum mit Wurzel w ist ein gerichteter Graph G = (V, E) mit w ∈ V , so dass |G| ein Baum ist und so dass von w zu jedem Knoten v ∈ V genau ein Weg existiert. Ein gerichteter Baum ist also ebenso Zusammenhängend und zyklenfrei und besitzt genau |V | − 1 Kanten, analog zum ungerichteten Baum. Vollständige binäre Bäume Induktive Definition • Für jeden Knoten v ist der Graph G = ({v}, { }) ein vollständiger binärer gerichteter Baum mit Wurzel v der Tiefe 0. • Seien G1 = (V1, E1), G2 = (V2, E2) vollständige binäre Bäume der Tiefe n mit Wurzeln v1, v2 und disjunkten Knotenmengen V1, V2 und sei v ∈ V1 ∪ V2. Dann ist Für einen ungerichteten Baum G = (V, E) gibt es also für jeden Knoten w ∈ V genau eine Orientierung von G, die ein gerichteter Baum mit Wurzel w ist. G = ({v} ∪ V1 ∪ V2, {v, v1), (v, v2)} ∪ E1 ∪ E2) ein vollständiger binärer gerichteter Baum mit Wurzel v der Tiefe n + 1. • Nur so gebildete Graphen sind vollständige binäre gerichtete Bäume. Für einen gerichteten Baum gilt: • Es existiert genau ein Knoten mit Eingangsgrad 0, nämlich die Wurzel. • Jeder Knoten außer der Wurzel hat den Eingangsgrad 1. • Blätter sind genau die Knoten mit Ausgangsgrad 0. Definition Für einen gerichteten Baum G = (V, E) mit Wurzel w ∈ V und einen Knoten v ∈ V heißt die Länge eines kürzesten Weges von w nach v die Tiefe von v in G. Die Tiefe des Baumes G mit Wurzel w ist die maximale Tiefe eines Knotens in G. c LETTMANN 2003/04 Modellierung — Graphentheorie VI-59 Satz Ein vollständiger binärer gerichteter Baum G = (V, E) mit Wurzel w ∈ V und Tiefe n, n ∈ N hat genau 2n Blätter und genau n−1 i n i=0 2 = 2 − 1 innere Knoten. Satz Ein binärer gerichteter Baum G = (V, E) mit Wurzel w ∈ V und Tiefe n, n ∈ N hat b Blätter mit b ≤ 2n und genau b − 1 innere Knoten. c LETTMANN 2003/04 Modellierung — Graphentheorie VI-60 Modellierung mit gerichteten Graphen Modellierung mit gerichteten Graphen Programmaufrufgraph: Abhängigkeitsgraph: Aufrufbeziehung zwischen Funktionen in einem Programm Abhängigkeiten zwischen Aktionen oder Ereignissen f Funktion f im Programm f → g Funktion f enthält Aufruf der Funktion g • rekursive Funktion Dauer der Aktion e1 → e2 Aktion e1 ist Vorbedingung für e2 Der Graph muss zyklenfrei sein! Schleife im Aufrufgraph Scheduling: sequentielle bzw. parallele Anordnung von Aktion/Operationen, z.B. von Transaktionen auf einer Datenbank • wechselweise rekursive Aufrufe Zyklus der Länge 2 • nicht rekursive Funktion Gesucht ist die kürzestmögliche Gesamtdauer für die Ausführung aller Aktionen unter Berücksichtigung der Abhängigkeiten. Knoten nicht in Zyklus • nicht erreichbare Funktionen Kritischer Pfad: Weg von einem Anfangsknoten (Wurzel, Knoten mit Eingangsgrad 0) zu einem Endknoten (Blatt, Knoten mit Ausgangsgrad 0) mit maximaler Dauer (Summe der Knotenmarkierungen) Eingangsgrad 0 g f e Aktion, Ereignis h1 Innerhalb eines Plans von kürzestmöglicher Gesamtdauer gibt es für jede Operation einen frühesten Zeitpunkt für den Beginn der Ausführung und einen spätesten Zeitpunkt hierfür, ohne die Gesamtdauer zu erhöhen. h2 Ist der Pufferzeitraum 0, so spricht man von einer kritischen Operation. Ein kritischer Pfad enthält nur kritische Operationen. k D 4 B 1 A 6 C 5 c LETTMANN 2003/04 Modellierung — Graphentheorie VI-61 c LETTMANN 2003/04 Modellierung — Graphentheorie VI-62 Modellierung mit gerichteten Graphen Modellierung mit gerichteten Graphen Zustandsgraph: Fluss-Netzwerke: Übergänge zwischen Situationen oder Zuständen Transport von Punkt zu Punkt über Wege mit beschränkter Kapazität s Situation, Zustand s1 → s2 Aktion überführt Zustand s1 in Zustand s2 Dauer der Operation, Art der Aktion Beispiel: Rätsel des Alkuin (Mann, Wolf, Ziege, Kohlkopf), allgemein Suchräume, Spielbäume, Syntaxdiagramm, Entscheidungsbäume Nimm-Spiel: Gegeben ist ein Stapel mit s Streichhölzern, von dem 2 Spieler abwechselnd mindestens 1 und höchstens n Streichhölzer wegnehmen. Wer das letzte Streichholz nimmt, hat gewonnen. s Stationen s1 → s2 Weg führt von Station s1 zu Station s2 Beispiel: Netzwerk von Kanälen, über die in jeweils eine Richtung Daten übertragen werden können. Jeder Kanal hat eine feste Bandbreite. Wie viele Daten können maximal parallel von einem Knoten s zu einem Knoten t übertragen werden? A:3 A:2 7 B:1 6 A:1 A:3 5 4 B:3 B:1 B:2 4 A:1 3 A:1 4 3 B:3 B:1 3 2 A:3 1 3 3 B:3 B:1 4 A:1 A:2 B:2 2 B:3 5 A:2 B:1 6 B:2 A:3 2 3 2 A:2 1 4 B:1 B:2 2 A:1 3 B:3 4 A:3 A:1 2 3 B:1 3 A:3 A:1 A:2 2 4 38 B:3 B:2 3 2 e 8 A:3 7 7 A:2 1 3 2 s 1 1 B:3 b c 26 1 t B:2 1 3 2 1 24 2 A:3 2 1 2 8 27 A:2 3 d 10 5 B:2 5 A:2 13 a 8 A:1 Kapazität der Verbindung 1 f Gewinnstrategie: Wenn möglich, entferne k der s Streichhölzer mit 1 ≤ k ≤ n, so dass (s − k) mod (n + 1) = 0 gilt. Ansonsten nimm eine beliebige Anzahl und warte auf einen Fehler des Gegenspielers. c LETTMANN 2003/04 Modellierung — Graphentheorie VI-63 c LETTMANN 2003/04 Modellierung — Graphentheorie VI-64 Flüsse und Schnitte (1) Flüsse und Schnitte (2) Definition Sei G = (V, E) ein gerichteter Graph und c : E → R+ 0 eine Kantenmarkierung, die Kapazität der Kanten. t ∈ V sei von s ∈ V aus erreichbar. Es gelte (s) = 0 und (t) = 0. Dann heißt N = (G, c, s, t) ein Fluss-Netzwerk mit Quelle s und Senke t. Ein Fluss auf N ist eine Abbildung f : E → R+ 0 , die die folgenden Bedingungen erfüllt: 1. 0 ≤ f (e) ≤ c(e) für alle e ∈ E. 2. f ((v1, v)) = f ((v, v2)) für alle v ∈ V mit s = v = t. (v1 ,v)∈E Ein Schnitt (S, T ) von N ist eine disjunkte Aufteilung der Knoten, also S T = V , so dass s ∈ S und t ∈ T gilt. c((v1, v2)) c(S, T ) := v1 ∈S,v2 ∈T,(v1 ,v2 )∈E ist die Kapazität des Schnittes (S, T ). Ein Schnitt heißt minimal, wenn seine Kapazität minimal unter allen Schnitten ist. Satz (Ford & Fulkerson 1956) In einem Fluss-Netzwerk N ist der maximale Wert eines Flusses auf N gleich der minimalen Kapazität eines Schnittes in N . (v,v2 )∈E Es gilt dann (s,v)∈E f ((s, v)) = (v,t)∈E f ((v, t)), also liegt ein Fluss von s nach t vor mit dem Wert w(f ) = f ((s, v)) 10|13 a 8|8 e 6|8 s 1|1 b 11|26 s c 1|1 b 1|1 e 7|7 11|26 c 1|1 7|7 7|7 t 14|24 2|2 1|1 2|2 1|1 2|2 8|8 6|8 d 10|10 28|38 d 10|10 28|38 (s,v)∈E Ein Fluss heißt maximal, wenn sein Wert maximal unter allen Flüssen ist. 10|13 a 16|27 f 7|7 t 14|24 2|2 16|27 f (Fluss|Kapazität) c LETTMANN 2003/04 Modellierung — Graphentheorie VI-65 c LETTMANN 2003/04 Modellierung — Graphentheorie VI-66