2. Vorlesung Netzwerkcodierung Eduard Jorswieck Sommersemester 2010 Vorlesung Netzwerkcodierung Eduard Jorswieck Grundlagen: Graphen ➮ Ein Graph ist ein Paar G = (V, E) mit E ⊆ V × V . V ist eine endliche Menge von Knoten und E eine endliche Menge von Kanten. ➮ Im ungerichteten Graph entspricht jede Kante e ∈ E einem ungeordneten Paar e = (u, v) = (v, u) von Knoten. ➮ Die Anzahl der Knoten eines Graphen wird oft als Ordnung bezeichnet. ➮ Der leere Graph ist G = (∅, ∅) = ∅. ➮ Es gibt auch den leeren Graph auf n Knoten G = (V, ∅) mit |V | = n. ➮ Man sagt, wenn e = (u, v), dass e die Knoten u und v verbindet, u und v benachbart, bzw. adjazent sind, u und v mit der Kante e inzidieren, e mit den Knoten u und v inzidiert. 1 Vorlesung Netzwerkcodierung Eduard Jorswieck ➮ Zwei Kanten mit einem gemeinsamen Endknoten heißen ebenfalls adjazent bzw. benachbart. ➮ Zwei Kanten e, f ∈ E heißen parallel wenn e = (u, v) = f . Man spricht dann von einer Mehrfachkante. ➮ Eine Kante e mit e = (u, u) heißt Schlinge. ➮ Graphen ohne Mehrfachkanten und Schlingen heißen einfach. ➮ Ein einfacher Graph auf n Knoten hat höchstens n(n − 1)/2 Kanten. ➮ Multigraphen besitzen Schlingen und Mehrfachkanten. 2 Vorlesung Netzwerkcodierung Eduard Jorswieck a 1 3 f 5 b c e 2 d 4 g h Beispielgraph in Diagramm-Darstellung 3 Vorlesung Netzwerkcodierung Eduard Jorswieck ➮ Die Lage der Punkte und die Gestalt der Verbindungen im Diagramm können beliebig gewählt werden. Daher existieren zu einem Graphen beliebig viele Diagramme, zu jedem Diagramm existiert genau ein Graph. ➮ Zwei Graphen G und H heißen isomorph (G ∼ = H) wenn es eine Bijektion Φ : V (G) → V (H) gibt mit (u, v) ∈ E(G) ⇔ (Φ(u), Φ(v)) ∈ E(H). Dann heißt die Abbildung Φ Isomorphismus zwischen G und H. Die Abbildung Φ heißt Automorphismus falls V (G) = V (H). ➮ Ein einfacher Graph, bei dem je zwei Knoten adjazent sind, heißt vollständig. ➮ Ein Graph G = (V, E) heißt k-partit, falls sich V in disjunkte Teilmengen V1, ..., Vk mit k ≤ n zerlegen läßt, so daß keine zwei Knoten in Vi für alle 1 ≤ i ≤ k benachbart sind. 4 Vorlesung Netzwerkcodierung Eduard Jorswieck Zwei isomorphe Graphen. 5 Vorlesung Netzwerkcodierung Eduard Jorswieck ➮ 2-partite Graphen heißen auch bipartit. ➮ Ein bipartiter Graph heißt vollständig bipartit falls je zwei Knoten u ∈ V1 und v ∈ V2 benachbart sind. ➮ Ein vollständig bipartiter Graph auf p + q Knoten heißt Kp,q . K1,q heißt Stern und K1,3 Klaue. ➮ Das Komplement Ḡ von G = (V, E) ist der einfache Graph mit der Knotenmenge V und e ∈ E(Ḡ) ⇔ e ∈ / E(G). 6 Vorlesung Netzwerkcodierung Eduard Jorswieck Ein ungerichteter Graph und sein Komplement 7 Vorlesung Netzwerkcodierung Eduard Jorswieck ¯ = G. H = (W, F ) heißt Teilgraph von G = (V, E) falls W ⊆ V ➮ Es gilt Ḡ und F ⊆ E. G heißt dann Obergraph von H. ➮ Wenn aus G nur Kanten und keine Knoten entfernt werden, d.g. W = V ist, heißt H aufspannender Teilgraph von G. ➮ Es sei G ein gewichteter, zusammenhängender, ungerichteter Graph. Die Summe der Gewichte der Kanten einen aufspannenden Graphen B nennt man die Kosten von B. ➮ Ein aufspannender Teilgraph (Baum) von B von G heißt minimal aufspannender Baum von G, falls kein anderer aufspannender Baum B ′ von G existiert, dessen Kosten niedriger sind. 8 Vorlesung Netzwerkcodierung Eduard Jorswieck 7 2 1 2 6 5 4 1 1 2 2 1 4 2 2 Ein Graph und ein zugehöriger minimal aufspannender Baum. Theorem 1. Es sei G ein gewichteter zusammenhängender Graph mit Eckenmenge E. Ferner sei U eine Teilmenge von E und (u, v) eine Kante mit minimalen Kosten mit u ∈ U und v ∈ E \ U . Dann existiert ein minimal aufspannender Baum von G, der die Kante (u, v) enthält. 9 Vorlesung Netzwerkcodierung Eduard Jorswieck ➮ W ⊆ V sei nicht leer und E(W ) = {(u, v) ∈ E|u, v ∈ W }, so ist der von W (Knoten)-induzierte Teilgraph von G G(W ) = (W, E(W )). ➮ Mit G − W bezeichnen wir den induzierten Teilgraph G(V \ W ). ➮ Der Teilgraph (V, E \ F ) wird mit G − F bezeichnet. ➮ Ist F ⊆ V × V so ist G + F der Graph, der aus G durch Hinzufügen der Kanten in F entsteht. ➮ Zwei Graphen G1 und G2 heißen (Knoten)-disjunkt, falls sie keinen Knoten gemeinsam haben und (Kanten)-disjunkt, falls sie keine Kante gemeinsam haben. 10 Vorlesung Netzwerkcodierung Eduard Jorswieck ➮ Die Vereinigung zweier Graphen G1 und G2 ist G1 ∪ G2 = (V (G1) ∪ V (G2), E(G1) ∪ E(G2)) und der Durchschnitt entsprechend. ➮ Sei G = (V, E) und e = (u, v) ∈ E, die Kontraktion von e erzeugt G ◦ e wie folgt: Entferne e, ersetze die Knoten u, v durch neue Knoten w, entferne parallele Kanten. ➮ Sei W ⊆ V , dann erzeugt die Schrumpfung von W den Graphen G ◦ W wie folgt: Entferne Kanten in E(W ), identifiziere alle Knoten in W zu einem neuen Knoten w. Kanten mit Endknoten in W erhalten den neuen Endknoten w. Entferne parallele Kanten. ➮ Ein gerichteter Graph D besteht aus einem Paar (V, A) von Knoten V 11 Vorlesung Netzwerkcodierung Eduard Jorswieck und gerichteten Kanten A. Ist a = (u, v) ∈ A so heißt u Anfangsknoten und v ist Endknoten von a, u ist Vorgänger von v und v ist Nachfolger von u. ➮ Zwei gerichtete Kanten (u, v) und (x, y) heißen parallel falls x = u und y = v oder antiparallel falls x = v und y = u. Ein gerichteter Graph D heißt einfach, falls er keine Schlingen und parallele gerichtete Kanten enthält. ➮ Sei D = (V, A) ein gerichteter Graph. Zu v ∈ V bezeichnet man mit N +(v) = {u ∈ V : (v, u) ∈ A} die Menge der Nachfolger, mit N −(v) = {u ∈ V : (u, v) ∈ A} die Menge der Vorgänger und mit N (v) = N −(v) ∪ N +(v) die Menge der Nachbarn. ➮ Ein Knoten heißt isoliert, falls N (v) = ∅. 12 Vorlesung Netzwerkcodierung Eduard Jorswieck ➮ Für einen Knoten v in einem gerichteten Graphen ist d+(v) = |N +(v)| der Außengrad, d−(v) = |N −(v)| der Innengrad und d(v) = d+(v) + d−(v) der Grad. ➮ Ein Graph heißt k-regulär falls d(v) = k für alle v ∈ V und regulär falls G k-regulär ist für ein k ∈ N. Lemma 1. In einem gerichteten Graphen D = (V, A) gilt X v∈V + d (v) = X d−(v) = |A|. v∈V 13 Vorlesung Netzwerkcodierung Eduard Jorswieck Lemma 2. [Handschlag-Lemma] Sei G = (V, E) ungerichteter Graph, dann gilt P i) v∈V d(v) = 2|E| ii) die Anzahl der Knoten mit ungeradem Grad ist gerade. ➮ Jedem Graphen auf n Knoten v1, ..., vn kann man die Gradsequenz d1, ..., dn zuordnen, o.b.d.A. d1 ≥ d2 ≥ ... ≥ dn. Lemma 3. Sei d1 ≥ d2 ≥ ... ≥ dn mit di ∈ N. P Dann ist d1...dn die n Gradsequenz eines Multigraphen genau dann wenn i=1 di gerade ist. Lemma 4. Sei d1 ≥ ... ≥ dn mit di ∈ N. Dann ist d1, ..., dn die PGradn sequenz eines Multigraphen ohne Schleifen genau dann wenn i=1 di gerade ist und d1 ≤ d2 + ... + dn. 14 Vorlesung Netzwerkcodierung Eduard Jorswieck ➮ Ein ungerichteter Graph, der keinen geschlossenen Web enthält, heißt Wald. Die Zusammenhangskomponenten eines Waldes nennt man Bäume. ➠ Ein Baum ist also ein zusammenhängender ungerichteter Graph, der keinen geschlossenen Weg enthält. ➠ Anwendung in der Codierungstheorie: Binärbaum für einen PräfixCode. 15 Vorlesung Netzwerkcodierung Eduard Jorswieck Grundbegriffe: Schnitt und Pfad ➮ Es sei G = (V, E) und X ⊆ V . E(X, V \ X) = {(u, v) ∈ E : u ∈ X, v ∈ V \ X} besteht aus allen Kanten, die X mit dem Rest verbinden. ➮ E(X, V \ X) bildet einen Schnitt in G, es ist der von X induzierte Schnitt. ➮ In einem gerichteten Graphen D = (V, A) gibt es die zwei Schnitte A(X, V \ X) = {(u, v) ∈ A : u ∈ X, v ∈ V \ X} und A(V \ X, X) = {(u, v) ∈ A : u ∈ V \ X, v ∈ X}. ➮ Allgemein schreibt man A(S, T ) = {(u, v) ∈ A : u ∈ S, v ∈ T } und A(T, S) = {(u, v) ∈ A : u ∈ T, v ∈ S}. 16 Vorlesung Netzwerkcodierung Eduard Jorswieck ➮ Sei G = (V, E) ein ungerichteter Graph. Ein Pfad ist eine endliche Folge P = v0, e1, v1, ..., ek , vk für k > 0. Die Folge beginnt im Startknoten, endet im Endknoten und es gilt ei = (vi−1, vi) ∈ E. P ist dann ein (v0, vk )-Pfad. Die Länge des Pfades ist die Anzahl der Kanten. Equivalient für den gericheten Graphen fordern wir ei = (vi−1, vi) ∈ A. Man schreibt auch P = v0, v1, ..., vk . P heißt kantendisjunkt falls ei 6= ej , für i 6= j oder knotendisjunkt (auch gerichteter Weg) falls vi 6= vj für i 6= j. Lemma 5. Jeder (gerichtete) Pfad von u nach v in einem (gerichteten) Graphen enthält einen (gerichteten) Weg von u nach v. ➮ Zwei Knoten heißen zusammenhängend falls ein Pfad von u nach v existiert. Ein Graph heißt zusammenhängend falls er aus nur einer Zusammenhangskomponente besteht, d.h. alle Knotenpaare zusammenhängend sind. 17 Vorlesung Netzwerkcodierung Eduard Jorswieck ➮ Ein gerichteter Graph heißt zusammenhängend, wenn der zugrundeliegende ungerichtete Graph zusammenhängend ist. ➮ Ein gerichteter Graph heißt stark zusammenhängend wenn für alle Knoten u, v gerichtete Pfade von u nach v und von v nach u existieren. ➮ Ein (gerichteter) Weg v1, ..., vk+1 mit v1 = vk+1 heißt (gerichteter) Kreis. Ein Kreis heißt gerade bzw. ungerade wenn die Länge gerade bzw. ungerade ist. Lemma 6. Ein Graph ist genau dann bipartit, wenn er keinen ungeraden Kreis enthält. ➮ Graphen können auch als Inzidenzmatrix repräsentiert werden. Das ist 18 Vorlesung Netzwerkcodierung Eduard Jorswieck eine n × m Matrix B für ungerichteten Graphen G = (V, E) mit B ij 1 = 2 0 Knoten i inzidiert mit Kante j . Kante j ist Schleife ii sonst (1) Für gerichteten und schleifenfreien Graph G = (V, A) ist B ij 1 = −1 0 falls j = (i, k) für ein k falls j = (k, i) für ein k . sonst (2) 19 Vorlesung Netzwerkcodierung Eduard Jorswieck 5 4 5 3 1 2 6 4 1 3 2 Beispielgraph in Diagramm-Darstellung 20 Vorlesung Netzwerkcodierung Eduard Jorswieck ➮ Für den Graphen in der Abbildung ist die Inzidenzmatrix gegeben als 1 −1 −1 0 0 0 0 0 1 1 0 1 0 0 −1 1 0 B= 0 . 0 0 0 0 −1 −1 −1 1 0 0 0 0 (3) ➮ Im ungerichteten Fall gilt: In jeder Spalte ist die Spaltensumme 2. Ist der Graph schleifenfrei enthält jede Spalte genau zwei Einsen. ➮ Im gerichteten, schleifenfreien Fall ist die Spaltensumme immer Null und jede Spalte enthält genau eine 1 und eine −1. ➮ Eine andere Darstellung von Graphen ist die n × n Adjazenzmatrix A 21 Vorlesung Netzwerkcodierung Eduard Jorswieck mit Aij = ( 1 0 falls eine Kante von i nach j verläuft . sonst (4) ➮ Für das Beispiel ist A gegeben als 0 1 A= 1 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 . 0 0 (5) ➮ Eine andere Darstellungsart sind Adjazenzmatrizen mit Nachfolger- und Vorgängerlisten (im gerichteten Fall). 22 Vorlesung Netzwerkcodierung Eduard Jorswieck Lemma 7. Es sei G ein gerichteter Graph mit Adjazenzmatrix A. Dann ist der (i, j)-te Eintrag von As gleich der Anzahl der verschiedenen Kantenzüge mit Anfangsecke i und Endecke j, welche aus s Kanten bestehen. ➮ Beweis an der Tafel ➮ Aus der Matrix S= n−1 X As s=1 kann nun die Adjzenzmatrix E des transitiven Abschluß gebildet werden: eij = 1 falls sij 6= 0 sonst eij = 0. ➠ Die Matrix E heißt auch Erreichbarkeitsmatrix. 23 Vorlesung Netzwerkcodierung Eduard Jorswieck Algorithmus von Kruskal Der Algorithmus von Kruskal erstellt für einen gewichteten zusammenhängenden Graphen G sukzessive einen minimal aufspannenden Baum B. Es ist ein Greedy-Algorithmus. Der Algorithmus funktioniert folgendermaßen: ➠ Am Anfang ist B ein Wald mit der gleichen Eckenmenge wie G, der keine Kanten besitzt. ➠ In jedem Schritt wird eine Kante in B eingefügt. Dazu werden die Kanten von G nach den Gewichten sortiert. Diese Liste wird in aufsteigender Reihenfolge abgearbeitet. Verbindet eine Kante zwei Ecken aus verschiedenen Zusammenhangskomponenten von B, so wird sie in B eingefügt; ansonsten wird die Kante nicht verwendet. ➠ Der Algorithmus endet, wenn B zusammenhängend ist. Theorem 2. Der Algorithmus von Kruskal bestimmt für einen zusammenhängenden gewichteten Graphen einen minimal aufspannenden 24 Baum. Vorlesung Netzwerkcodierung Eduard Jorswieck Dijkstra-Algorithmus Zur Bestimmung der kürzesten Wege von einem Knoten s zu den anderen Knoten im gewichteten Graph wird der folgende Algorithmus verwendet. Dijkstra-Algorithmus: ➠ ➠ ➠ ➠ s - Startknoten, A - Arbeitsknoten T - Menge der engültig markierten Knoten P - Menge der provisorisch markierten Knoten MN = (k, m) - Markierung eines Knoten N mit k ist Vorgänger knoten auf optimalem Weg zu s und m sind die Kosten des optimalen Weges zu s. 25 Vorlesung Netzwerkcodierung Eduard Jorswieck Init: A = S, T = {S}, markiere S mit (−, 0), P = ∅ (1) Für jeden Nachbarn N von A mit N ∈ /T a) M1 = (A, MA[2] + m) mit m als Kosten von A nach N b) wenn N noch keine Markierung hat oder wenn M1[2] < MN [2], dann markiere N mit M1 c) P = P ∪ {N } (2) Wenn P = ∅ dann beende den Algorithmus (3) Suche aus den P den Arbeitsknoten A so dass MA[2] minimal ist (4) P = P − {A}, T = T ∪ {A} (5) Gehe zu (1) 26 Vorlesung Netzwerkcodierung Eduard Jorswieck 27