2. Vorlesung Netzwerkcodierung

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