Algorytm Dijkstry

background image

Zastosowania algorytmu BFS

Algorytm Dijkstry: uogólnienie algorytmu BFS przeszukiwania grafu wszerz do grafów z wagami.

ASD240 - Algorytmy i struktury danych – p.2

background image

Zastosowania algorytmu BFS

Algorytm Dijkstry: uogólnienie algorytmu BFS przeszukiwania grafu wszerz do grafów z wagami.

Dane:

graf skierowany

G

= (V, E)

i funkcja wagowa

w

: E → R

+

(BFS:

∀e w(e) = 1

)

ASD240 - Algorytmy i struktury danych – p.2

background image

Zastosowania algorytmu BFS

Algorytm Dijkstry: uogólnienie algorytmu BFS przeszukiwania grafu wszerz do grafów z wagami.

Dane:

graf skierowany

G

= (V, E)

i funkcja wagowa

w

: E → R

+

(BFS:

∀e w(e) = 1

)

2

2

2

2

6

1

5

4

1

1

3

3

s

b

a

d

c

e

f

ASD240 - Algorytmy i struktury danych – p.2

background image

Zastosowania algorytmu BFS

Algorytm Dijkstry: uogólnienie algorytmu BFS przeszukiwania grafu wszerz do grafów z wagami.

Dane:

graf skierowany

G

= (V, E)

i funkcja wagowa

w

: E → R

+

(BFS:

∀e w(e) = 1

)

2

2

2

2

6

1

5

4

1

1

3

3

s

b

a

d

c

e

f

Pytanie 1: Maj ˛

ac dane wierzchołki

u

i

v,

jaka jest

najkrótsza ´scie˙zka z

u

do

v

?

ASD240 - Algorytmy i struktury danych – p.2

background image

Zastosowania algorytmu BFS

Algorytm Dijkstry: uogólnienie algorytmu BFS przeszukiwania grafu wszerz do grafów z wagami.

Dane:

graf skierowany

G

= (V, E)

i funkcja wagowa

w

: E → R

+

(BFS:

∀e w(e) = 1

)

2

2

2

2

6

1

5

4

1

1

3

3

s

b

a

d

c

e

f

Pytanie 1: Maj ˛

ac dane wierzchołki

u

i

v,

jaka jest

najkrótsza ´scie˙zka z

u

do

v

?

Pytanie 2: Maj ˛

ac dany wierzchołek pocz ˛

atkowy

s,

jaka

jest najkrótsza ´scie˙zka z

s

do ka˙zdego z pozostałych

wierzchołków?

ASD240 - Algorytmy i struktury danych – p.2

background image

Algorytm Dijkstry

Wej ´scie:

graf skierowany

G

= (V, E),

wierzchołek

pocz ˛

atkowy

s,

funkcja wagowa

w

: E → R

+

ASD240 - Algorytmy i struktury danych – p.3

background image

Algorytm Dijkstry

Wej ´scie:

graf skierowany

G

= (V, E),

wierzchołek

pocz ˛

atkowy

s,

funkcja wagowa

w

: E → R

+

Dla ´scie˙zki

P

= (v

1

, v

2

, . . . , v

k

)

definiujemy jej

długo´s´c

(wag ˛e)

w

(P ) =

k

−1

P

i=1

w

(v

i

, v

i+1

)

, najkrótsza ´scie˙zka to ´scie˙zka o

minimalnej wadze.

ASD240 - Algorytmy i struktury danych – p.3

background image

Algorytm Dijkstry

Wej ´scie:

graf skierowany

G

= (V, E),

wierzchołek

pocz ˛

atkowy

s,

funkcja wagowa

w

: E → R

+

Dla ´scie˙zki

P

= (v

1

, v

2

, . . . , v

k

)

definiujemy jej

długo´s´c

(wag ˛e)

w

(P ) =

k

−1

P

i=1

w

(v

i

, v

i+1

)

, najkrótsza ´scie˙zka to ´scie˙zka o

minimalnej wadze.

ASD240 - Algorytmy i struktury danych – p.3

background image

Algorytm Dijkstry

Wej ´scie:

graf skierowany

G

= (V, E),

wierzchołek

pocz ˛

atkowy

s,

funkcja wagowa

w

: E → R

+

Dla ´scie˙zki

P

= (v

1

, v

2

, . . . , v

k

)

definiujemy jej

długo´s´c

(wag ˛e)

w

(P ) =

k

−1

P

i=1

w

(v

i

, v

i+1

)

, najkrótsza ´scie˙zka to ´scie˙zka o

minimalnej wadze.

Cel:

wyznaczy´c najkrótsze ´scie˙zki z

s

do ka˙zdego

wierzchołka w

V

\ {s}.

ASD240 - Algorytmy i struktury danych – p.3

background image

Algorytm Dijkstry

Wej ´scie:

graf skierowany

G

= (V, E),

wierzchołek

pocz ˛

atkowy

s,

funkcja wagowa

w

: E → R

+

Dla ´scie˙zki

P

= (v

1

, v

2

, . . . , v

k

)

definiujemy jej

długo´s´c

(wag ˛e)

w

(P ) =

k

−1

P

i=1

w

(v

i

, v

i+1

)

, najkrótsza ´scie˙zka to ´scie˙zka o

minimalnej wadze.

Cel:

wyznaczy´c najkrótsze ´scie˙zki z

s

do ka˙zdego

wierzchołka w

V

\ {s}.

Struktura danych: K

OLEJKA PRIORYTETOWA

: priorytet zale˙zy od

aktualnego przybli˙zenia odległo´sci wierzchołków od
wierzchołka

s

ASD240 - Algorytmy i struktury danych – p.3

background image

Algorytm Dijkstry

Wej ´scie:

graf skierowany

G

= (V, E),

wierzchołek

pocz ˛

atkowy

s,

funkcja wagowa

w

: E → R

+

Dla ´scie˙zki

P

= (v

1

, v

2

, . . . , v

k

)

definiujemy jej

długo´s´c

(wag ˛e)

w

(P ) =

k

−1

P

i=1

w

(v

i

, v

i+1

)

, najkrótsza ´scie˙zka to ´scie˙zka o

minimalnej wadze.

Cel:

wyznaczy´c najkrótsze ´scie˙zki z

s

do ka˙zdego

wierzchołka w

V

\ {s}.

Struktura danych: K

OLEJKA PRIORYTETOWA

: priorytet zale˙zy od

aktualnego przybli˙zenia odległo´sci wierzchołków od
wierzchołka

s

Algorytm odwiedza w pierwszej kolejno´sci wierzchołek w
najbli˙zszej odległo´sci od

s

.

ASD240 - Algorytmy i struktury danych – p.3

background image

Algorytm Dijkstry

Dijkstra

(G = (V, E, w), s)

inicjalizuj pust ˛

a kolejk˛e

Q := ∅

for

u ∈ V − {s}

do

d[u] := ∞

odległo´s´c od

s

d[s] := 0

Wstaw

(s, Q)

while

Q 6= ∅

do

u :=

Extract_MIN

(Q)

element minimalny z kolejki priorytetowej

oznacz

(u)

for

v ∈ S[u]

do

if

v

nieoznaczony i

d[v] > d[u] + w(u, v)

then

d[v] := d[u] + w(u, v)

Wstaw

(v, Q)

ASD240 - Algorytmy i struktury danych – p.4

background image

Algorytm Dijkstry - przykład

2

2

2

2

6

1

5

4

1

1

3

3

s

b

a

d

c

e

f

ASD240 - Algorytmy i struktury danych – p.5

background image

Algorytm Dijkstry - przykład

2

2

2

2

6

1

5

4

1

1

3

3

0

2

3

5

6

4

6

s

b

a

d

c

e

f

ASD240 - Algorytmy i struktury danych – p.5

background image

Algorytm Dijkstry - zło˙zono´s´c

Wykonuje nast ˛epuj ˛

ace operacje:

Wstaw

:

|E|

razy

Extract_MIN

:

|V |

razy

ASD240 - Algorytmy i struktury danych – p.6

background image

Algorytm Dijkstry - zło˙zono´s´c

Wykonuje nast ˛epuj ˛

ace operacje:

Wstaw

:

|E|

razy

Extract_MIN

:

|V |

razy

Ka˙zda z nich zale˙zy od

implementacji kolejki priorytetowej

Q

ASD240 - Algorytmy i struktury danych – p.6

background image

Algorytm Dijkstry - zło˙zono´s´c

Wykonuje nast ˛epuj ˛

ace operacje:

Wstaw

:

|E|

razy

Extract_MIN

:

|V |

razy

Ka˙zda z nich zale˙zy od

implementacji kolejki priorytetowej

Q

Implementacja kolejki

Q

Extract_MIN

Wstaw

Razem

tablica

O

(n)

O

(1)

O

(n

2

)

kopiec

O

(log n)

O

(log n)

O

(m log n)

kopiec Fibonacciego*

O

(log n)

O

(1)

O

(n log n + m)

*nie omawiamy

ASD240 - Algorytmy i struktury danych – p.6

background image

Algorytm Dijkstry - poprawno´s´c

Idea:

Nale˙zy pokaza´c, ˙ze zawsze gdy wierzchołek

u

zostaje

oznaczony,

d

[u]

jest najkrótsz ˛

a odległo´sci ˛

a z

s

do

u.

ASD240 - Algorytmy i struktury danych – p.7

background image

Algorytm Dijkstry - poprawno´s´c

Idea:

Nale˙zy pokaza´c, ˙ze zawsze gdy wierzchołek

u

zostaje

oznaczony,

d

[u]

jest najkrótsz ˛

a odległo´sci ˛

a z

s

do

u.

Niech

δ

(s, v)

b ˛edzie długo´sci ˛

a najkrótszej ´scie˙zki z

s

do

v

w

G.

Fakt.

∀v ∈ V (G) d[v] ≥ δ(s, v)

ASD240 - Algorytmy i struktury danych – p.7

background image

Algorytm Dijkstry - poprawno´s´c

Idea:

Nale˙zy pokaza´c, ˙ze zawsze gdy wierzchołek

u

zostaje

oznaczony,

d

[u]

jest najkrótsz ˛

a odległo´sci ˛

a z

s

do

u.

Niech

δ

(s, v)

b ˛edzie długo´sci ˛

a najkrótszej ´scie˙zki z

s

do

v

w

G.

Fakt.

∀v ∈ V (G) d[v] ≥ δ(s, v)

Dowód:

na tablicy

ASD240 - Algorytmy i struktury danych – p.7

background image

Ograniczenia algorytmu Dijkstry

Problematyczne dane wej´sciowe dla alg. Dijkstry - ujemne
wagi

ASD240 - Algorytmy i struktury danych – p.8

background image

Ograniczenia algorytmu Dijkstry

Problematyczne dane wej´sciowe dla alg. Dijkstry - ujemne
wagi

−2

s

a

b

2

3

3

ASD240 - Algorytmy i struktury danych – p.8

background image

Ograniczenia algorytmu Dijkstry

Problematyczne dane wej´sciowe dla alg. Dijkstry - ujemne
wagi

−2

3

3

2

0

3

2

b

a

s

ASD240 - Algorytmy i struktury danych – p.8

background image

Ograniczenia algorytmu Dijkstry

Problematyczne dane wej´sciowe dla alg. Dijkstry - ujemne
wagi

−2

3

3

2

0

3

2

b

a

s

Wtedy alg. Dijkstry nie działa i trzeba zastosowa´c inny algo-

rytm.

ASD240 - Algorytmy i struktury danych – p.8

background image

Algorytm Dijkstry - podsumowanie

Jest to algorytm zachłanny.

ASD240 - Algorytmy i struktury danych – p.9

background image

Algorytm Dijkstry - podsumowanie

Jest to algorytm zachłanny.

Cechy algorytmu zachłannego:

buduje rozwi ˛

azanie w małych krokach

w ka˙zdym kroku podejmuje decyzj ˛e optymalizuj ˛

ac

pewne zadane kryterium

lokalnie optymalny krok prowadzi do wyznaczenia
globalnego optimum.

ASD240 - Algorytmy i struktury danych – p.9

background image

Algorytm Dijkstry - podsumowanie

Jest to algorytm zachłanny.

Cechy algorytmu zachłannego:

buduje rozwi ˛

azanie w małych krokach

w ka˙zdym kroku podejmuje decyzj ˛e optymalizuj ˛

ac

pewne zadane kryterium

lokalnie optymalny krok prowadzi do wyznaczenia
globalnego optimum.

tzw. „krok zachłanny” to wybór nieodwiedzonego
wierzchołka, który znajduje si ˛e „najbli˙zej” zbioru
wierzchołków ju˙z odwiedzonych z

s

ASD240 - Algorytmy i struktury danych – p.9

background image

Problem podró˙zuj ˛

acego komiwoja˙zera

Komiwoja˙zer chce odwiedzi´c dokładnie jeden raz ka˙zde spo´sród

n

miast i wróci´c do punktu

wyj´scia pokonuj ˛

ac drog ˛e o minimalnym koszcie.

ASD240 - Algorytmy i struktury danych – p.10

background image

Problem podró˙zuj ˛

acego komiwoja˙zera

Komiwoja˙zer chce odwiedzi´c dokładnie jeden raz ka˙zde spo´sród

n

miast i wróci´c do punktu

wyj´scia pokonuj ˛

ac drog ˛e o minimalnym koszcie.

A

38

56

B

C

D

E

122

17

39

67

121

92

111

73

87

59

103

134

89

F

ASD240 - Algorytmy i struktury danych – p.10

background image

Problem podró˙zuj ˛

acego komiwoja˙zera

Komiwoja˙zer chce odwiedzi´c dokładnie jeden raz ka˙zde spo´sród

n

miast i wróci´c do punktu

wyj´scia pokonuj ˛

ac drog ˛e o minimalnym koszcie.

A

38

56

B

C

D

E

122

17

39

67

121

92

111

73

87

59

103

134

89

F

Inaczej: pytamy o cykl zawieraj ˛

acy wszystkie wierzchołki grafu (tzw.

cykl Hamiltona

) o

minimalnej wadze kraw ˛edzi.

ASD240 - Algorytmy i struktury danych – p.10

background image

Problem podró˙zuj ˛

acego komiwoja˙zera

Komiwoja˙zer chce odwiedzi´c dokładnie jeden raz ka˙zde spo´sród

n

miast i wróci´c do punktu

wyj´scia pokonuj ˛

ac drog ˛e o minimalnym koszcie.

A

38

56

B

C

D

E

122

17

39

67

121

92

111

73

87

59

103

134

89

F

Inaczej: pytamy o cykl zawieraj ˛

acy wszystkie wierzchołki grafu (tzw.

cykl Hamiltona

) o

minimalnej wadze kraw ˛edzi.

Sprawdzaj ˛

ac wszystkie cykle Hamiltona mamy

4!/2

mo˙zliwo´sci.

ASD240 - Algorytmy i struktury danych – p.10

background image

Problem podró˙zuj ˛

acego komiwoja˙zera

Komiwoja˙zer chce odwiedzi´c dokładnie jeden raz ka˙zde spo´sród

n

miast i wróci´c do punktu

wyj´scia pokonuj ˛

ac drog ˛e o minimalnym koszcie.

Inaczej: pytamy o cykl zawieraj ˛

acy wszystkie wierzchołki grafu (tzw.

cykl Hamiltona

) o

minimalnej wadze kraw ˛edzi.

Sprawdzaj ˛

ac wszystkie cykle Hamiltona mamy

4!/2

mo˙zliwo´sci.

Ogólnie:

(n − 1)!/2,

a to jest bardzo du˙za liczba, dla

n = 25

wynosi ok.

3, 1 × 10

23

,

co

wymagałoby ok. 10 milionów lat oblicze ´n.

ASD240 - Algorytmy i struktury danych – p.10

background image

Problem podró˙zuj ˛

acego komiwoja˙zera

Komiwoja˙zer chce odwiedzi´c dokładnie jeden raz ka˙zde spo´sród

n

miast i wróci´c do punktu

wyj´scia pokonuj ˛

ac drog ˛e o minimalnym koszcie.

Inaczej: pytamy o cykl zawieraj ˛

acy wszystkie wierzchołki grafu (tzw.

cykl Hamiltona

) o

minimalnej wadze kraw ˛edzi.

Sprawdzaj ˛

ac wszystkie cykle Hamiltona mamy

4!/2

mo˙zliwo´sci.

Ogólnie:

(n − 1)!/2,

a to jest bardzo du˙za liczba, dla

n = 25

wynosi ok.

3, 1 × 10

23

,

co

wymagałoby ok. 10 milionów lat oblicze ´n.

Wielomianowy algorytm dla tego problemu nie jest znany, a problem jest

NP-trudny

, tzn.

znacznie trudniejszy ni˙z wszystkie omawiane na tym wykładzie.

ASD240 - Algorytmy i struktury danych – p.10


Document Outline


Wyszukiwarka

Podobne podstrony:
Algorytm Dijkstry Adrian Gawron
Układy Napędowe oraz algorytmy sterowania w bioprotezach
5 Algorytmy
5 Algorytmy wyznaczania dyskretnej transformaty Fouriera (CPS)
Tętniak aorty brzusznej algorytm
Algorytmy rastrowe
Algorytmy genetyczne
Teorie algorytmow genetycznych prezentacja
Algorytmy tekstowe
Algorytmy i struktury danych Wykład 1 Reprezentacja informacji w komputerze
ALGORYTM EUKLIDESA
Algorytmy z przykladami tp 7 0

więcej podobnych podstron