24
N

Przyk ad przebiegu algorytmu Dijkstryamroz/dydak/semdyp/przebiegi/IIIDijkstra.pdf · Przykªad przebiegu algorytmu Dijkstry Autor rojektu:p dr Andrzej Mróz (UMK) Projekt pn. Wzmocnienie

  • Upload
    vanminh

  • View
    224

  • Download
    0

Embed Size (px)

Citation preview

Przykªad przebiegualgorytmu Dijkstry

Autor projektu: dr Andrzej Mróz (UMK)

Projekt pn. �Wzmocnienie potencjaªu dydaktycznego UMK w Toruniu w dziedzinachmatematyczno-przyrodniczych� realizowany w ramach Poddziaªania 4.1.1 Programu Operacyjnego

Kapitaª Ludzki

1 / 3Projekt wspóª�nansowany ze ±rodków Unii Europejskiej w ramach Europejskiego Funduszu Spoªecznego

N

Algorytm - przebieg dla s = 1

Dijkstra(G, w, s)begin

Initialize(G, s);Q := V(G);while Q <> ∅ do

begin

u := ExtractMin(Q);for ka»dy v ∈ Adj[u] do

Relax(u, v, w);end

end;

Relax(u, v, w)begin

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

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

end

end;

-10�

5

?

7

?

20@@@R

10

-2

-4,5

����6

wg1 wg wgwg wg wg

s

2 3

4 5 6

g1g4 g5

g2g6g3

w π[w ] d [w ]1 ∞ 02 ∞ ∞3 ∞ ∞4 ∞ ∞5 ∞ ∞6 ∞ ∞

Q: 1 2 3 4 5 6

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

1 2 ∞ > 0 + 101 4 ∞ > 0 + 71 5 ∞ > 0 + 104 5 10 > 7 + 25 3 ∞ > 9 + 65 6 ∞ > 9 + 4, 52 1 0 < 10 + 52 5 9 < 10 + 206 −3 −

2 / 3Projekt wspóª�nansowany ze ±rodków Unii Europejskiej w ramach Europejskiego Funduszu Spoªecznego

N

Algorytm - przebieg dla s = 1

Dijkstra(G, w, s)begin

Initialize(G, s);Q := V(G);while Q <> ∅ do

begin

u := ExtractMin(Q);for ka»dy v ∈ Adj[u] do

Relax(u, v, w);end

end;

Relax(u, v, w)begin

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

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

end

end;

-10�

5

?

7

?

20@@@R

10

-2

-4,5

����6

wg1 wg wgwg wg wg

s

2 3

4 5 6

wg1g4 g5

g2g6g3

w π[w ] d [w ]1 ∞ 02 ∞ ∞3 ∞ ∞4 ∞ ∞5 ∞ ∞6 ∞ ∞

Q: 2 3 4 5 6

u v d [v ] d [u] w(u, v)1

2 ∞ > 0 + 101 4 ∞ > 0 + 71 5 ∞ > 0 + 104 5 10 > 7 + 25 3 ∞ > 9 + 65 6 ∞ > 9 + 4, 52 1 0 < 10 + 52 5 9 < 10 + 206 −3 −

2 / 3Projekt wspóª�nansowany ze ±rodków Unii Europejskiej w ramach Europejskiego Funduszu Spoªecznego

N

Algorytm - przebieg dla s = 1

Dijkstra(G, w, s)begin

Initialize(G, s);Q := V(G);while Q <> ∅ do

begin

u := ExtractMin(Q);for ka»dy v ∈ Adj[u] do

Relax(u, v, w);end

end;

Relax(u, v, w)begin

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

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

end

end;

--10�

5

?

7

?

20@@@R

10

-2

-4,5

����6

wg1 wg wgwg wg wg

s

2 3

4 5 6

wg1g4 g5

g2g6g3

w π[w ] d [w ]1 ∞ 02 ∞ ∞3 ∞ ∞4 ∞ ∞5 ∞ ∞6 ∞ ∞

Q: 2 3 4 5 6

u v d [v ] d [u] w(u, v)1 2 ∞ > 0 + 10

1 4 ∞ > 0 + 71 5 ∞ > 0 + 104 5 10 > 7 + 25 3 ∞ > 9 + 65 6 ∞ > 9 + 4, 52 1 0 < 10 + 52 5 9 < 10 + 206 −3 −

2 / 3Projekt wspóª�nansowany ze ±rodków Unii Europejskiej w ramach Europejskiego Funduszu Spoªecznego

N

Algorytm - przebieg dla s = 1

Dijkstra(G, w, s)begin

Initialize(G, s);Q := V(G);while Q <> ∅ do

begin

u := ExtractMin(Q);for ka»dy v ∈ Adj[u] do

Relax(u, v, w);end

end;

Relax(u, v, w)begin

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

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

end

end;

--10�

5

?

7

?

20@@@R

10

-2

-4,5

����6

wg1 wg wgwg wg wg

s

2 3

4 5 6

wg1g4 g5

g2g6g3

w π[w ] d [w ]1 ∞ 02 1 103 ∞ ∞4 ∞ ∞5 ∞ ∞6 ∞ ∞

Q: 2 3 4 5 6

u v d [v ] d [u] w(u, v)1 2 ∞ > 0 + 10

1 4 ∞ > 0 + 71 5 ∞ > 0 + 104 5 10 > 7 + 25 3 ∞ > 9 + 65 6 ∞ > 9 + 4, 52 1 0 < 10 + 52 5 9 < 10 + 206 −3 −

2 / 3Projekt wspóª�nansowany ze ±rodków Unii Europejskiej w ramach Europejskiego Funduszu Spoªecznego

N

Algorytm - przebieg dla s = 1

Dijkstra(G, w, s)begin

Initialize(G, s);Q := V(G);while Q <> ∅ do

begin

u := ExtractMin(Q);for ka»dy v ∈ Adj[u] do

Relax(u, v, w);end

end;

Relax(u, v, w)begin

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

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

end

end;

-10�

5

??

7

?

20@@@R

10

-2

-4,5

����6

wg1 wg wgwg wg wg

s

2 3

4 5 6

wg1g4 g5

g2g6g3

w π[w ] d [w ]1 ∞ 02 1 103 ∞ ∞4 ∞ ∞5 ∞ ∞6 ∞ ∞

Q: 2 3 4 5 6

u v d [v ] d [u] w(u, v)1 2 ∞ > 0 + 101 4 ∞ > 0 + 7

1 5 ∞ > 0 + 104 5 10 > 7 + 25 3 ∞ > 9 + 65 6 ∞ > 9 + 4, 52 1 0 < 10 + 52 5 9 < 10 + 206 −3 −

2 / 3Projekt wspóª�nansowany ze ±rodków Unii Europejskiej w ramach Europejskiego Funduszu Spoªecznego

N

Algorytm - przebieg dla s = 1

Dijkstra(G, w, s)begin

Initialize(G, s);Q := V(G);while Q <> ∅ do

begin

u := ExtractMin(Q);for ka»dy v ∈ Adj[u] do

Relax(u, v, w);end

end;

Relax(u, v, w)begin

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

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

end

end;

-10�

5

??

7

?

20@@@R

10

-2

-4,5

����6

wg1 wg wgwg wg wg

s

2 3

4 5 6

wg1g4 g5

g2g6g3

w π[w ] d [w ]1 ∞ 02 1 103 ∞ ∞4 1 75 ∞ ∞6 ∞ ∞

Q: 2 3 4 5 6

u v d [v ] d [u] w(u, v)1 2 ∞ > 0 + 101 4 ∞ > 0 + 7

1 5 ∞ > 0 + 104 5 10 > 7 + 25 3 ∞ > 9 + 65 6 ∞ > 9 + 4, 52 1 0 < 10 + 52 5 9 < 10 + 206 −3 −

2 / 3Projekt wspóª�nansowany ze ±rodków Unii Europejskiej w ramach Europejskiego Funduszu Spoªecznego

N

Algorytm - przebieg dla s = 1

Dijkstra(G, w, s)begin

Initialize(G, s);Q := V(G);while Q <> ∅ do

begin

u := ExtractMin(Q);for ka»dy v ∈ Adj[u] do

Relax(u, v, w);end

end;

Relax(u, v, w)begin

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

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

end

end;

-10�

5

?

7

?

20@@@R

@@@R

10

-2

-4,5

����6

wg1 wg wgwg wg wg

s

2 3

4 5 6

wg1g4 g5

g2g6g3

w π[w ] d [w ]1 ∞ 02 1 103 ∞ ∞4 1 75 ∞ ∞6 ∞ ∞

Q: 2 3 4 5 6

u v d [v ] d [u] w(u, v)1 2 ∞ > 0 + 101 4 ∞ > 0 + 71 5 ∞ > 0 + 10

4 5 10 > 7 + 25 3 ∞ > 9 + 65 6 ∞ > 9 + 4, 52 1 0 < 10 + 52 5 9 < 10 + 206 −3 −

2 / 3Projekt wspóª�nansowany ze ±rodków Unii Europejskiej w ramach Europejskiego Funduszu Spoªecznego

N

Algorytm - przebieg dla s = 1

Dijkstra(G, w, s)begin

Initialize(G, s);Q := V(G);while Q <> ∅ do

begin

u := ExtractMin(Q);for ka»dy v ∈ Adj[u] do

Relax(u, v, w);end

end;

Relax(u, v, w)begin

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

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

end

end;

-10�

5

?

7

?

20@@@R

@@@R

10

-2

-4,5

����6

wg1 wg wgwg wg wg

s

2 3

4 5 6

wg1g4 g5

g2g6g3

w π[w ] d [w ]1 ∞ 02 1 103 ∞ ∞4 1 75 1 106 ∞ ∞

Q: 2 3 4 5 6

u v d [v ] d [u] w(u, v)1 2 ∞ > 0 + 101 4 ∞ > 0 + 71 5 ∞ > 0 + 10

4 5 10 > 7 + 25 3 ∞ > 9 + 65 6 ∞ > 9 + 4, 52 1 0 < 10 + 52 5 9 < 10 + 206 −3 −

2 / 3Projekt wspóª�nansowany ze ±rodków Unii Europejskiej w ramach Europejskiego Funduszu Spoªecznego

N

Algorytm - przebieg dla s = 1

Dijkstra(G, w, s)begin

Initialize(G, s);Q := V(G);while Q <> ∅ do

begin

u := ExtractMin(Q);for ka»dy v ∈ Adj[u] do

Relax(u, v, w);end

end;

Relax(u, v, w)begin

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

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

end

end;

-10�

5

?

7

?

20@@@R

10

-2

-4,5

����6

wg1 wg wgwg wg wg

s

2 3

4 5 6

wg1wg4 g5

g2g6g3

w π[w ] d [w ]1 ∞ 02 1 103 ∞ ∞4 1 75 1 106 ∞ ∞

Q: 2 3 5 6

u v d [v ] d [u] w(u, v)1 2 ∞ > 0 + 101 4 ∞ > 0 + 71 5 ∞ > 0 + 104

5 10 > 7 + 25 3 ∞ > 9 + 65 6 ∞ > 9 + 4, 52 1 0 < 10 + 52 5 9 < 10 + 206 −3 −

2 / 3Projekt wspóª�nansowany ze ±rodków Unii Europejskiej w ramach Europejskiego Funduszu Spoªecznego

N

Algorytm - przebieg dla s = 1

Dijkstra(G, w, s)begin

Initialize(G, s);Q := V(G);while Q <> ∅ do

begin

u := ExtractMin(Q);for ka»dy v ∈ Adj[u] do

Relax(u, v, w);end

end;

Relax(u, v, w)begin

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

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

end

end;

-10�

5

?

7

?

20@@@R

10

--2

-4,5

����6

wg1 wg wgwg wg wg

s

2 3

4 5 6

wg1wg4 g5

g2g6g3

w π[w ] d [w ]1 ∞ 02 1 103 ∞ ∞4 1 75 1 106 ∞ ∞

Q: 2 3 5 6

u v d [v ] d [u] w(u, v)1 2 ∞ > 0 + 101 4 ∞ > 0 + 71 5 ∞ > 0 + 104 5 10 > 7 + 2

5 3 ∞ > 9 + 65 6 ∞ > 9 + 4, 52 1 0 < 10 + 52 5 9 < 10 + 206 −3 −

2 / 3Projekt wspóª�nansowany ze ±rodków Unii Europejskiej w ramach Europejskiego Funduszu Spoªecznego

N

Algorytm - przebieg dla s = 1

Dijkstra(G, w, s)begin

Initialize(G, s);Q := V(G);while Q <> ∅ do

begin

u := ExtractMin(Q);for ka»dy v ∈ Adj[u] do

Relax(u, v, w);end

end;

Relax(u, v, w)begin

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

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

end

end;

-10�

5

?

7

?

20@@@R

10

--2

-4,5

����6

wg1 wg wgwg wg wg

s

2 3

4 5 6

wg1wg4 g5

g2g6g3

w π[w ] d [w ]1 ∞ 02 1 103 ∞ ∞4 1 75 4 96 ∞ ∞

Q: 2 3 5 6

u v d [v ] d [u] w(u, v)1 2 ∞ > 0 + 101 4 ∞ > 0 + 71 5 ∞ > 0 + 104 5 10 > 7 + 2

5 3 ∞ > 9 + 65 6 ∞ > 9 + 4, 52 1 0 < 10 + 52 5 9 < 10 + 206 −3 −

2 / 3Projekt wspóª�nansowany ze ±rodków Unii Europejskiej w ramach Europejskiego Funduszu Spoªecznego

N

Algorytm - przebieg dla s = 1

Dijkstra(G, w, s)begin

Initialize(G, s);Q := V(G);while Q <> ∅ do

begin

u := ExtractMin(Q);for ka»dy v ∈ Adj[u] do

Relax(u, v, w);end

end;

Relax(u, v, w)begin

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

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

end

end;

-10�

5

?

7

?

20@@@R

10

-2

-4,5

����6

wg1 wg wgwg wg wg

s

2 3

4 5 6

wg1wg4 wg5

g2g6g3

w π[w ] d [w ]1 ∞ 02 1 103 ∞ ∞4 1 75 4 96 ∞ ∞

Q: 2 3 6

u v d [v ] d [u] w(u, v)1 2 ∞ > 0 + 101 4 ∞ > 0 + 71 5 ∞ > 0 + 104 5 10 > 7 + 25

3 ∞ > 9 + 65 6 ∞ > 9 + 4, 52 1 0 < 10 + 52 5 9 < 10 + 206 −3 −

2 / 3Projekt wspóª�nansowany ze ±rodków Unii Europejskiej w ramach Europejskiego Funduszu Spoªecznego

N

Algorytm - przebieg dla s = 1

Dijkstra(G, w, s)begin

Initialize(G, s);Q := V(G);while Q <> ∅ do

begin

u := ExtractMin(Q);for ka»dy v ∈ Adj[u] do

Relax(u, v, w);end

end;

Relax(u, v, w)begin

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

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

end

end;

-10�

5

?

7

?

20@@@R

10

-2

-4,5

����

����6

wg1 wg wgwg wg wg

s

2 3

4 5 6

wg1wg4 wg5

g2g6g3

w π[w ] d [w ]1 ∞ 02 1 103 ∞ ∞4 1 75 4 96 ∞ ∞

Q: 2 3 6

u v d [v ] d [u] w(u, v)1 2 ∞ > 0 + 101 4 ∞ > 0 + 71 5 ∞ > 0 + 104 5 10 > 7 + 25 3 ∞ > 9 + 6

5 6 ∞ > 9 + 4, 52 1 0 < 10 + 52 5 9 < 10 + 206 −3 −

2 / 3Projekt wspóª�nansowany ze ±rodków Unii Europejskiej w ramach Europejskiego Funduszu Spoªecznego

N

Algorytm - przebieg dla s = 1

Dijkstra(G, w, s)begin

Initialize(G, s);Q := V(G);while Q <> ∅ do

begin

u := ExtractMin(Q);for ka»dy v ∈ Adj[u] do

Relax(u, v, w);end

end;

Relax(u, v, w)begin

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

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

end

end;

-10�

5

?

7

?

20@@@R

10

-2

-4,5

����

����6

wg1 wg wgwg wg wg

s

2 3

4 5 6

wg1wg4 wg5

g2g6g3

w π[w ] d [w ]1 ∞ 02 1 103 5 154 1 75 4 96 ∞ ∞

Q: 2 3 6

u v d [v ] d [u] w(u, v)1 2 ∞ > 0 + 101 4 ∞ > 0 + 71 5 ∞ > 0 + 104 5 10 > 7 + 25 3 ∞ > 9 + 6

5 6 ∞ > 9 + 4, 52 1 0 < 10 + 52 5 9 < 10 + 206 −3 −

2 / 3Projekt wspóª�nansowany ze ±rodków Unii Europejskiej w ramach Europejskiego Funduszu Spoªecznego

N

Algorytm - przebieg dla s = 1

Dijkstra(G, w, s)begin

Initialize(G, s);Q := V(G);while Q <> ∅ do

begin

u := ExtractMin(Q);for ka»dy v ∈ Adj[u] do

Relax(u, v, w);end

end;

Relax(u, v, w)begin

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

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

end

end;

-10�

5

?

7

?

20@@@R

10

-2

--4,5

����6

wg1 wg wgwg wg wg

s

2 3

4 5 6

wg1wg4 wg5

g2g6g3

w π[w ] d [w ]1 ∞ 02 1 103 5 154 1 75 4 96 ∞ ∞

Q: 2 3 6

u v d [v ] d [u] w(u, v)1 2 ∞ > 0 + 101 4 ∞ > 0 + 71 5 ∞ > 0 + 104 5 10 > 7 + 25 3 ∞ > 9 + 65 6 ∞ > 9 + 4, 5

2 1 0 < 10 + 52 5 9 < 10 + 206 −3 −

2 / 3Projekt wspóª�nansowany ze ±rodków Unii Europejskiej w ramach Europejskiego Funduszu Spoªecznego

N

Algorytm - przebieg dla s = 1

Dijkstra(G, w, s)begin

Initialize(G, s);Q := V(G);while Q <> ∅ do

begin

u := ExtractMin(Q);for ka»dy v ∈ Adj[u] do

Relax(u, v, w);end

end;

Relax(u, v, w)begin

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

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

end

end;

-10�

5

?

7

?

20@@@R

10

-2

--4,5

����6

wg1 wg wgwg wg wg

s

2 3

4 5 6

wg1wg4 wg5

g2g6g3

w π[w ] d [w ]1 ∞ 02 1 103 5 154 1 75 4 96 5 13, 5

Q: 2 3 6

u v d [v ] d [u] w(u, v)1 2 ∞ > 0 + 101 4 ∞ > 0 + 71 5 ∞ > 0 + 104 5 10 > 7 + 25 3 ∞ > 9 + 65 6 ∞ > 9 + 4, 5

2 1 0 < 10 + 52 5 9 < 10 + 206 −3 −

2 / 3Projekt wspóª�nansowany ze ±rodków Unii Europejskiej w ramach Europejskiego Funduszu Spoªecznego

N

Algorytm - przebieg dla s = 1

Dijkstra(G, w, s)begin

Initialize(G, s);Q := V(G);while Q <> ∅ do

begin

u := ExtractMin(Q);for ka»dy v ∈ Adj[u] do

Relax(u, v, w);end

end;

Relax(u, v, w)begin

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

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

end

end;

-10�

5

?

7

?

20@@@R

10

-2

-4,5

����6

wg1 wg wgwg wg wg

s

2 3

4 5 6

wg1wg4 wg5

wg2g6g3

w π[w ] d [w ]1 ∞ 02 1 103 5 154 1 75 4 96 5 13, 5

Q: 3 6

u v d [v ] d [u] w(u, v)1 2 ∞ > 0 + 101 4 ∞ > 0 + 71 5 ∞ > 0 + 104 5 10 > 7 + 25 3 ∞ > 9 + 65 6 ∞ > 9 + 4, 52

1 0 < 10 + 52 5 9 < 10 + 206 −3 −

2 / 3Projekt wspóª�nansowany ze ±rodków Unii Europejskiej w ramach Europejskiego Funduszu Spoªecznego

N

Algorytm - przebieg dla s = 1

Dijkstra(G, w, s)begin

Initialize(G, s);Q := V(G);while Q <> ∅ do

begin

u := ExtractMin(Q);for ka»dy v ∈ Adj[u] do

Relax(u, v, w);end

end;

Relax(u, v, w)begin

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

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

end

end;

-10��

5

?

7

?

20@@@R

10

-2

-4,5

����6

wg1 wg wgwg wg wg

s

2 3

4 5 6

wg1wg4 wg5

wg2g6g3

w π[w ] d [w ]1 ∞ 02 1 103 5 154 1 75 4 96 5 13, 5

Q: 3 6

u v d [v ] d [u] w(u, v)1 2 ∞ > 0 + 101 4 ∞ > 0 + 71 5 ∞ > 0 + 104 5 10 > 7 + 25 3 ∞ > 9 + 65 6 ∞ > 9 + 4, 52 1 0 < 10 + 5

2 5 9 < 10 + 206 −3 −

2 / 3Projekt wspóª�nansowany ze ±rodków Unii Europejskiej w ramach Europejskiego Funduszu Spoªecznego

N

Algorytm - przebieg dla s = 1

Dijkstra(G, w, s)begin

Initialize(G, s);Q := V(G);while Q <> ∅ do

begin

u := ExtractMin(Q);for ka»dy v ∈ Adj[u] do

Relax(u, v, w);end

end;

Relax(u, v, w)begin

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

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

end

end;

-10�

5

?

7

??

20@@@R

10

-2

-4,5

����6

wg1 wg wgwg wg wg

s

2 3

4 5 6

wg1wg4 wg5

wg2g6g3

w π[w ] d [w ]1 ∞ 02 1 103 5 154 1 75 4 96 5 13, 5

Q: 3 6

u v d [v ] d [u] w(u, v)1 2 ∞ > 0 + 101 4 ∞ > 0 + 71 5 ∞ > 0 + 104 5 10 > 7 + 25 3 ∞ > 9 + 65 6 ∞ > 9 + 4, 52 1 0 < 10 + 52 5 9 < 10 + 20

6 −3 −

2 / 3Projekt wspóª�nansowany ze ±rodków Unii Europejskiej w ramach Europejskiego Funduszu Spoªecznego

N

Algorytm - przebieg dla s = 1

Dijkstra(G, w, s)begin

Initialize(G, s);Q := V(G);while Q <> ∅ do

begin

u := ExtractMin(Q);for ka»dy v ∈ Adj[u] do

Relax(u, v, w);end

end;

Relax(u, v, w)begin

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

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

end

end;

-10�

5

?

7

?

20@@@R

10

-2

-4,5

����6

wg1 wg wgwg wg wg

s

2 3

4 5 6

wg1wg4 wg5

wg2wg6g3

w π[w ] d [w ]1 ∞ 02 1 103 5 154 1 75 4 96 5 13, 5

Q: 3

u v d [v ] d [u] w(u, v)1 2 ∞ > 0 + 101 4 ∞ > 0 + 71 5 ∞ > 0 + 104 5 10 > 7 + 25 3 ∞ > 9 + 65 6 ∞ > 9 + 4, 52 1 0 < 10 + 52 5 9 < 10 + 206 −

3 −

2 / 3Projekt wspóª�nansowany ze ±rodków Unii Europejskiej w ramach Europejskiego Funduszu Spoªecznego

N

Algorytm - przebieg dla s = 1

Dijkstra(G, w, s)begin

Initialize(G, s);Q := V(G);while Q <> ∅ do

begin

u := ExtractMin(Q);for ka»dy v ∈ Adj[u] do

Relax(u, v, w);end

end;

Relax(u, v, w)begin

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

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

end

end;

-10�

5

?

7

?

20@@@R

10

-2

-4,5

����6

wg1 wg wgwg wg wg

s

2 3

4 5 6

wg1wg4 wg5

wg2wg6wg3

w π[w ] d [w ]1 ∞ 02 1 103 5 154 1 75 4 96 5 13, 5

Q:

u v d [v ] d [u] w(u, v)1 2 ∞ > 0 + 101 4 ∞ > 0 + 71 5 ∞ > 0 + 104 5 10 > 7 + 25 3 ∞ > 9 + 65 6 ∞ > 9 + 4, 52 1 0 < 10 + 52 5 9 < 10 + 206 −3 −

2 / 3Projekt wspóª�nansowany ze ±rodków Unii Europejskiej w ramach Europejskiego Funduszu Spoªecznego

N

Algorytm - wyniki-10

�5

?

7

?

20@@@R

10

-2

-4,5

����6

wg1 wg wgwg wg wg

s

2 3

4 5 6

wg1wg4 wg5

wg2wg6wg3

w π[w ] d [w ]1 ∞ 02 1 103 5 154 1 75 4 96 5 13, 5

Po zako«czeniu dziaªania algorytmu

w wektorze π s¡ zakodowane najkrótsze drogi z s = 1 doposzczególnych wierzchoªków (poprzez system poprzedników),

w wektorze d s¡ zakodowane ich dªugo±ci.

I tak np. najkrótsza droga z 1 do 3 to: 1 → 4 → 5 → 3, o dª. 15.

Dokªadniejsze omówienie algorytmu � patrz wykªad.

3 / 3Projekt wspóª�nansowany ze ±rodków Unii Europejskiej w ramach Europejskiego Funduszu Spoªecznego

N

Algorytm - wyniki-10

�5

??

7

?

20@@@R

10

--2

-4,5

����

����6

wg1 wg wgwg wg wg

s

2 3

4 5 6

wg1wg4 wg5

wg2wg6wg3

w π[w ] d [w ]1 ∞ 02 1 103 5 154 1 75 4 96 5 13, 5

Po zako«czeniu dziaªania algorytmu

w wektorze π s¡ zakodowane najkrótsze drogi z s = 1 doposzczególnych wierzchoªków (poprzez system poprzedników),

w wektorze d s¡ zakodowane ich dªugo±ci.

I tak np. najkrótsza droga z 1 do 3 to: 1 → 4 → 5 → 3, o dª. 15.

Dokªadniejsze omówienie algorytmu � patrz wykªad.

3 / 3Projekt wspóª�nansowany ze ±rodków Unii Europejskiej w ramach Europejskiego Funduszu Spoªecznego

N