Sie sind auf Seite 1von 11

Algoritmo de Dijkstra (1/2)

Algoritmo de Dijkstra (2/2)


procedure Dijkstra (G) for i := 1 to n L(vi) := L(a) := 0 S := while z NO pertenece a S begin u := vrtice con L(u) mnima entre los que no estn en S S := S UNION {u} for todos los vrtices v que no estn en S if L(u) + w(u,v) < L(v) then L(v) := L(u) + w(u,v) {esto aade a S un vrtice con etiqueta mnima} end {L(z) = long del camino ms corto entre a y z}

G: grafo ponderado, simple y conexo, con todos los pesos positivos. Vrtice inicial = a Vrtice final = z Vrtices intermedios = v1, . Vn Pesos = w(vi, vj) S = conjunto distinguido de vrtices L = distancias mnimas

B 2 A 2 3 C

D 2 1 F 4 A 2

D 2 1 F 4

2 3 C 5 E

B 2 A 2 3 C

D 2 1 F 4 A 2

D 2 1 F 4

V0 A B C D E F

2 3 C 5 E

B 2 A 2 3 C

D 2 1 F 4

V0 A B C D E F

L0 (0) 2 A

D 2 1 F 4

V1 A* B C D E F

L0 (0)

2 3 C 5 E

B 2 A 2 3 C

D 2 1 F 4

V1 A* B C D E F

L1 -

L0 (0) 2 A

D 2 1 F 4

V1 A* B C D E F

L1 -

L0 (0)

2 3 C 5 E

B 2 A 2 3 C

D 2 1 F 4

V1 A* B C D E F

L1 -

L0 (0) 2 A

D 2 1 F 4

V1 A* B C D E F

L1 -

L0 (0)

2 3 C 5 E

L(vj) = L(vi-1*) + w(vi-1, vj)

L(vj) = L(vi-1*) + w(vi-1, vj)

B 2 A 2 3 C

D 2 1 F 4

V1 A* B C D E F

L1 -

L0 (0) 2 A

D 2 1 F 4

V1 A* BA C D E F

L1 2

L0 (0)

2 3 C 5 E

L(BA) = L(A*) + w(A*, B) = 0+2 = 2

L(BA) = L(A*) + w(A*, B)

B 2 A 2 3 C

D 2 1 F 4

V1 A* BA CA D E F

L1 2 3

L0 (0) 2 A

D 2 1 F 4

V1 A* BA CA D E F

L1 2 3

L0 (0)

2 3 C 5 E

L(CA) = L(A*) + w(A*, C) = 0+3 = 3

B 2 A 2 3 C

D 2 1 F 4

V1 A* BA CA D E F

L1 2 3

L0 (0) 2 A

D 2 1 F 4

V1 A* BA CA D E F

L1 2 3

L0 (0)

2 3 C 5 E

L(B) < L(C)

L(B) < L(C)

B 2 A 2 3 C

D 2 1 F 4

V2 A* BA* CA D E F

L1 (2) 3 3 2 A

D 2 1 F 4

V2 A* BA * CA D E F

L2 3

L1 (2) 3

B 2 A 2 3 C

D 2 1 F 4

V2 A* BA* CA D E F

L2 3

L1 (2) 3 A 2

D 2 1 F 4

V2 A* BA* CA DB E F

L2 3 7

L1 (2) 3

2 3 C 5 E

L(DB) = L(BA*) + w(BA*, D) = 2+5 = 7

B 2 A 2 3 C

D 2 1 F 4

V2 A* BA* CA DB E F

L2 3 7

L1 (2) 3 A 2

D 2 1 F 4

V2 A* BA* CA DB EB F

L2 3 7 4

L1 (2) 3

2 3 C 5 E

L(EB) = L(BA*) + w(BA*, E) = 2+2 = 4

B 2 A 2 3 C

D 2 1 F 4

V2 A* BA* CA DB EB F

L2 (2) 3 7 4

L1 (2) 3 A 2

D 2 1 F 4

V3 A* BA* CA* DB EB F

L2 (3) 7 4

2 3 C 5 E

L(C) < L(E) < L(D)

B 2 A 2 3 C

D 2 1 F 4

V3 A* BA* CA* DB EB F

L3 7 4

L2 (3) 7 4

B 2 A 2 3 C

D 2 1 F 4

V4 A* BA* CA* DB EB F

L3 7 4

L2 (3) 7 4

B 2 A 2 3 C

D 2 1 F 4

V4 A* BA* CA* DB EB F

L3 7 4

L2 (3) 7 4

B 2 A 2 3 C

D 2 1 F 4

V4 A* BA* CA* DB EB F

L3 7 4

L2 (3) 7 4

L(EC) = L(CA*) + w(CA*, E) = 3+5 = 8

L(EC) = L(CA*) + w(CA*, E) = 3+5 = 8 > 4 ...

B 2 A 2 3 C

D 2 1 F 4

V4 A* BA* CA* DB E B* F

L3 7 (4)

B 2 A 2 3 C

D 2 1 F 4

V4 A* BA* CA* DB E B* F

L4 7 -

L3 7 (4)

B 2 A 2 3 C

D 2 1 F 4

V4 A* BA* CA* DB E B* F

L4 7 -

L3 7 (4)

B 2 A 2 3 C

D 2 1 F 4

V4 A* BA* CA* DB E B* F

L4 7 -

L3 7 (4)

B 2 A 2 3 C

D 2 1 F 4

V5 A* BA* CA* DB EB* F

L4 7 -

L3 7 (4)

B 2 A 2 3 C

D 2 1 F 4

V5 A* BA* CA* DB EB* F

L4 7 -

L3 7 (4)

L(DE) = L(EB*) + w(EB*, D)= 4+1 = 5

L(DE) = L(EB*) + w(EB*, D)= 4+1 = 5 < 7

B 2 A 2 3 C

D 2 1 F 4

V5 A* BA* CA* DE EB* F

L4 5 -

L3 7 (4)

B 2 A 2 3 C

D 2 1 F 4

V5 A* BA* CA* DE EB* FE

L4 5 8

L3 7 (4)

L(DE) = L(EB*) + w(EB*, D)= 4+1 = 5 < 7

L(FE) = L(EB*) + w(EB*, F)= 4+4 = 8

B 2 A 2 3 C

D 2 1 F 4

V5 A* BA* CA* DE EB* FE

L4 5 8

L3 7 (4)

B 2 A 2 3 C

D 2 1 F 4

V5 A* BA* CA* DE * EB* FE

L4 (5) 8

L(FE) = L(EB*) + w(EB*, F)= 4+4 = 8

B 2 A 2 3 C

D 2 1 F 4

V6 A* BA* CA* DE * EB* FE

L5 8

L4 (5) 8 3 2 A

D 2 1 F 4

V6 A* BA* CA* DE * EB* FE

L5 8

L4 (5) 8

L(FD) = L(DE*) + w(DE*, F)= 5+2 = 7

L(FD) = L(DE*) + w(DE*, F)= 5+2 = 7 < 8 ...

B 2 A 2 3 C

D 2 1 F 4

V6 A* BA* CA* DE * EB* FD

L5 7

L4 (5) 8 3 2 A

D 2 1 F 4

V6 A* BA* CA* DE * EB* FD *

L5 (7)

L(FD) = L(DE*) + w(DE*, F)= 5+2 = 7 < 8 ...