• Keine Ergebnisse gefunden

6.4 Transitive H¨ ulle und DFS

N/A
N/A
Protected

Academic year: 2021

Aktie "6.4 Transitive H¨ ulle und DFS"

Copied!
16
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

6.4 Transitive H¨ ulle und DFS

Wir erinnern uns an den DFS-Algorithmus:

for all nodes v do unmark v od count := 0

while ∃ unvisited v do

r := pick (random) unvisited node push r onto stack

while stack 6 = ∅ do v := pop top element if v unvisited then

mark v visited

push all neighbours of v onto stack num[v]:= + + count

fi od od

EADS 6.4 Transitive H¨ulle und DFS 518/600

©Ernst W. Mayr

(2)

Beispiel 118 Graph G

1

:

−−→

DFS

1 2

3 4

5

6

7 8

9

10 11

Digraph G

2

:

−−→

DFS

1 2

3 4

5

11

6 8

7

9 10

Bezeichnungen:

Baumkante R¨uckw¨artskante Querkante Vorw¨artskante

Bem.: Alle Baumkanten zusammen: DFS-Wald (Spannwald).

EADS 6.4 Transitive H¨ulle und DFS 519/600

©Ernst W. Mayr

(3)

Beispiel 119 (Starke Zusammenhangskomponenten (in Digraphen))

1 2

3 4

5

6

Quelle Senke DAG (Directed Acyclic Graph)

Schrumpfen ⇓ der SZK’s

SZK

1

SZK

2

SZK

3

SZK

4

SZK

5

SZK

6

EADS 6.4 Transitive H¨ulle und DFS 520/600

©Ernst W. Mayr

(4)

DFS in ungerichteten Graphen mit c

Zusammenhangskomponenten, n Knoten, m Kanten:

n − c Baumkanten, m − n + c R¨ uckw¨ artskanten, Zeitaufwand O (n + m)

ZK

2

ZK

1

0

0 1 1 1 1

1 1

1 1

1 1 1 1 1

ZK

2

ZK

1

 

 

 

 

 

 

 

  A

A

aus DFS mit Aufwand Θ(n

2

)

EADS 6.4 Transitive H¨ulle und DFS 521/600

©Ernst W. Mayr

(5)

DFS in gerichteten Graphen (Digraphen) mit n Knoten, m Kanten:

Baum-, Vorw¨ arts-, R¨ uckw¨ arts- und Querkanten:

1 2

3 4

5

6 Vorw¨ artskanten

R¨ uckw¨ artskanten Querkanten Baumkanten Bezeichnungen:

Zeitaufwand: O (n + m)

u ist von v aus auf einem gerichteten Pfad erreichbar gdw u Knoten in dem DFS-Baum (DFS-visit(v)) mit Wurzel v ist.

Also: Transitive H¨ ulle in Zeit O (n · (m + n)). Sehr gut f¨ ur d¨ unne Graphen.

EADS 6.4 Transitive H¨ulle und DFS 522/600

©Ernst W. Mayr

(6)

7. Ein besserer Algorithmus f¨ ur das apsd-Problem in ungewichteten Digraphen

Sei G = (V, E) ein Digraph mit der Knotenmenge { 0, . . . , n − 1 } , dessen Kanten alle die L¨ ange 1 haben.

Sei D = (d

ij

)

0≤i,j<n

die zugeh¨ orige Matrix, mit Eintr¨ agen d

ij

∈ { 0, 1, ∞} .

Entsprechend sei D

die Distanzmatrix, so dass

d

ij

= L¨ ange eines k¨ urzesten Wegs von i nach j

Setze weiterhin

D

(l)

= (d

(l)ij

)

0≤i,j<n

mit d

(l)ij

=

( d

ij

falls d

ij

≤ l

∞ sonst

EADS 7 Ein besserer Algorithmus f¨ur das apsd-Problem in ungewichteten Digraphen 523/600

©Ernst W. Mayr

(7)

Algorithmus a1

co Sei A = (a

ij

)

0≤i,j<n

mit a

ij

=

( 1 falls d

ij

≤ 1

0 sonst oc

B := I co boolesche Einheitsmatrix oc for l := 2 to r + 1 do

B := A · B co boolesches Matrixprodukt oc for 0 ≤ i, j < n do

if b

ij

= 1 then d

(l)ij

:= l else d

(l)ij

:= ∞ fi if d

(lij1)

≤ l then d

(l)ij

:= d

(lij1)

fi

od od

EADS 7 Ein besserer Algorithmus f¨ur das apsd-Problem in ungewichteten Digraphen 524/600

©Ernst W. Mayr

(8)

Dieser Algorithmus berechnet D

(1)

= D, D

(2)

, D

(3)

, . . . , D

(r)

. Sei ω eine Zahl ≥ 2, so dass die Matrixmultiplikation in Zeit O (n

ω

) durchgef¨ uhrt werden kann (Winograd/Coppersmith: ω ≤ 2, 376).

Zeitaufwand f¨ ur Algorithmus a1: O (rn

ω

)

EADS 7 Ein besserer Algorithmus f¨ur das apsd-Problem in ungewichteten Digraphen 525/600

©Ernst W. Mayr

(9)

Algorithmus apsd =

Berechne, mit Algorithmus a1, D

(l)

f¨ ur l = 1, . . . , r; l := r for s := 1 to l

log

3

2

n r

m do for i := 0 to n − 1 do

finde in Zeile i von D

(l)

das d,

l

2

≤ d ≤ l, das in dieser Zeile am wenigsten oft vorkommt

S

i

:= Menge der zugeh¨ origen Spaltenindizes od

l

1

:=

3

2

l

for 0 ≤ i, j < n do

m

ij

:= if S

i

6 = ∅ then min

k∈Si

{ d

(l)ik

+ d

(l)kj

} else ∞ fi if d

(l)ij

≤ l then d

(lij1)

:= d

(l)ij

elif m

ij

≤ l

1

then d

(lij1)

= m

ij

else d

(lij1)

:= ∞ fi od

l := l

1

od

EADS 7 Ein besserer Algorithmus f¨ur das apsd-Problem in ungewichteten Digraphen 526/600

©Ernst W. Mayr

(10)

apsd berechnet

zun¨ achst D

(1)

, . . . , D

(r)

, dann D

(l)

f¨ ur l = r,

3 2 r

,

3 2

3 2 r

, . . . , n |{z}

0

≥n

i j

k ∈ S

i d3

2le−d≤l

z }| {

z }|

d

{

Da f¨ ur d

2l

Werte zur Auswahl stehen, gilt:

| S

i

| ≤ 2n l

EADS 7 Ein besserer Algorithmus f¨ur das apsd-Problem in ungewichteten Digraphen 527/600

©Ernst W. Mayr

(11)

Damit ist die Laufzeit

O

 

  rn

ω

+

log3

2 n r

X

s=1

n

3

(

32

)

s

· r

 

  = O

rn

ω

+ n

3

r

Setze r so, dass die beiden Summanden gleich sind, also r = n

32ω

. Damit ergibt sich f¨ ur apsd die Laufzeit O

n

3+ω2

. Satz 120

Das all-pairs-shortest-distance-Problem f¨ ur Digraphen mit

Kantenl¨ ange = 1 l¨ asst sich in Zeit O (n

3+ω2

) l¨ osen (ω Exponent f¨ ur Matrixmultiplikation).

Beweis:

EADS 7 Ein besserer Algorithmus f¨ur das apsd-Problem in ungewichteten Digraphen 528/600

©Ernst W. Mayr

(12)

Bemerkung: Beim apsp kann die Gr¨ oße der Ausgabe Ω(n

3

) sein:

· · ·

n

3

Knoten

n3

Knoten

| {z }

n 3 Knoten

Verwende stattdessen die k¨ urzeste-Pfade-Nachfolger-Matrix

N ∈ [0, . . . , n − 1]

n×n

, wo n

ij

die Nummer des zweiten Knoten auf

” dem“ k¨ urzesten Pfad von Knoten i zu Knoten j ist.

Eine solche Matrixdarstellung f¨ ur die k¨ urzesten Pfade zwischen allen Knotenpaaren kann in Zeit O (n

3+ω2

· log

c

n) (f¨ ur ein geeignetes c > 0) bestimmt werden.

EADS 7 Ein besserer Algorithmus f¨ur das apsd-Problem in ungewichteten Digraphen 529/600

©Ernst W. Mayr

(13)

Satz 121

F¨ ur Digraphen mit Kantenl¨ angen ∈ { 1, 2, . . . , M } , M ∈ N , kann APSD in Zeit O ((M n)

3+ω2

) gel¨ ost werden.

Beweis:

Idee: Ersetze u v

M0≤M

durch:

· · ·

u = u

0

u

1

u

2

u

M0

= v

EADS 7 Ein besserer Algorithmus f¨ur das apsd-Problem in ungewichteten Digraphen 530/600

©Ernst W. Mayr

(14)

8. Ein Algorithmus f¨ ur die transitive H¨ ulle in Digraphen mit linearer erwarteter Laufzeit

Wir nehmen an, dass die Wahrscheinlichkeit eines Digraphen mit n Knoten und m Kanten eine Funktion (nur) von n und m ist.

Daraus folgt (wir lassen der Einfachheit halber Schleifen (=

Kanten v → v) zu), dass jede Kante (u, v) mit Wahrscheinlichkeit

m

n2

vorhanden ist, falls wir Digraphen mit n Knoten und m Kanten betrachten.

Erinnerung: Breitensuche (BFS): Schlange, queue, FIFO:

FIFO

Durchlaufe Graphen, indem wir, solange m¨ oglich, den vordersten Knoten v aus der Queue nehmen, ihn behandeln und die Liste seiner noch nicht behandelten Nachbarn in die Queue hinten einf¨ ugen.

EADS 8 Ein Algorithmus f¨ur die transitive H¨ulle in Digraphen mit linearer erwarteter Laufzeit 531/600

©Ernst W. Mayr

(15)

Beispiel 122

1

2 3

4 5 6

7 8 9 10

11 12

13 14

Querkanten Baumkanten Bezeichnungen:

EADS 8 Ein Algorithmus f¨ur die transitive H¨ulle in Digraphen mit linearer erwarteter Laufzeit 532/600

©Ernst W. Mayr

(16)

algorithm exp-lin-transitive-closure

0. Konstruiere die linear geordneten Adjazenzlisten L

ri

, i = 1, . . . , n des Graphen G

r

(entsteht aus G durch Umkehrung aller Kanten).

Beispiel:

L

1

= 4 1 2 L

r1

= 1 2 4 L

2

= 1 4 3 L

r2

= 1 3 4 L

3

= 3 2 L

r3

= 2 3 L

4

= 1 4 2 L

r4

= 1 2 4 Ersetze ebenfalls alle L

i

durch L

rri

( → sortierte Adjazenzlisten)

EADS 8 Ein Algorithmus f¨ur die transitive H¨ulle in Digraphen mit linearer erwarteter Laufzeit 533/600

©Ernst W. Mayr

Referenzen

ÄHNLICHE DOKUMENTE

 Der Prozeß verhält sich nach dem k-ten Ereignis (für beliebiges k) genau wie am Anfang. Die X müssen alle identisch und unabhängig voneinander verteilt sein

2) a heavy vehicle is faster to discharge than its passenger car size-equivalent is; 3) the queue in a left-turn lane discharges faster than that in a through lane; 4) an upgrade

Aufgabe 2: Eine Billardkugel der Masse M mit Radius R wird von einem Queue gestoßen, sodass der Schwerpunkt der Kugel eine Geschwindigkeit v 0 erhält.. Ebenso geht die Richtung

Therefore, it is highly necessary to think about anonymity overlays from a network performance perspective: while there is a significant body of work on security and privacy

Man kann auch noch auf eine andere Weise pr¨ ufen, ob Klammerausdr¨ ucke korrekt sind: durch Abz¨ ahlen der ¨ offnenden und schließenden Klammern?. F¨ ur jede ¨ offnende

Doppelt verkettete Listen bestehen aus Listenzellen mit zwei Zeigern. • Ein Zeiger prev auf die

Auch hier generiert Isabelle automatisch eine Induktionsre- gel rtc.induct: [[r* x1 x2;

ourStack.push(&#34;Hallo&#34;);.. Dann testen wir, ob eine Exception geworfen wird, wenn wir versuchen, eine Element aus einem leeren Stack zu entnehmen...