Abschnitte 5.1-5.3

Werbung
5. Graphenprobleme
Im folgenden bezeichnen G = (E, K ) einen endlichen Graphen mit der Eckenmenge E und der Kantenmenge K.
G kann ungerichtet, gerichtet, schlicht oder nicht schlicht sein.
5.1
Spannende Bäume mit minimalen Kosten
Sei G = (E, K ) zusammenhängend und ungerichtet.
5.1.1 Definition:
Ein Graph G' = (E', K') heißt Teilgraph von G = (E, K ) (beide schlicht) falls gilt:
ungerichteter Fall: E' ⊆ E, K' ⊆ K ∩ P2 (E')
Ein spannender Baum ist ein Teilgraph S = (ES , KS ) von G (d.h. ES = E, KS ⊆ K), und S ist ein Baum.
Ein spannender Wald für G ist eine Menge von Teilgraphen (E1 , K1 ), ..., (El , Kl) von G mit folgender
Eigenschaft:
∀ i : Ki ⊆ K, (Ei , Ki) ist Baum; ∀i, j, i ≠ j: Ei ∩ Ej = ∅;
Sei κ : K → 3
≥0
l
∪
Ei = E
i=1
"Kostenfunktion"
Die Kosten eines spannenden Baumes κ(S) :=
Σ κ(k)
k∈K S
Ziel: Bestimme einen spannenden Baum mit minimalen Kosten
5.1.2 Lemma Für jeden spannenden Baum S = (ES , KS ) für G gilt:
(a) ∀ e1 , e2 ∈ E : der Weg zwischen e1 und e2 in S ist eindeutig gestimmt
(b) wird zu S eine Kante aus K – KS hinzugenommen, so entsteht genau ein Zyklus.
Beweis: (a) ist trivial, denn wäre der Weg nicht eindeutig, dann enthielte S einen Zyklus
(b) ist auch trivial, denn die Endpunkte der hinzugenommenen Kante sind bereits durch genau einen Weg
verbunden.
c
Spannende Bäume mit minimalen Kosten lassen sich schrittweise konstruieren:
5.1.3 Lemma Sei κ : K ∈ 3
G. Sei K' =
≥0
Kostenfunktion für G. Sei {(E1 , K1 ), (E2 , K2 ),..., (El , Kl)} ein spannender Wald für
∪
Ki . Sei k = (e, f) ∉ K' eine Kante mit minimalen Kosten, und e ∈ Ei , f ∈ Ej mit i ≠ j.
i=1
l
Dann existiert ein spannender Baum S = (E, KS ) für G, für den gilt: K' ∪ {k} ⊆ KS , und ∀ spannenden Bäume
S' = (E, KS ') mit K' ⊆ KS ' gilt: κ(S') ≥ κ(S).
Beweis. WA: S' = (E, KS ') sei spannender Baum mit k ∉KS ' , und κ(S') < κ(S).
Lemma 5.1.2(b) ⇒ durch Hinzufügen der Kante k entsteht in S' ein Zyklus. Aus der Annahme über k und aus der
Waldannahme folgt: ∃ Kante k' des Zyklus mit κ(k') ≥ κ(k).
Sei der Graph S aus S' wie folgt konstruiert: k' wird hinzugenommen, k wird entfernt. Dann gilt: S ist spannender
Baum (Lemma 5.1.2(b) !), und κ(S) ≤ κ(S') -- Widerspruch.
c
5.1.4 Algorithmus zur Bestimmung eines spannenden Baumes mit minimalen Kosten (Kruskal, 1965).
Eingabe: G = (E, K ) endlich, ungerichtet, κ : K → 3
≥0
Ausgabe: Spannender Baum (ES ,KS ) mit minimalen Kosten
Verfahren:
begin
KS := ∅; ES := {{e} | e ∈ E }; -- ES ist stets ⊂ P(E)
Sei Q eine Liste, in der die Elemente von K nach aufsteigenden Kosten eingetragen sind;
while | ES | > 1 do
begin
Sei k = (e, f) die erste Kante in Q;
-- k hat minimale Kosten
Entferne k aus Q;
Sei e ∈ W1 , f ∈ W2 , wobei W1 , W2 ∈ ES ;
© 2001 K. Ecker
Angewandte und praktische Informatik, Kap. 5: Graphenprobleme
5-1
if W1 ≠ W2 then
begin
ES := (ES ∪ {W1 ∪ W2 }) – {W1 , W2 };
KS := KS ∪ {k};
end;
end;
end;
5.1.5 Satz Sei |E| = n und |K| = m; falls G zusammenhängend, bestimmt der Kruskal Algorithmus einen
spannenden Baum mit minimalen Kosten für G. Die Zeitkomplexität ist O(m log m) .
Beweis. Die Korrektheit folgt unmittelbar aus Lemma 5.1.2.
Zeitkomplexität: Sortieren der Kanten nach ihren Kosten: O(m log m)
While-Schleife wird maximal m mal durchlaufen.
Gesamtzahl der Schritte: O(m log m) + mO(log n). Wegen m = O(n 2) folgt die Behauptung
5.2
c
Suchverfahren bei ungerichteten Graphen
Hierbei geht es um ein systematisches Durchlaufen aller Knoten eines ungerichteten zusammenhängenden
Graphen, ähnlich dem preorder oder postorder bei binären Bäumen. Bekannte Verfahren sind die Tiefensuche
und die Breitensuche.
Idee der "Tiefensuche": Wähle einen Startknoten x. Besuche eine Nachbarn y1 von x; besuche Nachbarn y2 von
y1 , u.s.w. solange, bis alle Knoten besucht sind.
5.2.1 Algorithmus Tiefensuche
Eingabe: Graph G = (E, K) ungerichtet, zusammenhängend; Startknoten x;
Ausgabe: Menge von Kanten KS , längs derer neue Knoten besucht werden;
Verfahren: Zunächst wird jeder Knoten mit einer Marke "neu" markiert; besuchte Knoten werden mit "alt"
markiert; die Prozedur SUCHE(v: Konten) bestimmt von v aus einen neuen noch nicht mit "alt"
markierten Knoten w, und setzt dort die Suche rekursiv fort.
procedure SUCHE(v: Konten);
begin
markiere v mit "alt";
für jeden Knoten w ∈ N(v) do -- N(v) = { w | {v, w} ∈ K } (Menge der zu v adjazenten Knoten)
if w ist mit "neu" markiert then
begin KS := KS ∪ {{v, w}};
SUCHE(w );
end;
end;
Hauptprogramm:
begin
for all e ∈ E do markiere e mit "neu";
while es existiert ein Knoten e ∈ E mit Marke "neu" do SUCHE(e);
end;
Bemerkungen:
(1) Der Algorithmus gilt auch für nicht zusammenhängende Graphen. Jeder Durchlauf der while-Schleife gilt
einer Zusammenhangskomponente.
(2) (E, KS ) ist ein spannender Wald für (E, K).
(3) Die Zeitkomplexität ist O(n 2).
(4) Die Lösung ist nicht eindeutig
5.2.2 Breitensuche. Idee: Wähle einen Startknoten x. Besuche alle Nachbarn von x der Reihe nach. Danach gehe
zum ersten Nachbarn von x und besuche dessen Nachbarn, dann zum zweiten, usw.
© 2001 K. Ecker
Angewandte und praktische Informatik, Kap. 5: Graphenprobleme
5-2
5.2.3 Verallgemeinerung: Der Algorithmus lässt sich auch auf gerichtete Graphen erweitern. N(v) ist dann durch
die Menge der von v aus durch eine gerichtete Kante erreichbaren Knoten N'(v) = { w | (v, w) ∈ K } zu
ersetzen.
5.3
Kürzeste Wege in kantenbewerteten Graphen
Sei G = (E, K ) ein gerichteter endlicher Graph; Kostenfunktion κ : K → 3
≥0
.
Kosten eines Weges := Summe der Kosten längs der Kanten des Weges.
Problem des kürzesten Weges: Gegeben e, f ∈ E ; finde einen Weg von e nach f mit niedrigsten Kosten.
5.3.1 Allgemeinere Behandlung des Problems
5.3.1.1 Definition abgeschlossener Semiring (S, +, •, 0, 1)
S ... Menge von Elementen
+, • ... binäre Operationen, für die gilt:
(a)
(S, +, 0) ist Monoid (Abgeschlossenheit unter +; + ist assoziativ, 0 ist die Identität)
+ ist kommutativ und idempotent (a + a = a )
(b) (S, , 1) ist Monoid; ∀ a ∈ S: 0 • a = a • 0 = 0 (0 ist "Annilihator")
•
(c)
Distributivgesetz: (a + b) • c = a • c + b • c; c • (a + b ) = c • a + c • b
(d) Sei a 1, a 2, …, a i, … eine abzählbare Folge von Elementen aus S,
dann existiert die Summe a 1 + a 2 + … + a i + … und ist eindeutig
z.B. (a 1 + a 2) + (a 4 + a 4) + ... = a 1 + (a 2 + a 3) + (a 4 + a 5) + ...
(e)
Distributivgesetz für • über abzählbaren Summen: (Σ a i) • (Σ b i) = Σ (a i • b j)
Beispiele von abgeschlossenen Semiringen:
1. S1 = ({0, 1}, +, •, 0, 1)
2.
3.
−≥ 0
−≥ 0
S2 = (3 , min, +, +∞, 0)
(3 ist die Menge der nichtnegativen reellen Zahlen,
einschließlich dem Element +∞)
Bemerkung: +∞ ist Eins-Element unter min, 0 ist Einselement unter +
Σ endliches Alphabet; S3 = (FΣ , ∪ , • , ∅ , {ε})
FΣ = P(Σ*); ∪ ... Vereinigung; • ... Konkatenation
Einheitselement für ∪: ∅, und für • : {ε}
Zur Eigenschaft (d): Sei Ai ∈ FΣ (i = 1, 2, ...); dann:
x ∈ (A1 ∪ A2 ∪ ...) :⇔ ∃ i, x ∈ Ai
5.3.1.2 Einführung einer unären Operation * (Hülle)
Sei (S, +, •, 0, 1) abgeschlossener Semiring, a ∈ S
∞
Definition: a* :=
Σ ai
i=0
[a 0 := 1; a i := a • a i−1]
Eigenschaften:
aus (a) (b) und (d) folgt
a* ∈ S
aus (a), (b) und (c) folgt
a* = 1 + a • a*
ferner:
Beispiele:
0* = 1
S1 : 0* = 1* = 1
−≥ 0
S2 : a* = 0 für alle a ∈ 3
S3 : A* = {ε} ∪ { x1 x2 ... xk | k ≥ 1, xi ∈ A für 1≤ i ≤ k } für alle A ∈ FΣ
5.3.2 Zurück zu Graphen
Sei G = (E, K ) endlich, gerichtet, und (S, +, •, 0, 1) abg. Seminring;
Sei σ : K → S Bewertungsfunktion für die Kanten.
© 2001 K. Ecker
Angewandte und praktische Informatik, Kap. 5: Graphenprobleme
5-3
5.3.2.1 Defninition Wert eines Weges W = k1 k2 ...kl : σ(W) :=
l
Π σ(k l ) (Produkt im Semiring)
i=1
Speziell: Weg der Länge 0 hat den Wert 1 (Einselement im Semiring)
Kosten: κ : E × E → S; κ(e, f) := Summe der Werte aller Wege von e nach f (Semiring-Operation +)
Bemerkung: κ(e, f) kann 0 sein, z.B. wenn kein Weg von e nach f existiert.
Wenn G Zyklen enthält, kann es unendlich viele Wege von e nach f geben; jedoch κ(e, f) ist stets definiert
(wegen Eigenschaft (e)).
Beispiel 1: G (mit σ im Semiring S1 ):
Wert des Weges wxw ist 1 • 0 = 0
0
1
v
w
x
1
Jeder Weg von w nach w der Länge > 0 hat Wert σ = 0
Der Weg von w nach w der Länge 0 hat Wert σ = 1
⇒ Kosten κ(w,w) = 1 + 0 + 0 + .. = 1
Beispiel 2: G (mit σ im Semiring S2 ):
b
Wert des Weges ac: σ (ac) = 7
1
a
Wert des Weges von a über b nach c: σ (abc) = 1 + 5 = 6
5
Kosten von a nach c: κ(a,c) = min{6, 7} = 6
7
Daher: hier wird der numerisch kostenminimale Weg bestimmt!
c
Ziel: Bestimmung von κ(v, w) für alle v, w ∈ E für gegebenen Graphen G = (E, K)
Der folgende Algorithmus benutzt die Semiring-Operationen •, +, * .
Annahme für die Bestimmung des Zeitaufwandes: alle Operationen brauchen gleich lang (1 Zeiteinheit).
5.3.2.2 Algorithmus zur Bestimmung der Kosten zwischen Knotenpaaren
Eingabe: gerichteter Graph G = (E, K ), E = {e1 , e2 , ..., en }, Bewertungsfunktion σ : E × E → S im
abgeschlossenen Semiring (S, +, •, 0, 1).
Sei σ (ei , ej ) = 0 für alle Knotenpaare, die nicht durch eine Kante verbunden sind.
Ausgabe: Summe κ : E × E → S der Werte aller Wege zwischen Knotenpaaren
k
k
Verfahren: Es werden Werte Cij (1 ≤ i ≤ n, 1 ≤ j ≤ n, 0 ≤ k ≤ n) bestimmt. Cij gibt die Summe der Werte aller
Wege von ei nach ej an, die über Knoten aus e1 , e2 , ..., ek laufen. ei , und ej müssen dabei nicht in
4
2
{e1 , e2 , ..., ek} liegen (z.B. trägt der Weg e8 e3 e5 zu C85, aber nicht zu C85 bei).
begin
0
(1) for i := 1 to n do Cii := 1 + σ (ei , ei );
i
0
(2) for all i, j ∈ 1..n and i ≠ j do Cij := σ (ei , ej );
(3) for k := 1 to n do
k
k−1
k−1
k−1
k−1
(4)
for all i, j ∈ 1..n do Cij := C ij + C ik • (Ckk )* • C kj ;
k
1 .. k−1
j
1 .. k−1
1 .. k−1
n
(5) for all i, j ∈ 1..n do κ (ei , ej ) := Cij ;
end;
3
5.3.2.3 Satz Algorithmus 5.3.2.2 berechnet κ(ei , ej ) für i, j ∈ 1..n in O(n ) Operationen •, +, * .
3
Beweis. Zeile (4): wird n mal durchlaufen; je Durchlauf 4 Operationen
2
3
Schleifen in den Zeilen (1), (2), (5): ≤ n Durchläufe. Daher: Zeitkomplexität ist O(n ).
k
Beweis der Korrektheit: Mittels Induktion über k wird gezeigt, dass Cij die behauptete Eigenschaft besitzt.
0
k = 0: Cij erfüllt die Eigenschaft (Zeilen (1) und (2))
Induktionsschritt: folgt aus Zeile (4):
Ein Weg von ei nach ej , der über Knoten aus {e1 , e2 , ..., ek} läuft, hat
© 2001 K. Ecker
Angewandte und praktische Informatik, Kap. 5: Graphenprobleme
5-4
k−1
− entweder keinen inneren Knoten mit Index > k−1 [Term C ij ],
− oder läuft zuerst von ei nach ek , dann 0-, 1- oder mehrmals nach ek, und schließlich von ek nach ej , wobei
k−1
k−1
k−1
jeder Teilabschnitt nur über Knoten aus {e1 , e2 , ..., ek−1 } läuft [Terme C ik , Ckk , C kj ].
Nach Definition des Wertes eines Weges und der Kosten zwischen ei und ej erfolgt die Berechnung in (4) und (5)
korrekt.
c
5.3.2.4 Anwendung des Algorithmus auf spezielle Fälle
(a) Berechnung der reflexiv-transitiven Hülle eines Graphen
Definition: Sei G = (E, K ) gerichteter Graph;
G* := (E, K*) "reflexiv-transitive Hülle von G" ist definiert durch: (e, f) ∈ K* :⇔ ∃ Weg von e nach f in G
Bestimmung von G* nach Algorithmus 5.3.2.2 mittels Berechnung im Semiring S 1 = ({0, 1}, +, •, 0, 1):
Addition, Multiplikation und * sind leicht auszuführen; insbesondere: 0* = 1* = 1.
k
k−1
k−1
Zeile (4) kann daher ersetzt werden durch : Cij := C ij + C ik
•
k−1
C kj
Als Bewertungsfunktion σ wird gewählt:

0
falls (e, f) ∉ K

1
falls (e, f) ∈ K
σ (e, f) := 
Aus dem Algorithmus folgt: κ(e, f) = 1 gdw. ∃ ein Weg von e nach f mit der Länge ≥ 0
Beispiel: Graph
mit σ (e, f):
e2
e1
e3
0
Cij :
e1
e2
e3
e1
1
1
1
e2
1
1
0
e3
0
1
1
...
e1
e2
e3
e1
1
1
1
e2
1
0
0
e3
0
1
0
3
Cij :
e1
e2
e3
e1
1
1
1
e2
1
1
1
e3
1
1
1
(b) Bestimmung des kürzesten Weges in kantenbewerteten Graphen
−≥ 0
Hierbei wird S 2 = (3 , min, +, +∞, 0) zugrunde gelegt. Die Kanten des Graphen werden mit einer Funktion σ :
−≥ 0
K → 3 bewertet, und σ (ei , ej ) := ∞ ∀ (ei , ej ) ∉ K
0
In Zeile (1) des Algorithmus 5.3.2.2 ergibt sich: Cii := min{0, σ (ei , ei )} = 0 für alle i ∈ {1, ..., n},
−≥ 0
k
k−1
k−1
k−1
und da a* = 0 für alle a ∈ 3 , vereinfacht sich Zeile 4 des Algorithmus zu Cij := min(Cij , C ik + C kj )
(hier ist 0 und "+" in S 2 zu verstehen).
Beispiel:
8
Bewertung σ (∞ ist das 0-Element des Semirings S 2)
e2
e1
e2
e3
e1
2
8
4
e2
3
∞
∞
e3
∞
2
∞
3
2
e1
2
4
e3
© 2001 K. Ecker
Angewandte und praktische Informatik, Kap. 5: Graphenprobleme
5-5
⇒
0
Cij
0 8 4
:  3 0 ∞
 ∞ 2 0
1
Cij
0 8 4 
:  3 0 7
 ∞ 2 0
2
Cij
0 8 4
3
:  3 0 7  = Cij
 5 2 0
5.3.3 Zusammenhang zwischen Wegeproblemen und Matrizenoperationen
Zunächst Matrizen:
Sei (S, +, •, 0, 1) abgeschlossener Semiring. Seien A, B, C Matrizen der Dimension n × n mit Elementen aus S .
A + B und
A • B sind wie üblich definiert
Einige Bezeichnungen: Mn
... Menge aller n × n – Matrizen über S
+ n, •n ... Matrizenaddition, -multiplikation
0n
... Nullmatrix,
1
1 n ... Einheitsmatrix
5.3.3.1 Lemma (Mn , + n , •n , 0 n , 1 n) ist abgeschlossener Semiring.
Beweis: als Übung
c
Bemerkung: in (Mn , + n , •n , 0 n , 1 n) ist zu jedem A ∈ Mn die Hülle A* definiert:
∞
0 n* = 1 n, 1 n* = 1 n, und A* = Σ A = 1 n + n A
i
i=0
•n
A*
Zurück zu Graphen:
Voraussetzung aus 5.3.2.2: gerichteter Graph G = (E, K ), E = {e1 , e2 , ..., en }, Bewertungsfunktion σ : E × E → S
im abgeschlossenen Semiring (S, +, •, 0, 1), und σ (ei , ej ) = 0 ∀ ei , ej ∈ E×E − K .
Sei AG die n × n – Matrix mit (A G) ij = σ (ei , ej ) .
Im folgenden wird ein Zusammenhang zwischen
κ : E × E → S der Werte aller Wege zwischen Knotenpaaren
und AG * entwickelt.
5.3.3.2 Lemma Es gilt: κ (ei , ej ) = (A G*) ij
Andeutung des Beweises: Es gilt AG * =
∞
Σ AG k ,
k=0
0
k
AG = 1 n , und AG = AG • AG
k−1
(∀ i ≥ 1).
k
Durch Induktion über k wird gezeigt, dass das (i,j)-te Element von AG gleich ist der Summe der Kosten aller
Wege der Länge k von ei nach ej . Daraus und aus der Definition von AG * folgt die Behauptung.
c
Aus diesem Lemma und dem Algorithmus zur Berechnung der Kosten zwischen Knotenpaaren folgt: der
3
Algorithmus bestimmt die Hülle einer Matrix in O(n ) Einzeloperationen.
Zum Vergleich: Die Matrizenmultiplikation nach dem "üblichen" Verfahren (Spalten mal Zeilen) benötigt
3
ebenfalls O(n ) Einzeloperationen.
Es wird nun gezeigt: Matrizenmultiplikation und Bestimmung der Hülle einer Matrix sind berechnungsäquivalent in folgendem Sinne: Zu jedem Algorithmus zur Matrizenmultiplikation gibt es einen Algorithmus zur
Hüllenberechnung dessen Zeitkomplexität von derselben Ordnung ist, und umgekehrt.
5.3.3.3 Satz Wenn die Hülle einer n × n-Matrix über einem abgeschlossenen Semiring in T(n) Schritten
berechnet werden kann, wobei T(3n) ≤ 27T(n), dann existiert eine Konstante c, und das Produkt zweier n × nMatrizen kann in TM ≤ cT(n) Schritten berechnet werden.
Beweis: Seien A, B zwei n×n-Matrizen; A • B ist zu berechnen ( 0 steht für 0 n , 1 steht für 1 n).
Bilde die Matrix X :=
0 A 0 
 0 0 B
 0 0 0
1 0 0 1
0
0
2
Bestimmung der Hülle von X: X =  0 1 0  , X = X , X =  0
 0 0 1
0
1
0 A•B
0
0
0
0
 3
 , X = X 4 = ... = 0 3n

anstelle von + n, •n wird auch kurz +, • geschrieben
© 2001 K. Ecker
Angewandte und praktische Informatik, Kap. 5: Graphenprobleme
5-6
⇒
1 A A•B 
1
B  .
0 0
1 
X* =  0
A • B kann also aus X* abgelesen werden. Folglich ist TM ≤ T(3n) ≤ 27T(n) = O(T(n)).
c
3
Bemerkung: Die Bedingung T(3n) ≤ 27T(n) ist keine Einschränkung, da T(n) ≤ O(n ) gilt.
Zu Satz 5.3.3.3 gibt es eine Umkehrung:
5.3.3.4 Satz Wenn das Produkt zweier n × n-Matrizen über einem abgeschlossenen Semiring in TM (n) Schritten
berechnet werden kann, und TM (2n) ≥ 4TM (n) gilt, dann existiert eine Konstante c, und die Hülle einer beliebigen
n × n-Matrix kann in T(n) ≤ cTM (n) Schritten berechnet werden.
k
Beweis: Sei X eine n × n-Matrix; sei zunächst angenommen, dass n eine Potenz von 2 ist: n = 2 .
Zerteile X in 4 Teilmatrizen jeweils der Dimension
n n
× :X=
2 2
A B.
 C D
X stellt (als Adjazenzmatrix mit Kantenwerten anstelle von 0, 1) einen kantenbewerteten Graphen G = (E, K ) mit
|E| = n Elementen dar. G kann nun so zerlegt werden in E1 , E2 (E1 ∩ E2 = ∅ , E1 ∪ E2 = E) und |E1 | = |E2 | =
k−1
2 , dass gilt: A repräsentiert alle Kanten innerhalb von E1 , D alle Kanten innerhalb von E2 , B repräsentiert alle
Kanten, die von einem Knoten in E1 zu einem Knoten in E2 laufen, und C umgekehrt:
B
Wir betrachten nun die Matrix X* : diese beschreibt alle Wege im
Graphen G.
A
E1
Ein Weg von e1 nach e2 mit e1 , e2 ∈ E1 hat folgende Form:
C
− entweder wird E1 nie verlassen
− oder: der Weg wechselt zwischen E1 und E2 endlich oft hin
und her:
er verläuft zuerst in E1 bis zu einem Knoten w1 ,
E1
E2
e1
er kommt zurück nach E1 in einem Knoten z1 und verläuft
dort weiter, bis zu einem Knoten w2 , usw.
x1
w1
er betritt E2 in einem Knoten x1 und verläuft dort bis zu
einem Knoten y1 ,
Schließlich endet der Weg in E1 im Knoten e2 .
D
E2
z1
w2
y1
...
xk
zk
Kosten aller Wege dieser Art: (A + B • D* • C)* :
yk
D* ... Kosten aller Wege innerhalb E2
e2
B • D* • C ... Kosten aller Wege wi → xi → . . . → yi → zi ( wi ,
zi ∈ E1 , xi , yi ∈ E2 )
A + B • D* • C ... alle Wege zwischen Knoten von E1 , die entweder nur eine einzelne Kante haben, oder
direkt nach E2 springen und irgendwann wieder nach E1 zurückkommen.
Jeder Weg zwischen Knoten aus E1 kann daher als Folge von Wegen dargestellt werden, die durch
A + B • D* • C beschrieben werden, also durch (A + B • D* • C )* .
Sei E := (A + B • D* • C )* . In der Matrix befindet sich E im 1. Quadranten (links oben). Ähnlich werden die
übrigen Quadranten bestimmt:
X* =
E•B•D*
 E

E F
*
*
 D •C•E D +D*•C•E•B•D*  =:  G H 
Zur Abschätzung des Zeitaufwands wird schrittweise die Berechnung der Quadraten betrachtet:
T1 := D*
T2 := B • T1
T3 := T1 • C
E = (A + T2 • C)*
F := F • T2
G := T3 • E
H := T1 + G • T2
Insgesamt werden zur Berechnung von X* benötigt: 2 Hüllengerechnungen (*-Operationen),
k−1
k−1
6 Matrizenprodukte und 2 Additionen von 2 × 2 – Matrizen. Bei rekursiver Berechnung der Hülle von X
ergibt sich daher die Rekursionsgleichung für den Zeitaufwand:
© 2001 K. Ecker
Angewandte und praktische Informatik, Kap. 5: Graphenprobleme
5-7
T(1) = 1,
k
k−1
k−1
2k−2
T(2 ) = 2T(2 ) + 6TM (2 ) + 2⋅2
(5-1)
k
k
Behauptung: es existiert eine Konstante c > 0, und T(2 ) ≤ cTM (2 ) für alle k .
Induktion: k = 0: trivial, da c beliebig > 0 gewählt werden kann.
Induktionsschritt: Sei c so, dass T(2
k−1
) ≤ cTM (2
k−1
Aus der Voraussetzung TM (2n) ≥ 4TM (n) folgt TM (2
k
T(2 ) ≤ (2c + 8) TM (2
k−1
k
k−1
)≥ 2
2k−2
(da TM (1) = 1). Aus (5-1) erhalten wir daher
),
und mit der Voraussetzung TM (2n) ≥ 4TM (n) folgt TM (2
k
k
). Zu zeigen ist: T(2 ) ≤ cTM (2 ) .
k−1
1
4
k
k
1
2
k
) ≤ TM (2 ), also T(2 ) ≤ ( c + 2)TM (2 ). Wenn c ≥ 4
k
gewählt wird, folgt T(2 ) ≤ cTM (2 ).
Im Falle dass n keine Potenz von 2 ist, wird X in die kleinste Matrix eingebettet, deren Dimension eine Potenz
 X 0  . Im ungünstigsten Fall wird die Dimension dadurch fast verdoppelt. Wahl einer neuen
von 2 ist:
0 1 
Konstanten c' = 8c ergibt dann T(n) ≤ c'TM (n) . ?
---- Fortsetzung Kapitel 5 folgt ----
© 2001 K. Ecker
Angewandte und praktische Informatik, Kap. 5: Graphenprobleme
5-8
Herunterladen