• Keine Ergebnisse gefunden

8.4 Digraphen mit negativen Kantengewichten 8.4.1 Grunds¨atzliches Betrachte Startknoten s und einen Kreis C mit Gesamtl¨ange < 0.

N/A
N/A
Protected

Academic year: 2021

Aktie "8.4 Digraphen mit negativen Kantengewichten 8.4.1 Grunds¨atzliches Betrachte Startknoten s und einen Kreis C mit Gesamtl¨ange < 0."

Copied!
11
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

8.4 Digraphen mit negativen Kantengewichten 8.4.1 Grunds¨ atzliches

Betrachte Startknoten s und einen Kreis C mit Gesamtl¨ ange < 0.

t t t t

t t

t t

- - ppppppppp - t J

J

J J ^ -

Q Q Q Q Q k

+ -

s

k 0

k 1 k 2

k 3 k 4

1 3 2 v

1

1 1

−5 1 C

Sollte ein Pfad von s nach C und von C nach v existieren, so ist ein k¨ urzester Pfad von s nach v nicht definiert.

ADS-EI 8.4 Digraphen mit negativen Kantengewichten 441/451

ľErnst W. Mayr

(2)

Falls aber die Gesamtl¨ ange des Kreises C ≥ 0 ist,

t t t t

t t

t t

- - ppppppppp - t J

J

J J ^ -

Q Q Q Q Q k

+ -

s

k 0

k 1 k 2

k 3 k 4

1 3 2 v

1

1 1

−3 1

dann ist der k¨ urzeste Pfad (der dann o.B.d.A. als kreisfrei

genommen werden kann) wohldefiniert. Probleme gibt es also nur

dann, wenn G einen Zyklus negativer L¨ ange enth¨ alt.

(3)

Dijkstra’s Algorithmus funktioniert bei negativen Kantenl¨ angen nicht:

s

s

s

-

@

@

@

@ @ I

s v

w

3 −2

4

Bei diesem Beispielgraphen (der nicht einmal einen negativen Kreis enth¨ alt) berechnet der Dijkstra-Algorithmus die minimale

Entfernung von s nach w f¨ alschlicherweise als 3 (statt 2).

ADS-EI 8.4 Digraphen mit negativen Kantengewichten 443/451

ľErnst W. Mayr

(4)

8.4.2 Modifikation des Bellman-Ford-Algorithmus

B k [i] gibt die L¨ ange eines k¨ urzesten gerichteten s-i-Pfades an, der aus h¨ ochstens k Kanten besteht. Jeder Pfad, der keinen Kreis enth¨ alt, besteht aus maximal n − 1 Kanten. In einem Graphen ohne negative Kreise gilt daher:

∀i ∈ V : B n [i] = B n−1 [i]

Gibt es hingegen einen (von s aus erreichbaren) Kreis negativer L¨ ange, so gibt es einen Knoten i ∈ V , bei dem ein Pfad aus n Kanten mit der L¨ ange B n [i] diesen Kreis h¨ aufiger durchl¨ auft als jeder Pfad aus maximal n − 1 Kanten der L¨ ange B n−1 [i].

Demnach gilt in diesem Fall:

B n [i] < B n−1 [i]

(5)

Man kann also in den Algorithmus von Bellman-Ford einen Test auf negative Kreise einbauen, indem man auch f¨ ur alle i ∈ V B n [i]

berechnet und am Ende den folgenden Befehl einf¨ ugt:

for i := 1 to n do

if B n [i] < B n−1 [i] then stop

” Negativer Kreis“ fi

ADS-EI 8.4 Digraphen mit negativen Kantengewichten 445/451

ľErnst W. Mayr

(6)

8.4.3 Modifikation des Floyd-Algorithmus

Falls kein negativer Kreis existiert, funktioniert der Algorithmus weiterhin korrekt.

t

t

t

t t

t

* H H

H H H j

? H H H H H Y 6 v 1

v 2

v 3

v 4 v 5

v 6

1 1

1 1 1

−6

c 6 16 = 5 = c 5 16 c 6 61 = −6 = c 5 61

c 6 11 = min{c 5 11 , c 5 16 +c 5 61 } = −1

⇒ der Graph enth¨ alt einen negativen Kreis, gdw ein c n ii < 0

existiert.

(7)

Man kann also in den Algorithmus von Floyd einen Test auf negative Kreise einbauen, indem man am Ende den folgenden Befehl einf¨ ugt:

for i := 1 to n do if c n ii < 0 then stop

” Negativer Kreis“ fi

ADS-EI 8.4 Digraphen mit negativen Kantengewichten 447/451

ľErnst W. Mayr

(8)

8.4.4 Der Algorithmus von Johnson Definition 197

Sei d : A → R ∪ {+∞} eine Distanzfunktion. Eine Abbildung r : V → R

heißt Rekalibrierung, falls gilt:

(∀(u, v) ∈ A)[r(u) + d(u, v) ≥ r(v)]

Beobachtung: Sei r eine Rekalibrierung (f¨ ur d). Setze d 0 (u, v) := d(u, v) + r(u) − r(v). Dann gilt:

d 0 (u, v) ≥ 0

(9)

Sei u = v 0 → · · · → v k = v ein Pfad. Dann ist:

d-L¨ ange :=

k−1

X

i=0

d(v i , v i+1 ) Demnach ist:

d 0 -L¨ ange =

k−1

X

i=0

d 0 (v i , v i+1 )

=

k−1

X

i=0

(d(v i , v i+1 ) + r(v i ) − r(v i+1 ))

=

k−1

X

i=0

d(v i , v i+1 ) + r(v 0 ) − r(v k )

Also ist ein d-k¨ urzester Pfad von u (= v 0 ) nach v (= v k ) auch ein d 0 -k¨ urzester Pfad und umgekehrt. Nach einer Rekalibrierung kann man also auch die Algorithmen anwenden, die eine nichtnegative Distanzfunktion d voraussetzen (z.B. Dijkstra).

ADS-EI 8.4 Digraphen mit negativen Kantengewichten 449/451

ľErnst W. Mayr

(10)

Berechnung einer Rekalibrierung:

~

z

~ 0

0 0 s

s

s

' s

&

$

% s

u

v w

Graph G

d:A→R∪ {+∞}

F¨ uge einen neuen Knoten s hin- zu und verbinde s mit jedem an- deren Knoten v ∈ V durch eine Kante der L¨ ange 0.

Berechne sssp von s nach allen anderen Knoten v ∈ V (z.B. mit Bellman-Ford). Sei r(v) die dadurch berechnete Entfernung von s zu v ∈ V . Dann ist r eine Rekalibrierung, denn es gilt:

r(u) + d(u, v) ≥ r(v) .

(11)

8.5 Zusammenfassung

d ≥ 0 d allgemein

sssp D (Fibonacci): O(m + n · log n) B-F: O(n · m)

apsp D: O(nm + n

2

log n) J: O(n · m + n

2

log n)

F: O(n

3

)

(∗)

F: O(n

3

)

Bemerkung (∗) : In der Praxis ist der Floyd-Algorithmus f¨ ur kleine n besser als Dijkstra’s Algorithmus.

ADS-EI 8.5 Zusammenfassung 451/451

ľErnst W. Mayr

Referenzen

ÄHNLICHE DOKUMENTE

Zwei Lösungen sind dann verschieden, wenn an mindestens einer Stelle zwei verschiedene

[r]

[r]

[r]

[r]

[r]

Für die Teilnehmer der Analysis T1 (also nicht T1a!): bitte im tugonline zur Prüfung am 24.11. auch eine Prüfung, brauchen sich für die Klausur am 24.11. aber nicht anmelden, weil

c) Formulieren Sie den detaillierten Mechanismus der Reaktion für die Bildung des Hauptproduktes inklusive der Bildung des Elektrophils (auch Grenzstrukturen des Elektrophils