Einige Schwerpunkte der Vorlesung Diskrete Mathematik und

Werbung
Einige Schwerpunkte der Vorlesung
Diskrete Mathematik und Optimierung
Prof. Dr. Konrad Engel 1
Universität Rostock
Fachbereich Mathematik
D–18051 Rostock
21. Juli 2005
1 [email protected]
2
Kapitel 1
Lineare Optimierung
1.1
Problemstellung
Seien x, y ∈ Rn×1 .
Bezeichnung: x ≤ y :⇔ ∀i ∈ {1, . . . , n} : xi ≤ yi
Allgemeines lineares Optimierungsproblem (LOP):
0
0
Gegeben: A ∈ Rm×n , A0 ∈ Rm ×n , b ∈ Rm×1 , b0 ∈ Rm ×1 , c ∈ Rn×1
Gesucht: x ∈ Rn×1 , sodass
Ax = b
A0 x ≤ b0
cT x → max
(1.1)
Beachte:
aT x ≥ b ⇔ −aT x ≤ −b
cT x → min ⇔ −cT x → max
Zulässiger Bereich: Z:={x ∈ Rn×1 : Ax = b, A0 x ≤ b0 }
x ist zulässig :⇔ x ∈ Z
Zielfunktion: f (x) := cT x
x ist optimale Lösung :⇔ x ∈ Z und ∀x0 ∈ Z : f (x) ≤ f (x0 )
1.2
Graphische Lösung im Fall n = 2
Wissen von der Hesseschen Normalform: Durch eine Ungleichung der Form
ax + by ≤ c
(bzw. ax + by ≥ c)
3
mit (a, b) 6= (0, 0) wird eine Halbebene beschrieben, deren Rand die durch
ax+by = c gegebene Gerade ist und in die, ausgehend von dieser Geraden, der
negative Stellungsvektor (−a, −b) (bzw. der Stellungsvektor (a, b)) zeigt. Bei
mehreren linearen Ungleichungen ist also der zulässige Bereich Durchschnitt
entsprechender Halbebenen, den man auch (konvexes) Polyeder nennt. Will
man das Verhalten einer linearen Zielfunktion f (x, y) = ax + by studieren,
so betrachtet man zunächst eine Niveaulinie (Gerade) der Form ax + by = c.
Auf dieser Geraden hat die Zielfunktion den konstanten Wert c. Verschiebt
man nun die Gerade in Richtung des Stellungsvektors (a, b) parallel, so erhält
man eine neue Gerade der Form ax + by = d. Hierbei ergibt sich d aus
d = a(x + λa) + b(y + λb) = ax + by + λ(a2 + b2 ) = c + λ(a2 + b2 ),
wenn um den Vektor λ(a, b) mit λ > 0 verschoben wurde. Insbesondere ist
d > c, sodass sich hierbei der Wert der Zielfunktion vergrößert.
Bei einem Maximierungsproblem versucht man nun, die Gerade soweit wie
möglich parallel in Richtung des Stellungsvektors zu verschieben, sodass sie
noch Punkte des zulässigen Bereichs enthält. In der Extremlage (falls sie
existiert) sind die Schnittpunkte der Gerade mit dem zulässigen Bereich offenbar genau die optimalen Lösungen. Falls keine Extremlage existiert, gibt
es klarerweise auch keine optimale Lösung.
1.3
Transformation auf Normalform
Ein LOP ist in Normalform gegeben, falls es die Form hat:
Ax = b
x ≥0
T
c x → max
(1.2)
Die Transformation von (1.1) in die Form (1.2) wird wie folgt durchgeführt:
1. Führe für jede Ungleichung aT x ≤ b eine Schlupfvariable z ein, sodass aus
der Ungleichung eine Gleichung aT x + z = b mit z ≥ 0 wird.
2. Führe eine neue Variable xn+1 ein und ersetze jede Variable xj durch
xj − xn+1 .
4
Es entsteht das LOP in Normalform (mit 1T = (1, . . . , 1)):


x
A| −A1 |O 
xn+1  = b
A0 | −A0 1 |E
z


x
xn+1  ≥ 0
z


x
(cT | − cT 1|0T ) xn+1  → max
z
(1.3)
Satz 1.3.1. a) Ist durch x̂, x̂n+1 , ẑ eine optimale Lösung von (1.3) gegeben, so ist x̂ − x̂n+1 1 eine optimale Lösung von (1.1).
b) Ist der zulässige Bereich von (1.3) leer, so ist auch der zulässige Bereich
von (1.1) leer.
c) Ist die Zielfunktion von (1.3) auf dem zulässigen Bereich unbeschränkt,
so gilt dies auch für die Zielfunktion von (1.1).
Bemerkung 1.3.1. Hat man ein LOP, bei dem schon für einige Variablen
eine Nichtnegativitätsbedingung vorhanden ist, so braucht man nur noch für
die restlichen Variablen xj die Ersetzung xj := xj − xn+1 vorzunehmen.
1.4
Basisdarstellungen
Sei ein LOP in Normalform (1.2) gegeben, wobei hier vorausgesetzt wird:
A ist eine m × (n + m) Matrix mit rg(A) = m.
Sei Aj der j–te Spaltenvektor von A, j ∈ J := {1, . . . , n + m}.
Basis von A := Menge von m linear unabhängigen Saltenvektoren von A.
Basismenge:=Menge B ⊆ J von Indizes, sodass {Aj , j ∈ B} Basis von A
ist.
Basisvariable (BV): Alle Variablen xj mit j ∈ B.
Nichtbasismenge:=Menge N B ⊆ J, sodass J \ N B Basismenge ist.
Nichtbasisvariable (NBV): Alle Variablen xj mit j ∈ N B.
Für S = {j1 , . . . , js } ⊆ J sei


 
xj1
cj1
 .. 
 .. 
AS := (Aj1 | . . . |Ajs ), xS =  .  , cS =  . 
xjs
cjs
5
Satz 1.4.1. Sei B Basismenge für A. Das folgende LOP hat den gleichen
zulässigen Bereich und auf dem zulässigen Bereich die gleiche Zielfunktion
wie (1.2):
−1
xB = A−1
B b − AB AN B x N B
x ≥0
(1.4)
−1
T
T
cTB A−1
b
−(c
A
A
−
c
)x
→
max
NB
NB
B B
NB
B
Sei
−1
−1
−1
T
T
T
R := A−1
B AN B , s := AB b, g := cB AB AN B − cN B , w := cB AB b
Dann lautet (1.4)
xB = s − RxN B
x ≥0
(1.5)
T
w − g xN B → max
Diese Darstellung wird Basisdarstellung des LOP’s genannt. Sie wird wie
folgt durch die Simplextabelle angegeben:
B
w
s
NB
gT
R
Bemerkung 1.4.1. Die Simplextabelle ist durch B (und durch die Reihenfolge der Auflistung der Elemente von B und N B) eindeutig festgelegt.
Zur Abkürzung setzt man
r0,0 := w, r0,j := gj , j = 1, . . . , n, ri,0 := si , i = 1, . . . , m
Satz 1.4.2. Sei B = {β1 , . . . , βk , . . . , βm } Basismenge und N B =
{γ1 , . . . , γl , . . . , γn } die zugehörige Nichtbasismenge. Dann ist die durch den
Austausch βk und γl erhaltene Menge B 0 = {β1 , . . . , γl , . . . , βm } genau dann
Basismenge, wenn in der Simplextabelle für B rkl 6= 0 gilt.
Satz 1.4.3. Sei B = {β1 , . . . , βk , . . . , βm } Basismenge und N B =
{γ1 , . . . , γl , . . . , γn } die zugehörige Nichtbasismenge. Es sei rkl 6= 0. Ferner seien B 0 = {β1 , . . . , γl , . . . , βm } und N B 0 = {γ1 , . . . , βk , . . . , γn } die
durch den Austausch βk und γl erhaltene Basismenge bzw. Nichtbasismen0
ge. Die weiteren Elemente der Simplextabelle für B 0 seien mit rij
bezeichnet,
i = 0, . . . , m, j = 0, . . . , n. Dann gilt:

1

,
falls i = k, j = l

rij


 rij ,
falls i = k, j ∈ {0, . . . , n} \ {l}
0
rij
= rklrij

falls i ∈ {0, . . . , m} \ {k}, j = l
− rkl ,



r − ril rkj , falls i ∈ {0, . . . , m} \ {k}, j ∈ {0, . . . , n} \ {l}
ij
rkl
6
1.5
Die Simplexmethode
Sei wieder das LOP in Normalform (1.2) mit einer m × (n + m) Matrix A,
rg(A) = m, gegeben. Sei (1.5) eine Basisdarstellung. Offenbar ist der folgende
Vektor xB eine Lösung des LGS Ax = b:
B
xB
N B = 0, xB = s
Man nennt xB Basislösung. Falls zusätzlich s ≥ 0 gilt, heißt xB zulässige
Basislösung. Für den Wert der Zielfunktion f (x) = cT x auf der Basislösung
xB gilt:
f (xB ) = w.
0
Satz 1.5.1. Sei xB zulässige Basislösung und sei xB eine durch den Aus0
tausch βk ↔ γl gemäß Satz 1.4.3 erhaltene neue Basislösung. Es ist xB
genau dann zulässig, wenn gilt:
rkl > 0 und
si
sk
= min{ , i ∈ {1, . . . , n} : ril > 0}
rkl
ril
oder
rkl 6= 0 und sk = 0.
Satz 1.5.2. Sei xB eine zulässige Basislösung. Gilt in der zugehörigen Simplextabelle
gj ≥ 0 ∀j ∈ {1, . . . , n},
so ist xB eine optimale Lösung des LOP’s (1.2) und w ist der optimale Wert
der Zielfunktion.
Satz 1.5.3. Sei xB eine zulässige Basislösung. Falls es einen Index γl ∈ N B
gibt, sodass in der zugehörigen Simplextabelle
gl < 0 und ril ≤ 0 ∀i ∈ {1, . . . , m}
gilt, so ist die Zielfunktion auf dem zulässigen Bereich unbeschränkt.
Simplexmethode:
Initialisierung:
Berechne eine zulässige Basislösung und die zugehörige Simplextabelle
Iteration:
1. Finde ein l mit gl < 0. Gibt es ein solches l nicht, so ist die optimale
Lösung aus der aktuellen Simplextabelle ablesbar, STOP.
2. Finde ein k mit rkl > 0 und rsklk = min{ rsili , i ∈ {1, . . . , n} : ril > 0}. Gibt
7
es ein solches l nicht, so ist die Zielfunktion unbeschränkt, STOP.
3. Führe den Austausch βk ↔ γl gemäß Satz 1.4.3 durch.
Eine zulässige Basislösung heißt entartet, falls für die zugehörige Simplextabelle gilt: Es gibt ein i ∈ {1, . . . , m} mit si = 0.
Ein LOP in der Normalform (1.2) heißt entartet, wenn es eine entartete
zulässige Basislösung hat.
Satz 1.5.4. Ist das LOP (1.2) nicht entartet, so bricht die Simplexmethode
nach endlich vielen Schritten ab.
Dieser Satz bleibt auch im entarteten Fall richtig, wenn die Wahl von l und
k nach der Regel von Bland eindeutig festgelegt wird:
Regel von Bland:
1. Wähle l so, dass gl < 0 gilt und unter dieser Bedingung γl minimal ist.
2. Wähle k so, dass rkl > 0 und rsklk = min{ rsili , i ∈ {1, . . . , n} : ril > 0} gilt
und unter dieser Bedingung βk minimal ist.
1.6
Bestimmung einer ersten zulässigen Basislösung
Suchen erste zulässige Basislösung für das LOP
Ax = b
x ≥0
T
c x → max
(1.6)
mit einer m × n–Matrix A, für die nicht notwendigerweise rg(A) = m ist.
O.B.d.A. sei b ≥ 0 (sonst entsprechende Gleichungen mit -1 multiplizieren).
Führen künstliche Variable yi = xn+i , i = 1, . . . , m, ein und betrachten das
Hilfsproblem (mit 1 = (1, . . . , 1)T )
Ax + y
x
y
−1T y
=b
≥0
≥0
→ max
(1.7)
Eine erste zulässig Basislösung für (1.7) ist mit B = {n + 1, . . . , n + m}
gegeben:
B x
0
=
y
b
Die zugehörige Simplextabelle lautet:
8
1
−1 b −1T A1
b1
..
.
T
n+1
..
.
n+m
...
...
n
−1T An
A
bm
Da die Zielfunktion nach oben durch 0 beschränkt ist, führt die Zielfunktion
zu einer optimalen Lösung des Hilfsproblems (1.7)
xh
yh
mit der Simplextabelle
β1
..
.
w
s1
..
.
βm
sm
γ1
g1
...
...
γn
gn
(1.8)
R
Satz 1.6.1. Das LOP (1.6) besitzt genau dann eine zulässige Lösung, wenn
y h = 0 ist.
Sei y h = 0. Um eine erste zulässige Basislösung für das LOP (1.6) zu bekommen, werden soviel wie möglich künstliche Variablen zu Nichtbasisvariablen
gemacht:
Solange in der jeweils aktuellen Simplextabelle ein βk ∈ {n + 1, . . . , n + m}
und ein γl ∈ {1, . . . , n} existiert, sodass rkl 6= 0 ist, tausche βk und γl gemäß
Satz 1.4.3 aus. Die zum Schluss erhaltene Tabelle sei wieder in der Form (1.8)
gegeben.
Die erste Simplextabelle (und damit die erste zulässige Basislösung) für das
LOP (1.6) bekommt man nun wie folgt:
1. Streiche alle Spalten, die zu künstlichen Variablen gehören (γj ∈ {n +
1, . . . , n + m}).
2. Streiche alle Zeilen, die zu künstlichen Variablen gehören (βi ∈ {n +
1, . . . , n + m}).
Die jetzt erhaltene Tabelle habe wieder die Form (1.8)
3. Aktualisiere die Zielfunktion: Sei B = {β1 , . . . , βm }. Setze
w := cTB s
gj := cTB Rj − cγj , j = 1, . . . , n
9
Bemerkung 1.6.1. Am Anfang braucht man nur für solche Gleichungen
künstliche Variable einzuführen, die nicht einen Kandidaten für eine Basisvariable besitzen. Man kann die Rechnung abkürzen, indem man nach jedem
Schritt, bei dem eine künstlichen Basisvariable Nichtbasisvariable geworden
ist, sofort die entsprechende Spalte streicht.
Folgerung 1.6.1. Für jedes lineare Optimierungsproblem tritt genau einer
der folgenden Fälle ein:
1. Der zulässige Bereich ist leer.
2. Es gibt eine optimale Lösung.
3. Die Zielfunktion ist auf dem (nichtleeren) zulässigen Bereich unbeschränkt.
1.7
Duale Optimierungsprobleme
Zwei Simplextabellen sind dual zueinander, wenn sie die folgende Form haben:
B
w
s
NB
gT
R
NB
−w
g
B
sT
−RT
Betrachten zwei LOP’s, die entsprechend einer späteren allgemeineren Definition dual zueinander sind:
a11 x1 + . . . + a1n xn + xn+1
...
am1 x1 + . . . + amn xn + xn+m
x
c1 x1 + . . . +
cn xn
(−a11 )yn+1 + . . . + (−am1 )yn+m + y1
...
(−a1n) yn+1 + . . . + (−amn )yn+m + yn
y
(−b1 )yn+1 + . . . + (−bm )yn+m
= b1
= bm
≥ 0
→ max
(1.9)
= −c1
= −cn
≥ 0
→ max
(1.10)
Die zu (1.9) und (1.10) sofort ablesbaren Simplexmatrizen sind dual zueinander:
10
n+1
..
.
0
b1
..
.
n+m
bm
1
−c1
...
...
n
−cn
A
1
..
.
0
−c1
..
.
n
−cn
n+1
b1
...
...
n+m
bm
−AT
Satz 1.7.1. Sei J = {1, . . . , n + m} und B ⊆ J.
a) Genau dann ist B Basismenge für (1.9), wenn J \ B Basismenge für
(1.10) ist.
b) Sei B Basismenge für (1.9) und N B := J \ B Basismenge für (1.10).
Die zu (B, N B) gehörige Simplexmatrix für (1.9) und die zu (N B, B)
gehörige Simplexmatrix für (1.10) sind dual zueinander.
Neben den Standardrelationen =, ≤, ≥ betrachten wir außerdem die Allrelation ./, d.h. a ./ b ∀a, b ∈ R.
Sei R := {≤, ≥, =, ./}. Für R ∈ R sei die duale Relation RD wie folgt
definiert:


≥
≤






≤
≥
.
, so sei RD =
Ist R =


./
=






=
./
Offenbar gilt (RD )D = R für alle R ∈ R und somit haben wir es mit zwei
dualen Relationspaaren zu tun.
Lemma 1.7.1. Seien R ∈ R und a, b, c ∈ R. Dann folgt aus 0Rc (bzw. cR0)
und aRD b die Ungleichung bc ≤ ac (bzw. ac ≤ bc).
Betrachten die zwei LOP’s mit Ri
1, . . . , n:
Pn
j=1 aij xj Ri
0 Sj
Pn
j=1 cj xj →
Pn
D
i=1 aij yi Sj
D
Pm yi Ri
→
i=1 bi yi
∈ R, i = 1, . . . , m, und Sj ∈ R, j =
bi ,
i = 1, . . . , m
xj , j = 1, . . . , n
max
(1.11)
cj , j = 1, . . . , n
0,
i = 1, . . . , m
min
(1.12)
bzw. kurz:
AT y S D c
y RD 0
bT y → min
Ax R
b
0
S
x
cT x → max
11
Die LOP’s (1.11) und (1.12) heißen dual zueinander. Üblicherweise wird
(1.11) als primales Problem und (1.12) als duales Problem bezeichnet.
Wichtiger Spezialfall:
Ax ≤
b
x ≥
0
cT x → max
AT y ≥
c
y
≥ 0
bT y → min
Lemma 1.7.2. Sind x und y zulässige Lösungen von (1.11) und (1.12), so
gilt
cT x ≤ bT y.
Folgerung 1.7.1 (Komplementaritätslemma). Sind x und y zulässige
Lösungen von (1.11) bzw. (1.12) und sind die Bedingungen
!
m
X
(1.13)
aij yi − cj xj = 0, j = 1, . . . , n
i=1
bi −
n
X
!
aij xj
yi = 0, i = 1, . . . , m
(1.14)
j=1
erfüllt, so sind x und y optimale Lösungen für (1.11) bzw. (1.12).
Die Bedingungen (1.13) und (1.14) werden Komplementaritätsbedingungen
genannt.
Folgerung 1.7.2. Ist für eines der Probleme des dualen Paares (1.11),(1.12)
die Zielfunktion auf dem nichtleeren zulässigen Bereich unbeschränkt, so hat
das andere Problem keine zulässige Lösung.
Satz 1.7.2 (Dualitätssatz). Hat eines der Probleme des dualen Paares
(1.11),(1.12) eine optimale Lösung, so hat auch das andere eine optimale
Lösung und die optimalen Werte der Zielfunktionen stimmen überein.
Folgerung 1.7.3 (Komplementaritätssatz). Zulässige Lösungen von (1.11)
und (1.12) sind genau dann beide optimal, wenn die Komplementaritätsbedingungen (1.13) und (1.14) erfüllt sind.
Folgerung 1.7.4. Das Problem
Ax ≤
b
x ≥
0
cT x → max
12
besitzt genau dann eine optimale Lösung, wenn das System


 
A
O
b
 O −AT  x
≤ −c
y
−cT bT
0
x
0
≥
y
0
(1.15)
eine zulässige Lösung besitzt.
Folgerung 1.7.5 (Lemma von Farkas). Die Implikation
Ax ≤ 0 ⇒ cT x ≥ 0
(1.16)
gilt für alle x ∈ Rn genau dann, wenn das System
AT y = −c
y ≥ 0
eine zulässige Lösung besitzt.
13
(1.17)
14
Kapitel 2
Graphen
2.1
Grundbegriffe
Graph (ungerichteter schlichter Graph):
G = (V, E), wobei
V =Menge von Knoten
E=Menge von Kanten=Menge von zweielementigen Teilmengen von V
Di–Graph (gerichteter schlichter Graph):
G = (V, E), wobei
V =Menge von Knoten
E=Menge von Bögen=Menge von Paaren mit Elementen von V , wobei Paare
der Form (v, v) verboten sind
Schreibweise: vw statt {v, w} bzw. (v, w)
Beachte: Im ungerichteten Fall ist vw = wv.
Knoten v, w adjazent in G :⇔ in G gibt es Kante (bzw. Bogen) e = vw oder
e = wv.
Knoten v und Kante (bzw. Bogen) e sind inzident :⇔ in G gibt es Knoten
w, sodass e = vw oder e = wv
Ist e = vw Kante, so heißen v, w Endknoten von e
Ist e = vw Bogen, so heißt e− := v Anfangsknoten und e+ := w Endknoten
Sei E = {e1 , . . . , em } und V = {v1 , . . . , vn }. Die rechteckigen Schemata (Ma15
trizen)

a1,1 a1,2
 a2,1 a2,2
A=

an,1 an,2


. . . a1,n
b1,1 b1,2
 b2,1 b2,2
. . . a2,n 
B = 


...
. . . an,n
bm,1 bm,2

. . . b1,n
. . . b2,n 


...
. . . bm,n
heißen Adjazenzmatrix bzw. Inzidenzmatrix von G = (V, E) :⇔
(
1
aij =
0

1




falls vi vj ∈ E
−1
bij =

sonst



0
falls vj Endknoten von ei
falls vj Anfangsknoten von ei
(nur im gerichteten Fall)
sonst
Listendarstellung eines Graphen G = (V, E): Jedem v ∈ V wird die Liste
aller mit v adjazenten w ∈ V zugeordnet
Graph G = (V, E) ist isomorph zu Graph G0 = (V 0 , E 0 ) :⇔ es existiert eine
bijektive Abbildung f : V → V 0 , sodass vw ∈ E ⇔ f (v)f (w) ∈ E 0
Bemerkung 2.1.1. “Isomorphsein” ist eine Äquivalenzrelation in der Menge aller Graphen.
Seien a, b Knoten von G = (V, E) und k ∈ N.
Gerichteter a–b–Bogenzug der Länge k:
+
k–Tupel Z = (e1 , . . . , ek ) von Bögen von G, sodass e−
1 = a, ek = b und
−
+
ei+1 = ei für alle i = {1, . . . , k − 1}.
Mit ei = vi−1 vi kann der Bogenzug auch durch die Knoten angegeben werden:
Z = (v0 , v1 , . . . , vk )
Im ungerichteten Fall heißt Z = (v0 , v1 , . . . , vk ) a–b–Kantenzug der Länge
k, falls vi vi+1 ∈ E für alle i ∈ {0, . . . , k − 1} und vi vi+1 6= vi+1 vi+2 für alle
i ∈ {0, . . . , k − 2} gilt.
Mit ei = vi−1 vi kann der Kantenzug auch durch Z = (e1 , . . . , ek ) angegeben
werden.
Gilt v0 = vk und k > 0, so spricht man von einem geschlossenen Bogenzug
bzw. Kantenzug.
Ein Bogenzug bzw. Kantenzug Z = (v0 , v1 , . . . , vk ) heißt Di–Weg bzw. Weg
:⇔ v0 , . . . , vk sind paarweise verschieden.
Ein geschlossener Bogenzug bzw. Kantenzug Z = (v0 , v1 , . . . , vk ) heißt Di–
Kreis bzw. Kreis :⇔ v0 , . . . , vk−1 sind paarweise verschieden.
Lemma 2.1.1. Sei G = (V, E) und seien a, b ∈ V .
16
a) Es gibt gerichteten a–b–Bogenzug bzw. a–b–Kantenzug ⇔ Es gibt a–b–
Di–Weg bzw. a–b–Weg.
b) G enthält geschlossenen gerichteten Bogenzug bzw. Kantenzug ⇔ G
enthält Di–Kreis bzw. Kreis
Im Folgenden sei G = (V, E) ungerichtet.
Grad (Valenz) des Knotens v: d(v) := |{w : vw ∈ E}|
Knoten v heißt isoliert :⇔ d(v) = 0
P
Lemma 2.1.2. Es gilt v∈V d(v) = 2|E|.
Lemma 2.1.3. Sei die Relation R auf V definiert durch
aRb :⇔ es existiert ein a–b–Kantenzug
Dann ist R Äquivalenzrelation.
Die Klassen dieser Äquivalenzrelation heißen Komponenten von G.
G zusammenhängend:⇔ G hat nur eine Komponente
Kantenzug Z in G heißt Eulersch :⇔ Z enthält jede Kante von G genau
einmal.
Satz 2.1.1. Sei G zusammenhängend.
In G existiert geschlossener Eulerscher Kantenzug :⇔ jeder Knoten von G
hat geraden Grad.
Kreis K in G heißt Hamilton–Weg bzw. Hamilton–Kreis :⇔ K ist ein Weg
bzw. Kreis und Kenthält jeden Knoten von G genau einmal.
Satz 2.1.2. Sei d(v) ≥
Hamilton–Kreis.
|V |
2
> 1 für alle v ∈ V . Dann enthält G einen
Lemma 2.1.4. Sei G = (V, E).
a) Ist G zusammenhängend, so gilt |E| ≥ |V | − 1.
b) Ist |E| ≥ |V |, so enthält G einen Kreis.
Graph G heißt Baum :⇔ G ist zusammenhängend und G enthält keinen
Kreis.
Graph G heißt Wald :⇔ G enthält keinen Kreis.
Satz 2.1.3. Folgende Bedingungen sind für den Graphen G = (V, E) äquivalent:
17
i) G ist Baum.
ii) G ist zusammenhängend und |E| = |V | − 1.
iii) G enthält keinen Kreis und |E| = |V | − 1.
iv) Für beliebige Knoten a, b von G gibt es genau einen a–b–Weg.
2.2
Minimalgerüste, Greedy Algorithmen,
kürzeste Wege und dynamische Optimierung
Sei G = (V, E) ein Graph oder ein Di–Graph. Eine Funktion w : E → R
heißt Gewichtsfunktion, die auch als Längenfunktion, Kostenfunktion, . . .
interpretiert werden kann. (G, w) bzw. (V, E, w) heißt gewichteter Graph
bzw. Di–Graph.
P
Für E 0 ⊆ E sei w(E 0 ) := e∈E 0 w(e).
Beim folgenden Minimalgerüst–Problem sei G = (V, E) ein ungerichteter
Graph mit V = {1, . . . , n}. T = (V, E 0 ) heißt Gerüst von G, falls E 0 ⊆ E und
T ein Wald ist, der genauso viele (d.h. als Knotenmengen sogar die gleichen)
Komponenten wie G besitzt. Ein zusammenhängendes Gerüst nennt man
auch spannenden Baum. Das Gewicht eines Gerüstes ist das Gewicht seiner
Kantenmenge.
Minimalgerüst–Problem: Gegeben sei ein gewichteter Graph (G, w). Finde ein Gerüst von G mit kleinstem Gewicht.
Greedy–Algorithmus zur Bestimmung eines Minimalgerüstes:
Ordne die Kantenmenge E = {e1 , . . . , em }, sodass w(e1 ) ≤ · · · ≤ w(em ).
Setze E 0 := ∅.
Für k = 1..m
Falls (V, E 0 ∪ {ek }) keinen Kreis enthält, setze E 0 := E 0 ∪ {k}.
Ausgabe (V, E 0 ).
Satz 2.2.1. Der beim Greedy Algorithmus erzeugte Teilgraph (V, E 0 ) von
G = (V, E) ist ein Minimalgerüst von G.
Die Länge eines (Di–)Weges sei das Gewicht seiner Kanten– (bzw. Bogen)–
Menge.
18
Im Folgenden sei G = (V, E) ein Di–Graph mit V = {1, . . . , n}. Der ungerichtete Fall ist ein Spezialfall: w(ij) = w(ji) ∀i, j ∈ V .
Kürzeste–Wege–Problem: Gegeben sei ein gewichteter (Di–)Graph. Finde für zwei beliebige Knoten i, j die kleinste Länge eines i–j–(Di–)Weges
sowie einen solchen kürzesten i–j–(Di–)Weg.
Sei dkij die kleinste Länge eines i–j–Di–Weges, der als Zwischenknoten (alle
Knoten des Di–Weges außer i und j) nur die Knoten der Menge {1, . . . , k}
erlaubt. Gibt es keinen solchen Weg, so setzt man dkij := ∞.
Satz 2.2.2. Falls (G, w) keinen Di–Kreis negativer Länge enthält, gilt:


falls i = j
0,
0
dij = w(ij), falls ij ∈ E


∞,
sonst
und für alle k = 1, . . . , n
k−1
k−1
dkij = min{dk−1
ij , dik + dkj }
Dieser Satz ermöglicht bereits die iterative Berechnung der gesuchten kleinsten Längen dnij . Zur Ermittlung der kürzesten Wege selbst, bestimmt man
noch für alle Knotenpaare (i, j) den vorletzten Knoten vijk eines kürzesten
i–j–Di–Weges, der als Zwischenknoten nur die Knoten der Menge {1, . . . , k}
erlaubt. Gibt es keinen solchen Knoten, so setzt man vijk = 0.
Satz 2.2.3. Falls (G, w) keinen Di–Kreis negativer Länge enthält, gilt:
(
i,
falls ij ∈ E
vij0 =
0, sonst
und für alle k = 1, . . . , n
(
vijk−1 ,
vijk =
k−1
vkj
,
k−1
falls dk−1
≤ dk−1
ij
ik + dkj
sonst
Di–Kreise negativer Länge erkennt man, wenn für ein i und ein k im Algorithmus dkii < 0 ist. Tritt diese Situation ein, so muss der Algorithmus
abgebrochen werden.
Bei der Implementierung benötigt man nur zwei Arrays bzw. Matrizen d und
v. Man initialisiert d und v, wie in den Sätzen 2.2.2 und 2.2.3 und iteriert
dann wie folgt:
19
Dynamische Optimierung zur Bestimmung kürzester Wege:
Für k = 1..n
Für i = 1..n
Für j = 1..n
Falls dij > dik + dkj
vij = vkj ;
dij = dik + dkj ;
Falls dii < 0 STOP wegen Di–Kreis negativer Länge;
Den gesuchten kürzesten i–j–Di–Weg erhält man dann wie folgt in umgekehrter Reihenfolge:
Setze p := j;
Falls vij = 0, so gibt es keinen i–j–Di–Weg, STOP;
Solange p 6= 0
Ausgabe p;
Setze p := vip .
Das Minimalgerüst–Problem lässt sich ebenfalls mittels dynamischer Optimierung lösen. Im Folgenden setzen wir voraus, dass die Kantengewichte
paarweise verschieden sind. Indem man das Gewicht der i–ten Kante ei durch
w(ei ) := w(ei ) + εi mit einem genügend kleinem ε > 0 stört, kann man diese
Voraussetzung immer erfüllen. Praktisch rechnet man dann aber nicht mit
diesen veränderten Gewichten, sondern mit Paaren (w(ei ), i), die lexikografisch geordnet werden, bei denen also die erste Komponente höhere Priorität
als die zweite Komponente hat.
Die Dicke eines i–j–Weges sei gleich dem maximalen Gewicht seiner Kanten.
Zunächst löst man das
Kleinste–Dicke–Problem: Gegeben sei ein gewichteter Graph. Finde für
zwei beliebige Knoten i, j die kleinste Dicke eines i–j–Weges.
Sei dkij die kleinste Dicke eines i–j–Weges, der als Zwischenknoten (alle Knoten des Weges außer i und j) nur die Knoten der Menge {1, . . . , k} erlaubt.
Gibt es keinen solchen Weg, so setzt man dkij := ∞.
Satz 2.2.4. Es gilt:
(
w(ij),
d0ij =
∞,
falls ij ∈ E
sonst
und für alle k = 1, . . . , n
k−1
k−1 k−1
dkij = min{dij
, max{dik
, dkj }}
20
Die Implementierung als Algorithmus ist analog zum Kürzeste–WegeProblem.
Satz 2.2.5. Sei (G, w) ein gewichteter Graph, bei dem alle Kantengewichte
paarweise verschieden sind. Sei E 0 := {e ∈ E : w(e) = dnij }. Dann ist (V, E 0 )
ein Minimalgerüst.
21
Herunterladen