distancia y caminos mínimos - departamento de matemática
TRANSCRIPT
![Page 1: Distancia y Caminos mínimos - Departamento de Matemática](https://reader035.vdocuments.pub/reader035/viewer/2022073101/62e4c2e4b0c43318ad522bf4/html5/thumbnails/1.jpg)
Gregorio Hernández PeñalverUPM
Distancia y Caminos mínimos
Matemática Discreta II
(MI)
![Page 2: Distancia y Caminos mínimos - Departamento de Matemática](https://reader035.vdocuments.pub/reader035/viewer/2022073101/62e4c2e4b0c43318ad522bf4/html5/thumbnails/2.jpg)
d(a,h) = 5
Grafos ponderados
a
c
f
ed
bg h
G( ,w) w : A R+
12
3
4
5
61 2
3
4
56
w(G) = 42
Distancia en un grafo ponderado
d: V V R+
d(u,v)=min{w(C) | C camino de u a v}
Peso de un subgrafo H=(V1, A1)
1Ae
ewHw )()(
![Page 3: Distancia y Caminos mínimos - Departamento de Matemática](https://reader035.vdocuments.pub/reader035/viewer/2022073101/62e4c2e4b0c43318ad522bf4/html5/thumbnails/3.jpg)
3
Parque de bomberos
Colegio
Centro comercial
UBICACIÓN DE SERVICIOS
![Page 4: Distancia y Caminos mínimos - Departamento de Matemática](https://reader035.vdocuments.pub/reader035/viewer/2022073101/62e4c2e4b0c43318ad522bf4/html5/thumbnails/4.jpg)
4
UBICACIÓN DE SERVICIOS
![Page 5: Distancia y Caminos mínimos - Departamento de Matemática](https://reader035.vdocuments.pub/reader035/viewer/2022073101/62e4c2e4b0c43318ad522bf4/html5/thumbnails/5.jpg)
5
UBICACIÓN DE SERVICIOS
Servicios de emergencia (Hospital, bomberos, policía, …)
Objetivo: MINMAXMinimizar el coste máximo (tiempo, distancia, …)
Servicios sociales (Colegio, Centro Comercial, salas de cine …)
Objetivo: MINSUMMinimizar el coste promedio (tiempo, distancia, …)
Elegir un vértice v que minimice max{dist(v,x) / xV(G)}
Elegir un vértice v que minimice )G(Vx
)x,v(dist
![Page 6: Distancia y Caminos mínimos - Departamento de Matemática](https://reader035.vdocuments.pub/reader035/viewer/2022073101/62e4c2e4b0c43318ad522bf4/html5/thumbnails/6.jpg)
6
La excentricidad de un vértice v es e(v) = máx{dist(v,z)/ z V(G)}
El radio de un grafo es rad(G) = mín{e(v)/ v V(G)}
El diámetro de un grafo esdiam(G) = máx{e(v)/ v V(G)}
e(u)=3
e(v)=4
e(w)=5
rad(G)=3
diam(G)=5
UBICACIÓN DE SERVICIOS
![Page 7: Distancia y Caminos mínimos - Departamento de Matemática](https://reader035.vdocuments.pub/reader035/viewer/2022073101/62e4c2e4b0c43318ad522bf4/html5/thumbnails/7.jpg)
7
El centro de un grafo G es el subgrafo inducido por el conjunto de vértices de excentricidad mínima.
El parque de bomberos se debe instalar en un vértice del centro
UBICACIÓN DE SERVICIOS
![Page 8: Distancia y Caminos mínimos - Departamento de Matemática](https://reader035.vdocuments.pub/reader035/viewer/2022073101/62e4c2e4b0c43318ad522bf4/html5/thumbnails/8.jpg)
8
UBICACIÓN DE SERVICIOS
[seq(Exc(Red,i), i=1..25)];[1703, 1435, 1470, 1546, 1989, 1453, 1491, 1780, 1606, 1736, 1542, 1568, 1717, 1554, 1661, 1568, 1571, 1573, 1675, 1944, 1661, 1615, 1736, 1989, 1948]
![Page 9: Distancia y Caminos mínimos - Departamento de Matemática](https://reader035.vdocuments.pub/reader035/viewer/2022073101/62e4c2e4b0c43318ad522bf4/html5/thumbnails/9.jpg)
9
UBICACIÓN DE SERVICIOS
El parque de bomberos se debe instalar en el centro del grafo, C(Red) = {2}
![Page 10: Distancia y Caminos mínimos - Departamento de Matemática](https://reader035.vdocuments.pub/reader035/viewer/2022073101/62e4c2e4b0c43318ad522bf4/html5/thumbnails/10.jpg)
10
La distancia total de un vértice v es
dt(v) =
La mediana de un grafo G es el subgrafo inducido por el conjunto de vértices de distancia total mínima
dist(v, z)zV(G)
dt(u)=25
dt(v)=21
u
vdt(w)=18
w
El colegio se instala en un vértice de la mediana
UBICACIÓN DE SERVICIOS
![Page 11: Distancia y Caminos mínimos - Departamento de Matemática](https://reader035.vdocuments.pub/reader035/viewer/2022073101/62e4c2e4b0c43318ad522bf4/html5/thumbnails/11.jpg)
11
UBICACIÓN DE SERVICIOS
> [seq(DistTotal(Red,i), i=1..25)];[20652, 14488, 14803, 15791, 27929, 13917, 14715, 22863, 23411, 28735, 13679, 15499, 21119, 25805, 28877, 14089, 13906, 14779, 19056, 28067, 16228, 14883, 21996, 26507, 28108]
El colegio se debe instalar en la mediana del grafo, Mediana(Red) = {11}
![Page 12: Distancia y Caminos mínimos - Departamento de Matemática](https://reader035.vdocuments.pub/reader035/viewer/2022073101/62e4c2e4b0c43318ad522bf4/html5/thumbnails/12.jpg)
12
1. Si G es un grafo conexo entonces rad(G) diam(G) 2rad(G)
2. Todo grafo G es el centro de un grafo conexo
¿Cómo se halla el centro de un grafo? ¿Y la mediana?¿Cómo se calculan las distancias en un grafo?¿Cómo se halla el camino mínimo entre dos vértices de un grafo?
Propiedades
G
![Page 13: Distancia y Caminos mínimos - Departamento de Matemática](https://reader035.vdocuments.pub/reader035/viewer/2022073101/62e4c2e4b0c43318ad522bf4/html5/thumbnails/13.jpg)
13
El centro de un árbol T está formado por uno o dos vértices de T
ÁRBOLES (sin pesos)
![Page 14: Distancia y Caminos mínimos - Departamento de Matemática](https://reader035.vdocuments.pub/reader035/viewer/2022073101/62e4c2e4b0c43318ad522bf4/html5/thumbnails/14.jpg)
14
Algoritmo para obtener el centro de un árbol
Entrada: Un árbol TSalida: El centro del árbol C(T)Paso 1. Hacer H=TPaso 2. Si H= K1 ó K2, entonces C(T)=H. Paso 3. En caso contrario borrar todas las hojas de H para obtener un árbol H’. Hacer H’=H y volver al paso 2
![Page 15: Distancia y Caminos mínimos - Departamento de Matemática](https://reader035.vdocuments.pub/reader035/viewer/2022073101/62e4c2e4b0c43318ad522bf4/html5/thumbnails/15.jpg)
15
Teorema
El algoritmo anterior obtiene C(T)
Si T es árbol, V(T)>2, T’= T –{hojas}, entonces C(T)=C(T’)
1. Si u es hoja de T, u’ es su adyacente entonces e(u’) < e(u)
Por tanto, u no está en C(T)
2. Si z no es hoja de T, entonces e(z,T’) = e(z,T) – 1
Por tanto, rad(T’) = rad(T) – 1 y C(T)=C(T’)
¿Y si las aristas de T tienen peso?
![Page 16: Distancia y Caminos mínimos - Departamento de Matemática](https://reader035.vdocuments.pub/reader035/viewer/2022073101/62e4c2e4b0c43318ad522bf4/html5/thumbnails/16.jpg)
16
![Page 17: Distancia y Caminos mínimos - Departamento de Matemática](https://reader035.vdocuments.pub/reader035/viewer/2022073101/62e4c2e4b0c43318ad522bf4/html5/thumbnails/17.jpg)
17
Algoritmos de caminos mínimos
Queremos calcular d(s,t) y el camino correspondiente
Si u se encuentra en un camino C de longitud mínima entre s y t
su
t
CC’
Actualización de etiquetas (edge relaxation)
Árbol de caminos mínimos desde s
Un camino de longitud mínima de s a u es C’
![Page 18: Distancia y Caminos mínimos - Departamento de Matemática](https://reader035.vdocuments.pub/reader035/viewer/2022073101/62e4c2e4b0c43318ad522bf4/html5/thumbnails/18.jpg)
18
12
ÁRBOL DE CAMINOS MÍNIMOS desde s
6
s
a b
c
de
3
3
4
4 55
6
7
12
6
s
a b
c
de
3
3
4
4 55
6
7
Árbol de caminos mínimos desde d
Este árbol NO es el MinimumSpanningTree
![Page 19: Distancia y Caminos mínimos - Departamento de Matemática](https://reader035.vdocuments.pub/reader035/viewer/2022073101/62e4c2e4b0c43318ad522bf4/html5/thumbnails/19.jpg)
19
![Page 20: Distancia y Caminos mínimos - Departamento de Matemática](https://reader035.vdocuments.pub/reader035/viewer/2022073101/62e4c2e4b0c43318ad522bf4/html5/thumbnails/20.jpg)
20
Todos los caminos conducen a Roma (desde 486713 lugares)
![Page 21: Distancia y Caminos mínimos - Departamento de Matemática](https://reader035.vdocuments.pub/reader035/viewer/2022073101/62e4c2e4b0c43318ad522bf4/html5/thumbnails/21.jpg)
21
Algoritmos de caminos mínimos
t(u) longitud del camino mínimo de s a u
Nuevas etiquetas en los vecinos de u
t(x):= min{t(x), t(u) + w(ux)}
st(u)
C’
t(x)
t(z)t(v)
![Page 22: Distancia y Caminos mínimos - Departamento de Matemática](https://reader035.vdocuments.pub/reader035/viewer/2022073101/62e4c2e4b0c43318ad522bf4/html5/thumbnails/22.jpg)
22
Entrada: Un grafo (o digrafo) ponderado, un vértice sV. El peso de la arista uv se indica por w(uv), poniendo w(uv)= si uv no es arista. (Las aristas tienen pesos no negativos)Clave: Mantener el conjunto T de vértices para el que se conoce el camino más corto y ampliar T hasta que T=V. Para ello etiquetamos cada vértice z con t(z) que es la longitud del camino más corto ya encontrado.Inicialización: Sea T={s}, t(s)=d(s,s)=0, t(z)=w(sz) para zs.Iteración: Elegir el vértice v T con etiqueta mínima. Añadir v a T
Analizar cada arista vz con zT y actualizar la etiqueta de z amin{t(z), t(v)+w(vz)}La iteración continua hasta que T=V(G) o hasta que t(z)= paracada vértice zT
Algoritmo de Dijkstra (1959)
![Page 23: Distancia y Caminos mínimos - Departamento de Matemática](https://reader035.vdocuments.pub/reader035/viewer/2022073101/62e4c2e4b0c43318ad522bf4/html5/thumbnails/23.jpg)
23
3
c
f
ed
bg h
12
34
5 61 2
6
56
a
Algoritmo de Dijkstra
a
c
d
b
c
e
b
0 3 1 5 5
a b c d e f g h
3 5 3 5
T arista
c ac
b ab
g
![Page 24: Distancia y Caminos mínimos - Departamento de Matemática](https://reader035.vdocuments.pub/reader035/viewer/2022073101/62e4c2e4b0c43318ad522bf4/html5/thumbnails/24.jpg)
24
Algoritmo de Dijkstra
3
c
f
ed
bg h
12
34
5 61 2
6
56
aa
c
d
gb
c
ee
h
bg
0 3 1 5 5
a b c d e f g h
3 5 3 5
5 3 9 5
5 9 4 5
T arista
c ac
b ab
e ce
g eg
f
![Page 25: Distancia y Caminos mínimos - Departamento de Matemática](https://reader035.vdocuments.pub/reader035/viewer/2022073101/62e4c2e4b0c43318ad522bf4/html5/thumbnails/25.jpg)
25
Algoritmo de Dijkstra
3
c
f
ed
bg h
12
34
5 61 2
6
56
aa
c
d
gb
c
ee
h
b
f
d
g
fh
0 3 1 5 5
a b c d e f g h
3 5 3 5
5 3 9 5
5 9 4 5
5 9 5
8 5
8
T arista
c ac
b ab
e ce
g eg
d ad
h eh
f df
![Page 26: Distancia y Caminos mínimos - Departamento de Matemática](https://reader035.vdocuments.pub/reader035/viewer/2022073101/62e4c2e4b0c43318ad522bf4/html5/thumbnails/26.jpg)
26
Análisis de la complejidad
El nº de iteraciones es n, en cada una se elige una etiqueta mínima, entre n – 1 , entre n – 2, …, coste total O(n2)
Actualizaciones de etiqueta, cada arista da lugar a una,coste total O(q)
O(n2+q)Se puede implementar en O(qlogn)
![Page 27: Distancia y Caminos mínimos - Departamento de Matemática](https://reader035.vdocuments.pub/reader035/viewer/2022073101/62e4c2e4b0c43318ad522bf4/html5/thumbnails/27.jpg)
27
Teorema (Validez del algoritmo)
El algoritmo de Dijkstra calcula d(s,z) para cada vértice z
Debemos probar que la etiqueta definitiva t(z) es d(s,z).Sean x1, x2, ..., xn los vértices de G ordenados por su incorporación al conjunto T. Así x1=s. Vamos a demostrar el resultado por inducción sobre i.
Primer paso) El resultado es cierto para i=1, pues x1=s y sabemos que d(s,s)=0=t(s)
Paso de i a i+1) La hipótesis de inducción es que t(x1)=d(s,x1), ..., t(xi)=d(s,xi). Debemos probar que t(xi+1)=d(s,xi+1)
![Page 28: Distancia y Caminos mínimos - Departamento de Matemática](https://reader035.vdocuments.pub/reader035/viewer/2022073101/62e4c2e4b0c43318ad522bf4/html5/thumbnails/28.jpg)
28
Teorema (Validez del algoritmo)
Llamemos S={x1, x2, ..., xi}, La etiqueta t(xi+1) es la longitud de un camino Q s,..., u, xi+1, donde u es el último vértice en S. Si hay otro camino Q' de s a xi+1 debemos probar que
long(Q) long(Q').Sea z el primer vértice de Q' fuera de S, vz la primera arista y Q'' el resto del camino de z a xi+1
s
Q
Q’
Q’’
u
v
z
xi+1
![Page 29: Distancia y Caminos mínimos - Departamento de Matemática](https://reader035.vdocuments.pub/reader035/viewer/2022073101/62e4c2e4b0c43318ad522bf4/html5/thumbnails/29.jpg)
29
Teorema (Validez del algoritmo)
long(Q')=d(s,v)+w(vz) +long(Q'') t(z)+long(Q'')y como xi+1 se elige como vértice de menor etiqueta será
t(z) t(xi+1) y así long(Q') t(xi+1) + long(Q'') t(xi+1) = long(Q)
por ser todas las aristas de peso no negativo. Por tanto, t(xi+1)=long(Q)=d(s,xi+1)
s
Q
Q’
Q’’
u
v
z
xi+1
![Page 30: Distancia y Caminos mínimos - Departamento de Matemática](https://reader035.vdocuments.pub/reader035/viewer/2022073101/62e4c2e4b0c43318ad522bf4/html5/thumbnails/30.jpg)
30
Digrafo con pesos negativos
Dijkstra: Camino mínimo 0 - 3 peso 2Real: Camino mínimo 0-1-2-3 peso 1
Primera idea: Añadir una constante al peso de cada arco
¡Cambia el camino mínimo!
NO VALE
![Page 31: Distancia y Caminos mínimos - Departamento de Matemática](https://reader035.vdocuments.pub/reader035/viewer/2022073101/62e4c2e4b0c43318ad522bf4/html5/thumbnails/31.jpg)
31
Digrafo con pesos negativos
CICLOS NEGATIVOS
Si hay un ciclo negativo en un recorrido de s hasta t, entonces sepuede rebajar indefinidamente el peso del camino mínimo
Algoritmo de Bellman-Ford• detecta un ciclo negativo, si existe• encuentra el camino mínimo si no existen ciclos negativos
![Page 32: Distancia y Caminos mínimos - Departamento de Matemática](https://reader035.vdocuments.pub/reader035/viewer/2022073101/62e4c2e4b0c43318ad522bf4/html5/thumbnails/32.jpg)
32
Descripción del algoritmoEntrada: Un digrafo ponderado con pesos no negativos en los arcos, un vértice sV. El peso del arco uv se indica por w(uv), poniendo w(uv)= si uv no es arco.Salida: La distancia desde s a cada vértice del grafoClave: Mejorar en cada paso las etiquetas de los vértices, t(u)Inicialización: Sea T={s}, t(s)=d(s,s)=0, t(z)=w(sz) para zs.Iteración: Mientras existan arcos e=xz para los que
t(z)>t(x) + w(e) actualizar la etiqueta de z a min{t(z), t(x)+w(xz)}
Algoritmo de Bellman-Ford
Permite pesos negativos y detecta ciclos negativos
![Page 33: Distancia y Caminos mínimos - Departamento de Matemática](https://reader035.vdocuments.pub/reader035/viewer/2022073101/62e4c2e4b0c43318ad522bf4/html5/thumbnails/33.jpg)
33
s b
ca
3
6-1
4
4
s a b c
sa 0 4
sb 0 4 3 ac 0 4 3 8ba 0 2 3 8bc 0 2 3 8
Alg
oritm
o de
Bel
lman
-For
d
sa 0 2 3 8sb 0 2 3 8ac 0 2 3 6ba 0 2 3 6bc 0 2 3 6
0
![Page 34: Distancia y Caminos mínimos - Departamento de Matemática](https://reader035.vdocuments.pub/reader035/viewer/2022073101/62e4c2e4b0c43318ad522bf4/html5/thumbnails/34.jpg)
34
s b
ca
3
-3-3
4
4
s a b c
sa 0 4
sb 0 4 3 ac 0 4 3 8ba 0 0 3 8cb 0 0 3 8
sa 0 0 3 8sb 0 0 3 8ac 0 0 3 4ba 0 0 3 4cb 0 0 1 4
sa 0 0 1 4sb 0 0 1 4ac 0 0 1 4ba 0 -2 1 4cb 0 -2 1 4
sa 0 -2 1 4sb 0 -2 1 4ac 0 -2 1 2ba 0 -2 1 2cb 0 -2 -1 2
CICLO NEGATIVO
s a b c 0 0 0 1 4
![Page 35: Distancia y Caminos mínimos - Departamento de Matemática](https://reader035.vdocuments.pub/reader035/viewer/2022073101/62e4c2e4b0c43318ad522bf4/html5/thumbnails/35.jpg)
35
Análisis de la complejidad
• Cada arco puede considerarse varias veces.• Se repite el proceso hasta que en una pasada completa ( de todos
los arcos) no se produzca ningún cambio de etiquetas. • Si D no contiene ciclos negativos puede demostrarse que, si el camino mínimo s u contiene k arcos entonces, después de k pasadas se alcanza la etiqueta definitiva para u.
• Complejidad del algoritmo de Ford es O(qn). • Se detecta un ciclo negativo si se produce una mejora en las etiquetas en la pasada número n.
![Page 36: Distancia y Caminos mínimos - Departamento de Matemática](https://reader035.vdocuments.pub/reader035/viewer/2022073101/62e4c2e4b0c43318ad522bf4/html5/thumbnails/36.jpg)
36
Algoritmo de Floyd
• Calcula la distancia entre cada par de vértices• Idea básica: Sucesión de matrices W0, W1, ..., Wn,donde el elemento ij de la matriz Wk nos indique la longitud del camino mínimo i j utilizando como vértices interiores del camino los del conjunto {v1, v2, ..., vk}.
• La matriz W0 es la matriz de pesos del digrafo, w0
ij=w(ij) si existe el arco i j, w0
ii=0 y w0ij= si no existe el arco i j.
• Clave: Construimos la matriz Wk a partir de la matriz Wk – 1 así
}ww,w{minw 1kkj
1kik
1kij
kij
• El elemento ij de la matriz Wn es la longitud de un camino mínimoentre los vértices i y j
![Page 37: Distancia y Caminos mínimos - Departamento de Matemática](https://reader035.vdocuments.pub/reader035/viewer/2022073101/62e4c2e4b0c43318ad522bf4/html5/thumbnails/37.jpg)
37
Análisis de la complejidad
Se deben construir n matrices de tamaño nxn, cada elemento se halla en tiempo constante. La complejidad del algoritmo es O(n3)
Observaciones
1. Si hay un ciclo negativo entonces algún elemento de la diagonal principal se hará negativo en alguna de las matrices Wk
2. Si se desean los caminos mínimos, se construye una sucesión de matrices P0, P1,..., Pn :• El elemento ij de la matriz P0 es j (si wij ) ó – (si wij = )• Si en el elemento ij de la matriz Wk no se produce cambio
entonces pkij = pk-1
ij . Si hay cambio entonces pkij = pk-1
ikAsí el elemento ij de la matriz Pn indica el primer vértice después de vi en el camino de longitud mínima que conecta los vértices vi y vj.Y con esto resulta fácil reconstruir todo el camino.
![Page 38: Distancia y Caminos mínimos - Departamento de Matemática](https://reader035.vdocuments.pub/reader035/viewer/2022073101/62e4c2e4b0c43318ad522bf4/html5/thumbnails/38.jpg)
1 2
4 3
5
7
6
8
Algoritmo de Floyd
0860
701650
W
4143
32321
P
02013860
1370181250
3W
020138601914
137021181250
4W
411143
32321
1P
411143
32221
2P
4111433322221
3P
4111434433232221
4P
16
02013860
701250
2W
02413860
701650
1W
![Page 39: Distancia y Caminos mínimos - Departamento de Matemática](https://reader035.vdocuments.pub/reader035/viewer/2022073101/62e4c2e4b0c43318ad522bf4/html5/thumbnails/39.jpg)
Algoritmo de FloydW W1 W2
W3 W4 W5
…
…… W8
![Page 40: Distancia y Caminos mínimos - Departamento de Matemática](https://reader035.vdocuments.pub/reader035/viewer/2022073101/62e4c2e4b0c43318ad522bf4/html5/thumbnails/40.jpg)
Herramientas informáticas para visualizar algoritmos de caminos mínimos en grafos desarrolladas por estudiantes de la Facultad de Informática
Algoritmo de DijkstraIAGraph http://www.dma.fi.upm.es/personal/gregorio/grafos/web/iagraph/
Los tres algoritmoshttp://www.dma.fi.upm.es/personal/gregorio/grafos/web/caminos_minimos/
Medidas de centralidad y excentricidadhttp://www.dma.fi.upm.es/personal/gregorio/grafos/web/centralidad_excentricidad/index.html