You are on page 1of 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 crtico
Fundamentos de la teora de grafos.
3 I.T.I. de Sistemas
M Teresa Cceres Sansaloni
2
Definici Definici n: n: Sea G un grafo no trivial y u y v una pareja de
vrtices de G, la distancia distancia, d
G
(u,v) (o d(u,v)) entre u y v es la
longitud del u-v camino ms corto en G, si tal camino existe. Si G
no contiene un camino u-v, entonces d(u,v)=
La funcin distancia en un grafo G es una m m trica trica, es decir,
una aplicacin
V(G)xV(G)
+
Que verifica las siguientes propiedades:
d(u,v) 0 y d(u,v)=0 u=v
d(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 dirigida distancia dirigida d
D
(u,v) (o d(u,v)) del
vrtice u al vrtice v de D es la longitud del camino ms corto
dirigido u-v si existe ese camino y en otro caso es
3
Algoritmo de Algoritmo de Moore Moore
P1.- [Inicialmente, cada vrtice wu es etiquetado con la etiqueta l(w)= y a u le asignamos la
etiqueta l(u)=0. La cola Q contiene los vrtices etiquetados cuyos vrtices adyacentes deben
ser todava etiquetados. Inicialmente, Q contiene slo al vrtice u]
Para cada vrtice wu, sea l(w)
Adems, l(u) 0, Q {u}
P2.- Si Q, entonces eliminar un vrtice x de Q;
en otro caso, parar, no hay camino u-v.
Utiliza un procedimiento de bsqueda en anchura de modo que los vrtices
son visitados en igual orden que el algoritmo BFS, pero asigna otras
etiquetas.
Encuentra la d(u,v) para una pareja de vrtices u y v (distintos) de G as
como un camino mnimo u-v, si existe
4
P3.- [Sea PADRE(y), el padre de y en el rbol de bsqueda en anchura. Para cada vrtice y
adyacente con x y todava etiquetado con , asignar x a PADRE(y), reemplazar la etiqueta l(y),
por el valor finito l(x)+1 y aadir el vrtice y a la cola Q]
Para cada vrtice 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 mnimo]
5.1.- k l(v) y u
k
v
5.2.- Si k0, entonces u
k-1
PADRE(u
k
)
en otro caso ir al paso 5.4.
5.3.- k k-1 e ir al paso 5.2.
5.4.- Retorna u
0
,u
1
,,u
k
=v , un camino mnimo u-v
5
Notas:
Este algoritmo no etiqueta todos los vrtices, slo los
que estn a menor distancia que d(u,v).
Se puede modificar para que nos calcule la distancia
de un vrtice u de G a todos los dems (pero no da el
camino mnimo).
6
Algoritmo de Algoritmo de Moore Moore (modificado) (modificado)
[Encontrar d(u,v) para un vrtice fijo u de G y cualquier vrtice v de G]
P1.- Para cada vrtice vu, sea l(v)
Sea l(u) 0 y aadir u a la cola, Q {u}
P2.- Si Q, entonces eliminar el primer vrtice x de Q
e ir al Paso 4.
P3.- Si Q=, entonces retornar los pares (v, l(v)) para todos
los vrtices v de G. FIN
P4.- Para cada vrtice 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 vrtice es la
distancia desde el vrtice 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 mximo dos veces (una para
cada vrtice), luego el clculo d(u,v) requiere O(q).
En P5, como la longitud de un camino cualquiera en G es menor o
igual que mn{p-1,q}, el clculo del camino mnimo requiere
O(mn{p,q})
La complejidad del algoritmo es O(q).
8
Distancia en grafos ponderados Distancia en grafos ponderados
v
1
5
5 5
5
5
5
5
5
5
10
10
10
5
20
20
20
20
20
10
20
20
30
v
2
v
1
v
4
v
3
a
h
v
5
v
6
v
7
v
8
v
10
v
9
v
11
Para ir de h (Hospital)
a a (lugar del accidente)
Cul ser el camino
ms corto?
9
Distancia en grafos ponderados Distancia en grafos ponderados
v
1
5
5 5
5
5
5
5
5
5
10
10
10
5
20
20
20
20
20
10
20
20
30
v
2
v
1
v
4
v
3
a
h
v
5
v
6
v
7
v
8
v
10
v
9
v
11
Para ir de h (Hospital)
a a (lugar del accidente)
Cul ser el camino
ms corto?
10
Algoritmo de Algoritmo de Dijkstra Dijkstra
[Para determinar la distancia desde un vrtice u
0
a cualquier vrtice del grafo
G=(V,E) ponderado]
P1.- [Inicializar las etiquetas de todos los vrtices (v e G, v u
0
,l(v)= ;
l(u
0
)=0). Inicializar un contador i a 0. El conjunto S contiene solamente a
u
0
(vrtices de G cuya distancia desde u
0
ha sido calculada) y el
complementario S = V-{u
0
}].
i 0, S {u
0
}, S V-{u
0
}
l(u
0
) 0, l(v) para cada v V-{u
0
}
si p=1, entonces FIN; si no, CONTINUAR
11
_
P2.- [En este paso se actualizan, si fuera necesario, las etiquetas de los
vrtices de S adyacentes con u
i
. Adems, para cada vrtice v al que se le
cambie la etiqueta l(v) se le asigna u
i
a PADRE(v)].
_
Para cada v S tal que u
i
v E(G) se procede como sigue:
si l(v)l(u
i
)+w(u
i
,v) entonces CONTINUAR
si no, l(v) l(u
i
)+w(u
i
,v) y PADRE(v) u
i
P3.- [En este paso se determina el nuevo vrtice u
i+1
de S, para el que se va a
encontrar la distancia desde u
0
, d(u
0
,u
i+1
)]
Hallar m=min{l(v)/vS}
Seleccionar un vrtice v
j
S cumpliendo l(v
j
)=m
Retornar m como distancia de u
0
a v
j
y u
i+1
v
j
_
_
_
12
P5.- [En este paso se actualiza la variable inicial i y determina si el algoritmo ha
finalizado]
i i+1
si i=p-1, entonces FIN
si no ir al P2
P4.- [En este paso aumenta el conjunto S de vrtices de G cuya distancia a
u
0
ya haya sido calculada y, consecuentemente, disminuye S]
S S{u
i+1
} S S-{u
i+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
v
1
v
2
v
3 v
4
v
5
v
6
v
7
v
8
v
9
v
10
v
11
v
12
v
13 v
16
v
14 v
15
5
7
8
9
10
12
15
16 17
18
28
1
2
3
4
6
13 14
27
11
19
20
21 22
23
24
25
26
Camino mnimo de v
5
a v
16
14
v
1
v
2
v
4
v
3
v
5
v
6
v
7
v
8
u
0
1
2
3
3
3 5
1
1
2
2 2
4
4
5
6
a) Usar el algoritmo de Dijkstra para determinar d(u
0
,v) para
cada v de G en el grafo ponderado G de la figura y determinar un
camino mnimo u
0
-v
3
.
b) Repetir para el grafo H obtenido de G borrando los pesos de
las aristas. Usar Moore y Dijkstra.
Ejercicios Ejercicios
1
15
2
Haciendo uso del algoritmo de Dijkstra calcular d(u
0
,v
i
) para
i=1,2,,8 en el grafo G adjunto y determinar un camino mnimo
u
0
-v
5
.
1
2
2
3
3
4
4
5 6
7
8
9
v
3
v
2
v
4
v
5
v
1
v
6
v
7
v
8
u
0
16
3
v
2
v
1
v
3
v
4
v
5
v
6
v
7
v
8
1
1
2
2
2
3
3
3
4
5
5
5
6
7
7
El grafo ponderado de la figura
modela un barrio o urbanizacin,
donde cada arista corresponde a
una calle y cada vrtice a una
interseccin de calles. Los pesos
de las calles corresponden al
tiempo (medio) de recorrido de
cada seccin de calle (obsrvese
que la calle v
8
v
3
pasa bajo la v
5
v
4
por medio de un tnel). Cul es
el tiempo medio de recorrido ms
corto de v
1
a v
i
para i=2,,8?
Encuntrese la ruta ms rpida
desde v
1
a v
3
.
17
Teorema: Teorema:
Sea G=(V,E) un (p,q)-grafo ponderado. El algoritmo de Dijkstra
calcula la distancia desde un vrtice fijado u
0
a cualquier otro
vrtice de G. Es decir, cuando el algoritmo termina
l(v)=d(u
0
,v) vV
Adems, si l(v) y vu
0
, entonces
u
0
=w
0
,w
1
,w
2
,,w
k
=v
es un camino mnimo u
0
-v, donde w
i-1
=PADRE(w
i
) para 1 i k
Demostracin:
Suponemos G conexo.
Procederemos por induccin completa sobre i para demostrar
que l(v)=d(u
0
,v) para cualquier vS
i
={u
0
,u
1
,,u
i
}
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(u
i+1
)=d(u
0
,u
i+1
)
18
Por Dijkstra, se sabe que u
i+1
es un vrtice tal que
l(u
i+1
)=min{l(v)/ v S
i
}
_
l(u
i+1
)=min{l(u)+w(u,v) / u S
i
, vS
i
, uv E(G)}= (H.I)
min{d(u
0
,u)+w(u,v) / u S
i
, vS
i
, uv E(G)}
dicho mnimo se consigue para v=u
i+1
por lo que
l(u
i+1
)=d(u
0
,u)+w(u,u
i+1
)=d(u
0
,u
i+1
)
_
_
La segunda parte, sea vV(G) tal que l(v) y vu
0
, al finalizar se
tiene que
l(v)=l(v
1
)+w(v
1
,v) donde PADRE(v)=v
1
luego v
1
es el penltimo vrtice en algn camino mnimo u
0
-v.
Continuando de esa forma encontramos una secuencia de vrtices
u
0
=v
n
,v
n-1
,v
1
,v donde PADRE(v
i
)=v
i+1
para 1in-1
19
Complejidad: Complejidad: O(p
2
)
El mayor consumo se realiza en los pasos P2 y P3.
En P2 cada arista de G se visita como mximo una vez. Como
G tiene q aristas, la complejidad de P2 es O(q).
En P3, se determina la mnima etiqueta de los elementos de S
cada vez, esto puede hacerse con |S|-1 comparaciones. Si G
tiene orden p, entonces |S|<p y P3 se realiza como mximo
p-1 veces, por lo que este paso es de O(p
2
).
Como qp(p-1)/2. El algoritmo requiere O(p
2
)
_
_
_
20
La excentricidad excentricidad e(v) de un vrtice v de G es la distancia de v al
vrtice ms alejado de l. Es decir,
e(v)=max{d(v,u) / u V(G)}
Si G es conexo, se definen radio radio y di di metro metro 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 centro centro de G, C(G), es el subgrafo inducido por los vrtices cuya
excentricidad sea la mnima del grafo, es decir rad(G).
Propiedades Propiedades
Sea G un grafo. Entonces,
rad(G)diam(G) 2rad(G)
Cualquier grafo es el centro de algn grafo conexo.
Cualquier grafo ponderado G es el centro de algn grafo
ponderado G'.
21
Distancia Distancia, d(v), de un vrtice v en un grafo G, ponderado o no,
se define como la suma de sus distancias a todos los vrtices
del grafo; es decir,
d(v)= d(v,u) d(v) = w
i
d(v, v
i
)
1ip
La mediana mediana de G, M(G), es el subgrafo inducido por los
vrtices que tienen mnima distancia.
uV(G)
El centro y la mediana de un grafo no son necesariamente iguales
y pueden ser, incluso, disjuntos.
Los algoritmos de Moore y Dijkstra pueden modificarse
fcilmente para determinar:
22
* La excentricidad de cada vrtice.
(Se halla la distancia de un vrtice a cada uno de los dems y se
selecciona la mayor. Se puede repetir para cada vrtice).
* La distancia de cada vrtice.
(Se halla la distancia de un vrtice a cada uno de los dems y se
suman todas estas distancias).
* El radio y el dimetro.
(Una vez calculadas las excentricidades, se seleccionan la menor y la
mayor).
* El centro.
(Conocido el radio, se seleccionan los vrtices cuya excentricidad sea
dicho radio y las correspondientes aristas).
* La mediana.
(Una vez halladas las distancias de cada vrtice, se seleccionan los
vrtices 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 vrtices finales.
Entonces C(T) = C(T)
Algoritmo Algoritmo
(Para determinar el centro de un rbol T)
P1.- Hacer T T
P2.- Si T @K
1
o T @K
2
, entonces retorna C(T) = T y FIN
en otro caso, ir al paso P3
P3.- Eliminar los vrtices 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 K
1
o K
2
24
Localizar el mejor emplazamiento para un centro de emergencias centro de emergencias
del 061 y uno de tr del 061 y uno de tr fico de la Guardia Civil. fico de la Guardia Civil.
Ambos centros, debern dar servicio a toda la provincia de Sevilla.
Las poblaciones a considerar sern el listado que aparece en el plan
provincial de servicios sociales 2003 editado por el rea de Asuntos
Sociales de la Diputacin de Sevilla.
Consideramos dos parmetros iniciales:
poblacin de cada pueblo*
calidad de las vas de comunicacin
Autopista/autova: 1
Carretera de 1 orden: 2
Carretera de 2 orden: 3
Carretera de 3 orden: 4
*Datos obtenidos de la Diputacin provincial para poblaciones de menos de 20000 habitantes, el resto de
datos de la Web de la Junta de Andaluca.
25
24450 Lebrija 4315 El Saucejo 2409 Caada Rosal
1894 Las Navas de la Co. 3705 El Rubio 9030 Cantillana
15678 Las Cabezas de S.J. 1410 El Ronquillo 25109 Camas
29759 La Rinconada 1791 El Real de la Jara 3585 Burguillos
5446 La Luisiana 2373 El Pedroso 10692 Brenes
3626 La Lantejuela 384 El Madroo 10441 Bormujos
5188 La Campana 7059 El Garrobo 5078 Bollullos de la M.
12967 La Algaba 7704 El Cuervo 5045 Benacazn
786 Lora de Estepa 16303 El Viso del Alcor 25932 Carmona
6062 Isla Mayor 1643 El Castillo de las G. 3175 Badolatosa
2324 Huevar 37900 cija 5859 Aznalcollar
6075 Herrera 103282 Dos Hermanas 3549 Aznalczar
8429 Guillena 24288 Coria del Ro 18468 Arahal
2983 Guadalcanal 7143 Constantina 3244 Almensilla
10511 Gines 5186 Cazalla de la Sierra 1746 Almadn de la Plata
3885 Gilena 630 Castilleja del Campo 1391 Algamitas
5550 Gerena 16408 Castilleja de la Cue. 3423 Alcolea del Ro
6328 Gelves 1741 Castilleja de Guz. 9200 Alcal del Ro
7440 Fuentes de And. 4548 CastilBlanco de los A 58351 Alcal de Guadaira
11889 Estepa 5244 Casariche 2014 Alans de la Sierra
5591 Espartinas 2319 Carrin de los Cs. 1970 Aguadulce
26
7131 Santiponce 6979 Paradas
11070 Sanlcar la Mayor 3973 Palomares del Ro
5377 Villanueva del Ro 704 San Nicols del Puerto 17212 Osuna
1498 Villanueva de San J 20072 San Juan de Aznalf. 27786 Morn de la Fronte.
3792 Villamanrique de la 4208 Roda de Andaluca 2727 Martn de la Jara
6532 Villaverde del Ro 10648 Puebla del Ro 2647 Marinaleda
6828 Valencina de la Co 3394 Puebla de los Infantes 17921 Marchena
45947 Utrera 10646 Puebla de Cazalla 36232 Mairena del Aljaraf.
4989 Umbrete 3234 Pruna 16894 Mairena del Alcor
18538 Tomares 11448 Pilas 33461 Los Palacios y Villaf.
8905 Tocina 3930 Peaflor 4108 Los Corrales
704114 Sevilla 5062 Pedrera 18768 Lora del Ro
27
Modelizaci Modelizaci n n del problema del problema
Grafo conexo ponderado y no dirigido.
Vrtices: poblaciones del listado anterior.
Aristas: Tramos de carreteras que unan poblaciones
adyacentes.
Ponderacin 1: poblacin media entre los vrtices de las aristas.
Ponderacin 2: distancia entre las poblaciones (en kilmetros).
Ponderacin 3: tiempo medio en recorrer las aristas.
Nota: con la ponderacin 1, como Dijkstra calcula caminos mnimos,
de aplicarse directamente evitara las ciudades con mayor poblacin,
as, para transformar valores altos en valores ms pequeos, se
restan los datos de una constante mayor que todos los ellos.
Ejemplo: Lebrija- El Cuervo
Poblacin de Lebrija: 24450
Poblacin de El Cuervo: 7704
Valor de la arista: ((800.000-24450)+(800.000-7704))/2=783923
28
Nota: para la ponderacin 3, se usan los datos kms y el tipo de va.
Hay que tener en cuenta que no siempre se circula por la misma va,
por lo que habr que tener en cuenta los kms que se hacen por cada
va. Para calcular el tipovia habr que calcular el porcentaje del
trayecto que se realiza por cada tipo de va y sumarlos.
Ejemplo: La Campana-La Luisiana
Recorrido total: 21 Kms
Recorrido va tipo 1: 12 Kms
Recorrido va tipo 4: 9 Kms
tipovia:=(12/21)*1+(9/21)*4=2.28
La velocidad media de recorrido depender del tipovia,
vas tipo 1 -- 120kms/h
vas tipo 2 -- 100kms/h
vas tipo 3 -- 80kms/h
vas tipo 4 -- 70kms/h
y se calcula la velocidad media exacta.
29
Centro de trfico de la Guardia Civil, buscamos beneficiar a la
mayor cantidad de gente posible, por lo que debe situarse cerca de
donde haya ms concentracin de gente posible, por lo que se debe
calcular la mediana del grafo.
El 061, deseamos primar la velocidad de actuacin, es decir, que
pueda desplazarse de forma rpida a cualquier punto de la provincia
sin perjudicar ningn punto en particular, lo que buscamos es el
centro del grafo.
Resultados obtenidos:
Pond 1:
Vrtices de la mediana Sevilla
Vrtices del centro Carmona
Pond 2:
Vrtices de la mediana Sevilla
Vrtices del centro Mairena del Alcor
Pond 3:
Vrtices de la mediana Sevilla
Vrtices del centro El Viso del Alcor
30
Digrafos de actividad. Algoritmo de caminos crticos
Problema: Establecer una secuenciacin de las tareas de un
proyecto.
Modelo del problema:
Modelamos la situacin mediante un digrafo acclico, D.
Vrtices:
vrtice etiquetado por S (vrtice de comienzo)
vrtice etiquetado por T (vrtice final)
resto vrtices, las actividades a desarrollar
31
Arcos:
S est dirigido hacia un vrtice v V(G) si la actividad v
puede comenzar antes de que cualquier otra actividad est
completada.
wV(G) est dirigido hacia Tsi ninguna actividad necesita que
w sea completada antes que comience la actividad.
un vrtice x est dirigido hacia otro vrtice y, si y slo si no
necesita que ninguna actividad est realizada entre la finalizacin 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 el
tiempo estimado en terminarlas:
1
R; Cambiar pizarra
5
A; Colocar paredes nuevas
20
P; Pintar paredes
10
I; Instalar nuevos asientos
8
L; Poner nuevas alfombras
TIEMPO (h) ACTIVIDAD
33
Digrafo de actividad
20
1
10
5
0
0
8
L
S
T
R
I
P
A
Tiempo estimado en realizar el proyecto completo. 25 horas
34
Si v
1
,v
2
,v
3
,, v
k
es un camino en el digrafo de actividad D,
entonces la longitud tiempo del camino es
t(v
i
)
i=1
k
En el digrafo anterior, el camino S,A,P,T tiene una longitud-tiempo
de 25h
35
Camino crtico
Un camino crtico en un digrafo de actividad es un
camino ms largo en unidades de tiempo.
Teorema:
Sea D el digrafo de actividad asociado con un proyecto
dado. Entonces, la longitud-tiempo de un camino crtico en D es
igual al mnimo tiempo necesario para completar el proyecto.
Ejemplo:
Supongamos que queremos hacer un trabajo en el
jardn de una casa.
El proyecto puede ser descrito por las siguientes
actividades:
36
3
F: Colocar una valla y una cancela
2 R: Plantar rboles
2 D: Enlosar el camino
2 P: Plantar el csped
1
I: Instalar un sistema de goteo subterrneo
2 L: Abonar el terreno
3 C: Limpiar la tierra
TIEMPO (das) ACTIVIDAD
3
S
2
2 2
3
1
0
2 0
C
L
I
D
T
F
P
R
37
F
R
D
P
I
L
C
10 9 8 7 6 5 4 3 2 1
Dias
Actividades
38
Algoritmo
Asignamos una etiqueta l(v) a cada vrtice 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 vrtice v (S) ser etiquetado slo despus
de que cada vrtice adyacente hacia v haya sido
etiquetado.
l(v) = max {l(u) + t(v) / (u,v)E(D)}
PADRE(v) es el vrtice w para el que l(v) = l(w) + t(v).
w es un vrtice que precede a v en un camino de mxima
longitud-tiempo S-v en D.
El etiquetado termina cuando el vrtice final T ha sido
etiquetado. Las etiquetas Padre permiten construir un
camino crtico de D
39
Algoritmo (camino crtico)
[Determinar un camino crtico en un digrafo de actividad D con vrtice de inicio S y
vrtice 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 vrtice vS de D. La
variable n(v) ser usada para contar el nmero de vrtices adyacentes hacia v que an
no hayan sido etiquetados.]
Para cada vrtice vS, sea n(v)
e
(v)
P2.- [Inicializamos una cola Q]
Q
40
P3.- [Etiquetar l(S) y actualiza n(v) para todos los vrtices v adyacentes desde
S. Los vrtices v para los que n(v)=0 son aadidos a la cola Q, que contiene a
vrtices que estn preparados para ser etiquetados.]
P3.1.- l(S) 0
P3.2.- Para los vrtices 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 vrtice w de Q, determina PADRE(w), actualiza n(v)
para todos los vrtices v adyacentes desde w y aade a la cola Q aquellos
vrtices v para los cuales n(v)=0.]
P4.1.- Eliminar el vrtice w de Q;
l(w) max {l(u) + t(w) /(u,w) E(D)}
P4.2.- Sea u un vrtice tal que l(w) = l(u) + t(w)
entonces, PADRE(w) u
P4.3- Para cada vrtice 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 crtico en D]
P6.1.- P: T = v
0
P6.2.- k 0
P6.3.- [Sea determinado P: v
k
,v
k-1
,,v
1
,v
0
, donde v
i
= PADRE(v
i-1
)
para 1 i k. Entonces este paso determina si P es ya un camino
crtico . Si an no se ha encontrado un camino crtico, entonces
este paso extiende a P]
Si v
k
=S, entonces retornar P y l(T). FIN
en otro caso, v
k+1
PARENT(v
k
) y
P: v
k+1
,v
k
,,v
1
,v
0
P6.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
1
S
J
B
D
T
E
G
H
A
F
Aplicar el algoritmo al siguiente grafo
- - 2 1 2 1 2 1 2 1 1
( l(v) , Padre(v) )
v =vrtice
etiquetado
Q n(T) n(H) n(G) n(F) n(E) n(D) n(J ) n(B) n(A)
43
( l(v) , Padre(v) ) v =vrtice
etiquetado
Q n(T) n(H) n(G) n(F) n(E) n(D) n(J ) n(B) n(A)
44
(10,G) T
(10, E) G T 0
(8,F) H G 1
(6,J ) E
H
G
2 0
(3,B) F
E
H 2 0 1 0
(5,A) J
F 2 1 1 1
(4, A) D
J
F
2 1 1 2
(1,S) B
D
J
F
2 1 2 0 2 0
(2, S) A
B
D
2 1 2 1 2 0 1
(0,-) S
A
B
2 1 2 1 2 1 2 0 0
2 1 2 1 2 1 2 1 1
( l(v) , Padre(v) ) v =vrtice
etiquetado
Q n(T) n(H) n(G) n(F) n(E) n(D) n(J ) n(B) n(A)
De las etiquetas se determina el cam. crtico P: S,A,J,E,G,T

You might also like