tema 3: caminos y distancias - departamento de …ma1.eii.us.es/material/ftg_itis_tema3.pdf · •...

44
1 Tema 3: Caminos y distancias Caminos y distancias Distancia en grafos. • Algoritmo de Moore. • Distancia en grafos ponderados. Algoritmo de Dijkstra. • Centro y mediana de grafo. • Digrafos de Actividad. • Algoritmo del camino crítico Fundamentos de la teoría de grafos. 3º I.T.I. de Sistemas Mª Teresa Cáceres Sansaloni

Upload: letram

Post on 14-Oct-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

1

Tema 3: Caminos y distanciasCaminos y distancias

• Distancia en grafos.

• Algoritmo de Moore.

• Distancia en grafos ponderados.

Algoritmo de Dijkstra.

• Centro y mediana de grafo.

• Digrafos de Actividad.

• Algoritmo del camino crítico

Fundamentos de la teoría de grafos.3º I.T.I. de Sistemas

Mª Teresa Cáceres Sansaloni

2

DefiniciDefinicióón:n: Sea G un grafo no trivial y u y v una pareja de vértices de G, la distanciadistancia, dG(u,v) (o d(u,v)) entre u y v es la longitud del u-v camino más corto en G, si tal camino existe. Si G no contiene un camino u-v, entonces d(u,v)=∞

La función distancia en un grafo G es una mméétricatrica, es decir, una aplicación

V(G)xV(G) ö Ù+

Que verifica las siguientes propiedades:

d(u,v)≥ 0 y d(u,v)=0 ⇔ u=vd(u,v) = d(v,u) ∀u,v ∈V(G)d(u,v) ≤ d(u,w) + d(w,v) ∀u,v,w ∈V(G)

Sea D un digrafo, la distancia dirigidadistancia dirigida dD(u,v) (o d(u,v)) del vértice u al vértice v de D es la longitud del camino más corto dirigido u-v si existe ese camino y en otro caso es ∞

3

Algoritmo de Algoritmo de MooreMoore

P1.- [Inicialmente, cada vértice w≠u es etiquetado con la etiqueta l(w)=∞ y a u le asignamos la etiqueta l(u)=0. La cola Q contiene los vértices etiquetados cuyos vértices adyacentes deben ser todavía etiquetados. Inicialmente, Q contiene sólo al vértice u]

Para cada vértice w≠u, sea l(w) ô ∞

Además, l(u) ô 0, Q ô {u}

P2.- Si Q≠∆, entonces eliminar un vértice x de Q;

en otro caso, parar, no hay camino u-v.

Utiliza un procedimiento de búsqueda en anchura de modo que los vértices son visitados en igual orden que el algoritmo BFS, pero asigna otras etiquetas.Encuentra la d(u,v) para una pareja de vértices u y v (distintos) de G asícomo un camino mínimo u-v, si existe

4

P3.- [Sea PADRE(y), el padre de y en el árbol de búsqueda en anchura. Para cada vértice y adyacente con x y todavía etiquetado con ∞, asignar x a PADRE(y), reemplazar la etiqueta l(y), por el valor finito l(x)+1 y añadir el vértice y a la cola Q]

Para cada vértice y adyacente a x / l(y)=∞,

PADRE(y) ≠ x, l(y) ≠ l(x)+1

QôQ+{y}

P4.- Si l(v)=∞, entonces volver al paso P2; en otro caso, ir al P5.

P5.- [Este paso encuentra un u-v camino mínimo]

5.1.- k ≠ l(v) y uk ≠ v5.2.- Si k≠0, entonces uk-1 ≠ PADRE(uk)

en otro caso ir al paso 5.4.5.3.- k ≠ k-1 e ir al paso 5.2.5.4.- Retorna u0,u1,…,uk=v , un camino mínimo u-v

5

Notas:Este algoritmo no etiqueta todos los vértices, sólo los que están a menor distancia que d(u,v).

Se puede modificar para que nos calcule la distancia de un vértice u de G a todos los demás (pero no da el camino mínimo).

6

Algoritmo de Algoritmo de MooreMoore (modificado)(modificado)[Encontrar d(u,v) para un vértice fijo u de G y cualquier vértice v de G]

P1.- Para cada vértice v≠u, sea l(v) ≠ ∞Sea l(u) ≠ 0 y añadir u a la cola, Q ≠ {u}

P2.- Si Q≠∆, entonces eliminar el primer vértice x de Q e ir al Paso 4.

P3.- Si Q=∆, entonces retornar los pares (v, l(v)) para todos los vértices v de G. FIN

P4.- Para cada vértice y adyacente a x, tal que l(y) = ∞l(y) ≠ l(x)+1, Q ≠ Q + {y} y volver al paso 2.

Cuando el algoritmo termina la etiqueta de cada vértice es la distancia desde el vértice fijo u

7

Para digrafos, basta cambiar las palabras “adyacente con” por“adyacente desde”.

Complejidad:Complejidad: O(q)

Del P1 al P4 cada arista se visita como máximo dos veces (una para cada vértice), luego el cálculo d(u,v) requiere O(q).

En P5, como la longitud de un camino cualquiera en G es menor o igual que mín{p-1,q}, el cálculo del camino mínimo requiere O(mín{p,q})

La complejidad del algoritmo es O(q).

8

Distancia en grafos ponderadosDistancia en grafos ponderados

v1

5

5 5 5

5

5

5

5

5

10

1010

5

20

20

202020

10 20

20

30

v2v1 v4v3

ah v5 v6

v7 v8

v10

v9

v11

Para ir de h (Hospital)a a (lugar del accidente)¿Cuál será el camino más corto?

9

Distancia en grafos ponderadosDistancia en grafos ponderados

v1

5

5 5 5

5

5

5

5

5

10

1010

5

20

20

202020

10 20

20

30

v2v1 v4v3

ah v5 v6

v7 v8

v10

v9

v11

Para ir de h (Hospital)a a (lugar del accidente)¿Cuál será el camino más corto?

10

Algoritmo de Algoritmo de DijkstraDijkstra[Para determinar la distancia desde un vértice u0 a cualquier vértice del grafo G=(V,E) ponderado]

P1.- [Inicializar las etiquetas de todos los vértices (v e G, v ≠ u0 ,l(v)=∞ ;l(u0)=0). Inicializar un contador i a 0. El conjunto S contiene solamente au0 (vértices de G cuya distancia desde u0 ha sido calculada) y elcomplementario S = V-{u0}].

i ≠ 0, S ≠ {u0}, S ≠ V-{u0}

l(u0) ≠ 0, l(v) ≠ ∞ para cada v ∈ V-{u0}si p=1, entonces FIN; si no, CONTINUAR

11

_P2.- [En este paso se actualizan, si fuera necesario, las etiquetas de los vértices de S adyacentes con ui. Además, para cada vértice v al que se le cambie la etiqueta l(v) se le asigna ui a PADRE(v)].

_Para cada v∈ S tal que uiv ∈E(G) se procede como sigue:

si l(v)≤l(ui)+w(ui,v) entonces CONTINUARsi no, l(v) ≠ l(ui)+w(ui,v) y PADRE(v) ≠ ui

P3.- [En este paso se determina el nuevo vértice ui+1 de S, para el que se va a encontrar la distancia desde u0, d(u0,ui+1)]

Hallar m=min{l(v)/v∈S}Seleccionar un vértice vj ∈ S cumpliendo l(vj)=mRetornar m como distancia de u0 a vj y ui+1 ≠ vj

_

__

12

P5.- [En este paso se actualiza la variable inicial i y determina si el algoritmo ha finalizado]

i ô i+1si i=p-1, entonces FINsi no ir al P2

P4.- [En este paso aumenta el conjunto S de vértices de G cuya distancia a u0 ya haya sido calculada y, consecuentemente, disminuye S]

S ≠ S∪{ui+1} S ≠ S-{ui+1}_

_

_

http://profesores.elo.utfsm.cl/~agv/elo320/animation/dijkstra/dijkstra_applet.html

http://neo.lcc.uma.es/evirtual/cdd/applets/distancia%20corta/Example2.html

http://www.dma.fi.upm.es/gregorio/grafos/CamMin/inicio/Inicio.htm

13

v1 v2 v3 v4

v5v6

v7 v8

v9v10 v11 v12

v13 v16v14 v15

5

7

8

910

12

15 16 17

18

28

1

2

34 6

13 14

27

11 19 20

2122

23 24 2526

Camino mínimo de v5 a v16

14

v1 v2

v4

v3

v5

v6 v7 v8

u0

1

2 3

3

3 5

11

2

2 2

4

4

56

a) Usar el algoritmo de Dijkstra para determinar d(u0,v) para cada v de G en el grafo ponderado G de la figura y determinar uncamino mínimo u0-v3.

b) Repetir para el grafo H obtenido de G borrando los pesos de las aristas. Usar Moore y Dijkstra.

EjerciciosEjercicios

1

15

2

Haciendo uso del algoritmo de Dijkstra calcular d(u0,vi) para i=1,2,…,8 en el grafo G adjunto y determinar un camino mínimou0-v5.

12

2

33

4

4

5 6

7

8

9

v3

v2

v4

v5

v1

v6

v7

v8

u0

16

3

v2v1

v3

v4

v5v6

v7 v8

11

2

2

2

3

3

3

4

5

5

5

6

7

7

El grafo ponderado de la figura modela un barrio o urbanización, donde cada arista corresponde a una calle y cada vértice a una intersección de calles. Los pesos de las calles corresponden al tiempo (medio) de recorrido de cada sección de calle (obsérvese que la calle v8v3 pasa bajo la v5v4por medio de un túnel). ¿Cuál es el tiempo medio de recorrido más corto de v1 a vi para i=2,…,8? Encuéntrese la ruta más rápida desde v1 a v3.

17

Teorema:Teorema:Sea G=(V,E) un (p,q)-grafo ponderado. El algoritmo de Dijkstracalcula la distancia desde un vértice fijado u0 a cualquier otro vértice de G. Es decir, cuando el algoritmo termina

l(v)=d(u0,v) ∀v∈VAdemás, si l(v)≠∞ y v≠u0, entonces

u0=w0,w1,w2,…,wk=ves un camino mínimo u0-v, donde wi-1=PADRE(wi) para 1≤ i ≤ k

Demostración:Suponemos G conexo. Procederemos por inducción completa sobre i para demostrar

que l(v)=d(u0,v) para cualquier v∈Si={u0,u1,…,ui}

para i=0 es evidente

Suponemos que es cierto para cualquier i (0§ i § p-1)

Y lo demostraremos para i+1; veremos que l(ui+1)=d(u0,ui+1)

18

Por Dijkstra, se sabe que ui+1 es un vértice tal que l(ui+1)=min{l(v)/ v∈ Si}

_

l(ui+1)=min{l(u)+w(u,v) / u∈ Si, v∈Si, uv ∈ E(G)}= (H.I)min{d(u0,u)+w(u,v) / u∈ Si, v∈Si, uv ∈ E(G)}

dicho mínimo se consigue para v=ui+1 por lo que l(ui+1)=d(u0,u)+w(u,ui+1)=d(u0,ui+1)

__

La segunda parte, sea v∈V(G) tal que l(v)≠∞ y v≠u0, al finalizar se tiene que

l(v)=l(v1)+w(v1,v) donde PADRE(v)=v1

luego v1 es el penúltimo vértice en algún camino mínimo u0-v.Continuando de esa forma encontramos una secuencia de vértices

u0=vn,vn-1,…v1,v donde PADRE(vi)=vi+1 para 1≤i≤n-1

19

Complejidad:Complejidad: O(p2)

El mayor consumo se realiza en los pasos P2 y P3.

En P2 cada arista de G se visita como máximo una vez. ComoG tiene q aristas, la complejidad de P2 es O(q).

En P3, se determina la mínima etiqueta de los elementos de Scada vez, esto puede hacerse con |S|-1 comparaciones. Si Gtiene orden p, entonces |S|<p y P3 se realiza como máximo p-1 veces, por lo que este paso es de O(p2).

Como q≤p(p-1)/2. El algoritmo requiere O(p2)

_

__

20

La excentricidadexcentricidad e(v) de un vértice v de G es la distancia de v al vértice más alejado de él. Es decir,

e(v)=max{d(v,u) / u∈ V(G)}

Si G es conexo, se definen radioradio y didiáámetrometro de G como la menor y la mayor de sus excentricidades, respectivamente. Es decir,

rad(G)=min{e(v) / v∈ V(G)}diam(G)=max{e(v) / v∈ V(G)}

El centrocentro de G, C(G), es el subgrafo inducido por los vértices cuya excentricidad sea la mínima del grafo, es decir rad(G).

PropiedadesPropiedadesSea G un grafo. Entonces,

rad(G)≤diam(G)≤ 2rad(G)

Cualquier grafo es el centro de algún grafo conexo.

Cualquier grafo ponderado G es el centro de algún grafo ponderado G'.

21

DistanciaDistancia, d(v), de un vértice v en un grafo G, ponderado o no, se define como la suma de sus distancias a todos los vértices del grafo; es decir,

d(v)=∑ d(v,u) d(v) = ∑ wi d(v, vi)1£i£p

La medianamediana de G, M(G), es el subgrafo inducido por los vértices que tienen mínima distancia.

u∈V(G)

El centro y la mediana de un grafo no son necesariamente igualesy pueden ser, incluso, disjuntos.

Los algoritmos de Moore y Dijkstra pueden modificarse fácilmente para determinar:

22

* La excentricidad de cada vértice.(Se halla la distancia de un vértice a cada uno de los demás y se selecciona la mayor. Se puede repetir para cada vértice).

* La distancia de cada vértice.(Se halla la distancia de un vértice a cada uno de los demás y se suman todas estas distancias).

* El radio y el diámetro.(Una vez calculadas las excentricidades, se seleccionan la menor y la mayor).

* El centro.(Conocido el radio, se seleccionan los vértices cuya excentricidad sea dicho radio y las correspondientes aristas).

* La mediana.(Una vez halladas las distancias de cada vértice, se seleccionan los vértices que tengan menor distancia y las correspondientes aristas).

23

Teorema:Teorema: Sea T un árbol de orden p ≥ 3, y sea T’ el árbol que resulta de eliminar de T los vértices finales.Entonces C(T) = C(T’)

AlgoritmoAlgoritmo(Para determinar el centro de un árbol T)

P1.- Hacer T’ ≠ T

P2.- Si T’ @ K1 o T’ @ K2 , entonces retorna C(T) = T’ y FINen otro caso, ir al paso P3

P3.- Eliminar los vértices de grado 1 en T’ para obtener T’’Hacer T’ ≠ T’’ y volver al paso P2

Teorema:Teorema: El centro de cualquier árbol es isomorfo a K1 o K2

24

Localizar el mejor emplazamiento para un centro de emergenciascentro de emergenciasdel 061 y uno de trdel 061 y uno de trááfico de la Guardia Civil.fico de la Guardia Civil.

Ambos centros, deberán dar servicio a toda la provincia de Sevilla. Las poblaciones a considerar serán el listado que aparece en el “plan provincial de servicios sociales 2003” editado por el Área de Asuntos Sociales de la Diputación de Sevilla.

Consideramos dos parámetros iniciales:población de cada pueblo* calidad de las vías de comunicación

Autopista/autovía: 1Carretera de 1 orden: 2Carretera de 2 orden: 3Carretera de 3 orden: 4

*Datos obtenidos de la Diputación provincial para poblaciones de menos de 20000 habitantes, el resto dedatos de la Web de la Junta de Andalucía.

25

24450Lebrija4315El Saucejo2409Cañada Rosal

1894Las Navas de la Co.3705El Rubio9030Cantillana

15678Las Cabezas de S.J.1410El Ronquillo25109Camas

29759La Rinconada1791El Real de la Jara3585Burguillos

5446La Luisiana2373El Pedroso10692Brenes

3626La Lantejuela384El Madroño10441Bormujos

5188La Campana7059El Garrobo5078Bollullos de la M.

12967La Algaba7704El Cuervo5045Benacazón

786Lora de Estepa16303El Viso del Alcor25932Carmona

6062Isla Mayor1643El Castillo de las G.3175Badolatosa

2324Huevar37900Écija5859Aznalcollar

6075Herrera103282Dos Hermanas3549Aznalcázar

8429Guillena24288Coria del Río18468Arahal

2983Guadalcanal7143Constantina3244Almensilla

10511Gines5186Cazalla de la Sierra1746Almadén de la Plata

3885Gilena630Castilleja del Campo1391Algamitas

5550Gerena16408Castilleja de la Cue.3423Alcolea del Río

6328Gelves1741Castilleja de Guz.9200Alcalá del Río

7440Fuentes de And.4548CastilBlanco de los A58351Alcalá de Guadaira

11889Estepa5244Casariche2014Alanís de la Sierra

5591Espartinas2319Carrión de los Cés.1970Aguadulce

26

7131Santiponce6979Paradas

11070Sanlúcar la Mayor3973Palomares del Río

5377Villanueva del Río704San Nicolás del Puerto17212Osuna

1498Villanueva de San J20072San Juan de Aznalf.27786Morón de la Fronte.

3792Villamanrique de la4208Roda de Andalucía2727Martín de la Jara

6532Villaverde del Río10648Puebla del Río2647Marinaleda

6828Valencina de la Co3394Puebla de los Infantes17921Marchena

45947Utrera10646Puebla de Cazalla36232Mairena del Aljaraf.

4989Umbrete3234Pruna16894Mairena del Alcor

18538Tomares11448Pilas33461Los Palacios y Villaf.

8905Tocina3930Peñaflor4108Los Corrales

704114Sevilla5062Pedrera18768Lora del Río

27

ModelizaciModelizacióónn del problemadel problema

Grafo conexo ponderado y no dirigido.Vértices: poblaciones del listado anterior.Aristas: Tramos de carreteras que unan poblaciones

adyacentes.

Ponderación 1: población media entre los vértices de las aristas.Ponderación 2: distancia entre las poblaciones (en kilómetros).Ponderación 3: tiempo medio en recorrer las aristas.

Nota: con la ponderación 1, como Dijkstra calcula caminos mínimos, de aplicarse directamente evitaría las ciudades con mayor población, así, para transformar valores altos en valores más pequeños, se restan los datos de una constante mayor que todos los ellos.

Ejemplo: Lebrija- El CuervoPoblación de Lebrija: 24450Población de El Cuervo: 7704

Valor de la arista: ((800.000-24450)+(800.000-7704))/2=783923

28

Nota: para la ponderación 3, se usan los datos kms y el tipo de vía. Hay que tener en cuenta que no siempre se circula por la misma vía, por lo que habrá que tener en cuenta los kms que se hacen por cada vía. Para calcular el tipovia habrá que calcular el porcentaje del trayecto que se realiza por cada tipo de vía y sumarlos.

Ejemplo: La Campana-La LuisianaRecorrido total: 21 KmsRecorrido vía tipo 1: 12 KmsRecorrido vía tipo 4: 9 Kms

tipovia:=(12/21)*1+(9/21)*4=2.28

La velocidad media de recorrido dependerá del tipovia, vías tipo 1 -- 120kms/hvías tipo 2 -- 100kms/hvías tipo 3 -- 80kms/hvías tipo 4 -- 70kms/h

y se calcula la velocidad media exacta.

29

Centro de tráfico de la Guardia Civil, buscamos beneficiar a la mayor cantidad de gente posible, por lo que debe situarse cerca de donde haya más concentración de gente posible, por lo que se debe calcular la mediana del grafo.

El 061, deseamos primar la velocidad de actuación, es decir, que pueda desplazarse de forma rápida a cualquier punto de la provincia sin perjudicar ningún punto en particular, lo que buscamos es el centro del grafo.

Resultados obtenidos:Pond 1:

Vértices de la mediana SevillaVértices del centro Carmona

Pond 2: Vértices de la mediana SevillaVértices del centro Mairena del Alcor

Pond 3: Vértices de la mediana SevillaVértices del centro El Viso del Alcor

30

Digrafos de actividad. Algoritmo de caminos críticos

Problema: Establecer una secuenciación de las tareas de un proyecto.

Modelo del problema:

Modelamos la situación mediante un digrafo acíclico, D.

Vértices:vértice etiquetado por S (vértice de comienzo)vértice etiquetado por T (vértice final)resto vértices, las actividades a desarrollar

31

Arcos:S está dirigido hacia un vértice v ∈V(G) si la actividad v

puede comenzar antes de que cualquier otra actividad estécompletada.

w∈V(G) está dirigido hacia Tsi ninguna actividad necesita que w sea completada antes que comience la actividad.

un vértice x está dirigido hacia otro vértice y, si y sólo si no necesita que ninguna actividad esté realizada entre la finalización de x y el comienzo de y.

t(w), indica el tiempo requerido para completar la actividad w.Se establece t(S) = t(T) = 0.

Al digrafo construido se le llama digrafo de actividad del proyecto

32

Ejemplo:

Supongamos que queremos renovar un aula magna. La sala necesita nuevas alfombras, asientos, paredes nuevas, pizarra y pintar las paredes.

En la tabla siguiente, junto con las actividades damos eltiempo estimado en terminarlas:

1R; Cambiar pizarra

5A; Colocar paredes nuevas

20P; Pintar paredes

10I; Instalar nuevos asientos

8L; Poner nuevas alfombras

TIEMPO (h)ACTIVIDAD

33

Digrafo de actividad

20

1

10

500

8

L

ST

R

I

P

A

Tiempo estimado en realizar el proyecto completo. 25 horas

34

Si v1,v2,v3,…, vk es un camino en el digrafo de actividad D, entonces la longitud tiempo del camino es

∑t(vi)i=1

k

En el digrafo anterior, el camino S,A,P,T tiene una longitud-tiempo de 25h

35

Camino crítico

Un camino crítico en un digrafo de actividad es un camino más largo en unidades de tiempo.

Teorema:Sea D el digrafo de actividad asociado con un proyecto

dado. Entonces, la longitud-tiempo de un camino crítico en D es igual al mínimo tiempo necesario para completar el proyecto.

Ejemplo:Supongamos que queremos hacer un trabajo en el

jardín de una casa.El proyecto puede ser descrito por las siguientes

actividades:

36

3F: Colocar una valla y una cancela

2R: Plantar árboles

2D: Enlosar el camino

2P: Plantar el césped

1I: Instalar un sistema de goteo subterráneo

2L: Abonar el terreno

3C: Limpiar la tierra

TIEMPO (días)ACTIVIDAD

3S

2

2 2

3

1

020

C L

I

D

T

F

P R

37

F

R

D

P

I

L

C

10987654321

Dias

Actividades

38

Algoritmo

Asignamos una etiqueta l(v) a cada vértice v del digrafo D. Al final del algoritmo, l(v) es la mayor longitud-tiempo de un camino S-v.

Inicialmente, solo a S se le asigna la etiqueta 0. Cualquier otro vértice v (≠S) será etiquetado sólo después de que cada vértice adyacente hacia v haya sido etiquetado.

l(v) = max {l(u) + t(v) / (u,v)∈E(D)}

PADRE(v) es el vértice w para el que l(v) = l(w) + t(v).

w es un vértice que precede a v en un camino de máxima longitud-tiempo S-v en D.

El etiquetado termina cuando el vértice final T ha sido etiquetado. Las etiquetas Padre permiten construir un camino crítico de D

39

Algoritmo (camino crítico)[Determinar un camino crítico en un digrafo de actividad D con vértice de inicio S y vértice final T. La variable t(v) es el tiempo empleado en completar la tarea v.]

P1.- [Este paso inicializa una variable n(v) para δe(v) para cada vértice v≠S de D. La variable n(v) será usada para contar el número de vértices adyacentes hacia v que aún no hayan sido etiquetados.]

Para cada vértice v≠S, sea n(v) ôδe(v)

P2.- [Inicializamos una cola Q]

QôØ

40

P3.- [Etiquetar l(S) y actualiza n(v) para todos los vértices v adyacentes desdeS. Los vértices v para los que n(v)=0 son añadidos a la cola Q, que contiene a vértices que están preparados para ser etiquetados.]

P3.1.- l(S) ≠ 0P3.2.- Para los vértices v de D tal que (S,v) ∈ E(D)

hacer n(v) ≠ n(v) - 1 ; PADRE(v) ≠ S ;Q ≠ Q » {v}

P4.- [Este paso elimina un vértice w de Q, determina PADRE(w), actualiza n(v) para todos los vértices v adyacentes desde w y añade a la cola Q aquellosvértices v para los cuales n(v)=0.]

P4.1.- Eliminar el vértice w de Q;l(w) ≠ max {l(u) + t(w) /(u,w) ∈ E(D)}

P4.2.- Sea u’ un vértice tal que l(w) = l(u’) + t(w)entonces, PADRE(w) ≠ u’

P4.3- Para cada vértice v tal que (w,v) ∈ E(D)n(v) ≠ n(v) - 1,Si n(v) = 0, entonces Q ≠ Q » {v}

41

P5.- [Este paso determina si T ha sido etiquetado]Si T ha sido etiquetado, entonces continuar;en caso contrario volver al paso P4

P6.- [Este paso encuentra un camino crítico en D]

P6.1.- P: T = v0P6.2.- k ≠ 0P6.3.- [Sea determinado P: vk,vk-1,…,v1,v0, donde vi = PADRE(vi-1) para 1 ≤ i ≤ k. Entonces este paso determina si P es ya un camino crítico . Si aún no se ha encontrado un camino crítico, entonces este paso extiende a P]

Si vk=S, entonces retornar P y l(T). FINen otro caso, vk+1 ô PARENT(vk) y

P: vk+1,vk,…,v1,v0P6.4.- k ≠ k+1 y volver al paso P6.3

Complejidad del algoritmo O(q)

42

3

2

2 5

4

1

0

2

0 1S

J

B

D

TE

G

H

A

F

Aplicar el algoritmo al siguiente grafo

--212121211

( l(v) , Padre(v) )v = vérticeetiquetadoQn(T)n(H)n(G)n(F)n(E)n(D)n(J)n(B)n(A)

43

( l(v) , Padre(v) )v = vérticeetiquetado

Qn(T)n(H)n(G)n(F)n(E)n(D)n(J)n(B)n(A)

44

(10,G)T

(10, E)GT0

(8,F)HG1

(6,J)EH G

20

(3,B)FE H2010

(5,A)JF2111

(4, A)DJ F

2112

(1,S)BD J F

212020

(2, S)AB D

2121201

(0,-)SA B

212121200

212121211

( l(v) , Padre(v) )v = vérticeetiquetado

Qn(T)n(H)n(G)n(F)n(E)n(D)n(J)n(B)n(A)

De las etiquetas se determina el cam. crítico P: S,A,J,E,G,T