background image

Algorytmy i struktury danych

Przeszukiwanie DFS, sortowanie

topologiczne

Mariusz Gł ˛

abowski

Instytut Elektroniki i Telekomunikacji

Politechnika Pozna ´nska

17 pa´zdziernika 2003

dr in˙z. Mariusz Gł ˛

abowski

background image

Przeszukiwanie w gł ˛

ab

Algorytm przeszukiwania wszerz grafu jest znany tak˙ze jako DFS –
Depth-First Search

W czasie przeszukiwania w gł ˛

ab zagł ˛ebiamy si ˛e tak daleko, jak tylko

jest to mo˙zliwe, zanim zajrzymy do innych wierzchołków s ˛

asiednich

W algorytmie DFS wierzchołkom przypisuje si ˛e etykiety czasowe

?

d

[

v

]

: numer kroku oblicze ´n, w którym wierzchołek

v

jest odwie-

dzony po raz pierwszy

?

f

[

v

]

: numer kroku w przeszukiwaniu, w którym ko ´nczy si ˛e badanie

listy s ˛

asiedztwa wierzchołka

v

DFS tworzy las przeszukiwania w gł ˛

ab zło˙zony z jednego lub wi ˛e-

cej drzew przeszukiwania w gł ˛

ab

dr in˙z. Mariusz Gł ˛

abowski

Wykład 5 – Przeszukiwanie DFS, sortowanie topologiczne

1

background image

Przeszukiwanie w gł ˛

ab

Kolorowanie wierzchołków:

?

biały : wierzchołek nie odwiedzony

?

szary : wierzchołek, który został odwiedzony, ale nie wszystkie
jego kraw ˛edzie zostały zbadane

?

czarny : wierzchołek , który jest przetworzony, tzn. gdy jego lista
s ˛

asiedztwa zostaje całkowicie zbadana

Kolorowanie zapewnia, ˙ze ka˙zdy wierzchołek b ˛edzie nale˙zał do do-
kładnie jednego drzewa przeszukiwania w gł ˛

ab



  

  

  

     

  

dr in˙z. Mariusz Gł ˛

abowski

Wykład 5 – Przeszukiwanie DFS, sortowanie topologiczne

2

background image

Przeszukiwanie w gł ˛

ab

DFS

(

G

)

1:

for ka˙zdy wierzchołek

u

V

[

G

]

do

2:

color

[

u

] ←

biay

3:

π

[

u

] ←

NIL

4:

end for

5:

time

0

6:

for ka˙zdy wierzchołek

u

V

[

G

]

do

7:

if

color

[

u

] =

biay

then

8:

DFS

V ISIT

(

u

)

9:

end if

10:

end for

dr in˙z. Mariusz Gł ˛

abowski

Wykład 5 – Przeszukiwanie DFS, sortowanie topologiczne

3

background image

Przeszukiwanie w gł ˛

ab

DFS

V ISIT

(

u

)

1:

color

[

u

] ←

szary

2:

/

biały wierzchołek

u

został wła´snie odwiedzony

/

3:

d

[

u

] ←

time

time

+

1

4:

for ka˙zdy

v

Adj

[

u

]

do

5:

/

zbadaj kraw ˛ed´z

(

u, v

) ∗

/

6:

if

color

[

v

] =

biay

then

7:

π

[

v

] ←

u

8:

DFS

V ISIT

(

v

)

9:

end if

10:

end for

11:

color

[

u

] ←

czarny

/

u

na czarno - został przetworzony

/

12:

f

[

u

] ←

time

time

+

1

dr in˙z. Mariusz Gł ˛

abowski

Wykład 5 – Przeszukiwanie DFS, sortowanie topologiczne

4

background image

Przeszukiwanie DFS - przykład działania

1/

v

u

w

z

y

x

1/

2/

v

u

w

z

y

x

1/

2/

3/

v

u

w

z

y

x

1/

2/

4/

3/

v

u

w

z

y

x

1/

2/

4/

3/

v

u

w

z

y

x



1/

2/

4/5

3/

v

u

w

z

y

x



1/

2/

4/5

3/6

v

u

w

z

y

x



1/

2/7

4/5

3/6

v

u

w

z

y

x



1/

2/7

4/5

3/6

v

u

w

z

y

x





dr in˙z. Mariusz Gł ˛

abowski

Wykład 5 – Przeszukiwanie DFS, sortowanie topologiczne

5

background image

Przeszukiwanie DFS - przykład działania

1/8

2/7

4/5

3/6

v

u

w

z

y

x





1/8

2/7

4/5

3/6

9/

v

u

w

z

y

x





1/8

2/7

4/5

3/6

9/

v

u

w

z

y

x







1/8

2/7

4/5

3/6

9/

10/

v

u

w

z

y

x







1/8

2/7

4/5

3/6

9/

10/

v

u

w

z

y

x









1/8

2/7

4/5

3/6

9/

10/11

v

u

w

z

y

x









1/8

2/7

4/5

3/6

9/12

10/11

v

u

w

z

y

x









Zło˙zono´s´c czasowa

O

(

V

+

E

)

dr in˙z. Mariusz Gł ˛

abowski

Wykład 5 – Przeszukiwanie DFS, sortowanie topologiczne

6

background image

Algorytm DFS - klasyfikacja kraw ˛edzi

Kraw ˛edzie drzewowe: kraw ˛edzie w lesie przeszukiwania w gł ˛

ab

G

π

; kraw ˛ed´z

(

u, v

)

jest kraw ˛edzi ˛

a drzewow ˛

a, je´sli wierzchołek

v

zo-

stał odwiedzony w wyniku zbadania kraw ˛edziami

(

u, v

)

.

Kraw ˛edzie powrotne: kraw ˛edzie

(

u, v

)

, ł ˛

acz ˛

ace wierzchołek

u

z

jego przodkiem

v

w drzewie przeszukiwania w gł ˛

ab. P˛etle s ˛

a trakto-

wane jako kraw ˛edzie powrotne.

Kraw ˛edzie w przód: kraw ˛edzie niedrzewowe

(

u, v

)

, które ł ˛

acz ˛

a

wierzchołek

u

z jego potomkiem

v

w drzewie przeszukiwania w gł ˛

ab.

Kraw ˛edzie poprzeczne: wszystkie inne kraw ˛edzie. Ł ˛

acz ˛

a one

wierzchołki z tego samego drzewa przeszukiwania w gł ˛

ab, je˙zeli

tylko jeden z wierzchołków nie jest przodkiem drugiego, lub ł ˛

acz ˛

a

wierzchołki z ró˙znych drzew przeszukiwania w gł ˛

ab.

dr in˙z. Mariusz Gł ˛

abowski

Wykład 5 – Przeszukiwanie DFS, sortowanie topologiczne

7

background image

Własno ´sci algorytmu DFS

3/6

2/9

4/5

7/8

1/10

12/13

z

y

s

v

w

x

11/16

14/15

u

t

T

B

C

F

y

z

x

w

s

v

t

u

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

x

w

y

z

s

t

u

v

dr in˙z. Mariusz Gł ˛

abowski

Wykład 5 – Przeszukiwanie DFS, sortowanie topologiczne

8

background image

Algorytm DFS - sposób klasyfikacji kraw ˛edzi

Ka˙zda kraw ˛ed´z

(

u, v

)

, gdy jest badana po raz pierwszy, mo˙ze zo-

sta´c sklsyfikowana za pomoc ˛

a koloru wierzchołka

v

, do którego pro-

wadzi

(

u, v

)

jest

kraw ˛edzi ˛

a drzewow ˛

a

je˙zeli

v

jest białe

kraw ˛edzi ˛

a powrotn ˛

a

je˙zeli

v

jest szare

kraw ˛edzi ˛

a w przód

je˙zeli

v

jest czarne i

d

[

u

] <

d

[

v

]

kraw ˛edzi ˛

a poprzeczn ˛

a

je˙zeli

v

jest czarne i

d

[

u

] >

d

[

v

]

Twierdzenie 1. W przeszukiwaniu w gł ˛

ab grafu nieskierowanego

G

ka˙zda kraw ˛ed´z jest albo kraw ˛edzi ˛

a drzewow ˛

a, albo kraw ˛edzi ˛

a po-

wrotn ˛

a

dr in˙z. Mariusz Gł ˛

abowski

Wykład 5 – Przeszukiwanie DFS, sortowanie topologiczne

9

background image

Sortowanie topologiczne

Sortowanie topologiczne dagu

G

= (

V, E

)

jest liniowym uporz ˛

ad-

kowaniem wszystkich jego wierzchołków w taki sposób, ˙ze je˙zeli
graf

G

zawiera kraw ˛ed´z

(

u, v

)

, to w tym porz ˛

adku wierzchołek

u

wyst ˛epuje przed wierzchołkiem

v

.

Je˙zeli graf nie jest acykliczny, to takie uporz ˛

adkowanie nie jest mo˙z-

liwe.

Zastosowania: okre´slenie kolejno´sci wykonywanych czynno´sci.

Do sortowania topologiczneg dagów mo˙ze by´c u˙zyte sortowanie w
gł ˛

ab.

dr in˙z. Mariusz Gł ˛

abowski

Wykład 5 – Przeszukiwanie DFS, sortowanie topologiczne

10

background image

Sortowanie topologiczne



   

       

      

       

         

      

   

         

11/16

12/15

6/7

1/8

2/5

3/4

13/14

17/18

9/10



   

       

      

       

         

      

   

         

11/16

12/15

6/7

1/8

2/5

3/4

13/14

17/18

9/10

dr in˙z. Mariusz Gł ˛

abowski

Wykład 5 – Przeszukiwanie DFS, sortowanie topologiczne

11

background image

Algorytm sortowania topologicznego

Topological

Sort

(

G

)

1. Wykonaj

DFS

(

G

)

w celu obliczenia czasów przetworzenia

f

[

v

]

dla wszystkich wierzchołków

v

2. Wstaw ka˙zdy wierzchołek

v

na pocz ˛

atek listy, kiedy tylko zostanie

przetworzony

3. return lista wierzchołków

Analiza czasowa

Θ

(

V

+

E

)

dr in˙z. Mariusz Gł ˛

abowski

Wykład 5 – Przeszukiwanie DFS, sortowanie topologiczne

12