CI2613

Anuncio
CI2613: Algoritmos y Estructuras III
Caminos de costo mı́nimo en grafos
Blai Bonet
Universidad Simón Bolı́var, Caracas, Venezuela
Enero-Marzo 2015
c 2014 Blai Bonet
Caminos de costo mı́nimo
CI2613
Variantes del problema
En las próximas clases nos enfocamos en calcular caminos de costo
mı́nimo en grafos dirigidos G = (V, E) con pesos w : E → R
Dado un camino p = (v0 , v1 , . . . , vk ), el peso o costo de p es la suma
de los costos de las aristas en p:
Pk
w(p) =
i=1 w(vi−1 , vi )
Existen diferentes variantes del problema. Las más importantes son:
– Camino más corto entre un par de vértices dados
– Caminos más cortos desde un mismo vértice fuente
La distancia o peso δ(u, v) entre dos vértices u y v es el menor peso
de los caminos de u a v:
δ(u, v) = min {w(p) : p es un camino de u a v}
– Caminos más cortos hacia un mismo vértice destino
– Caminos más cortos entre todos los pares de vértices
(donde min ∅ = ∞)
Si p = u ; v es un camino de u a v tal que w(p) = δ(u, v), p es un
camino más corto o un camino de costo mı́nimo
c 2014 Blai Bonet
CI2613
c 2014 Blai Bonet
CI2613
Estructura óptima de los caminos más cortos
Aristas y ciclos de costo negativo
Ya que el costo de un camino es la suma de los costos de sus aristas,
los caminos óptimos están compuestos por subcaminos óptimos
En presencia de costos negativos es posible que no exista un camino
más corto de u a v
Lema (Principio de optimalidad de caminos más cortos)
Sea p = (v0 , . . . , vi , . . . , vj , . . . , vk ) un camino de v0 a vk con vi = vj ;
i.e. p contiene el ciclo c = (vi , . . . , vj = vi )
Sea G = (V, E) un digrafo con pesos w : E → R y p = (v0 , . . . , vk )
un camino más corto de v0 a vk . Entonces, el camino pij =(vi , . . . , vj ),
para 1 ≤ i ≤ j ≤ k, es un camino más corto de vi a vj
Si w(c) < 0, podemos formar caminos:
p1 = p
Prueba: suponga que pij no es óptimo. Entonces existe un camino q de vi
a vj con w(q) < w(pij )
p2 = (v0 , . . . , c, c, . . . , vk )
Considere el camino p0 = (v0 , . . . , vi−1 , q, vj+1 , . . . , vk ) de v0 a vk
···
Su costo es:
p3 = (v0 , . . . , c, c, c, . . . , vk )
con w(p1 ) > w(p2 ) > w(p3 ) > · · ·
w(p0 ) = w(p) − w(pij ) + w(q) < w(p)
Definimos δ(v0 , vk ) = −∞ y no existe camino más corto de v0 a vk
Por lo tanto, p no es óptimo contradiciendo la suposición
c 2014 Blai Bonet
CI2613
Aristas y ciclos de costo negativo: Ejemplo
c 2014 Blai Bonet
CI2613
Longitud de caminos de costo mı́nimo
Sea p = (v0 , . . . , vk ) un camino de v0 a vk con w(p) = δ(v0 , vk )
a
3
−4
0
4
c
5
6
5
8
2
3
−∞
2
– Análogamente, p no puede contener un ciclo c de costo positivo; ya
que removiendo c obtendrı́amos un camino de v0 a vk de costo
menor a δ(v0 , vk )
∞
−∞
−8
3
j
−3
e
∞
g
d
11
i
h
−1
3
s
– p no contiene un ciclo de costo negativo
b
f
7
– La única posibilidad para la existencia de un ciclo c en p es que
w(c) = 0. Dicho ciclo se puede remover para obtener un camino
óptimo de v0 a vk de menor longitud
∞
−∞
−6
Concluimos que si δ(u, v) ∈
/ {−∞, ∞}, entonces existe un camino
óptimo de u a v de longitud a los sumo |V | − 1
c 2014 Blai Bonet
CI2613
c 2014 Blai Bonet
CI2613
Dos propiedades sobre costos de caminos óptimos
Representación de caminos óptimos
Como en BFS, mantendremos un grafo de predecesores definido por
“apuntadores padres” π[v] asociados a cada vértice v
Lema (Desigualdad triangular)
Si (u, v) ∈ E es una arista, δ(s, v) ≤ δ(s, u) + w(u, v)
El grafo de predecesores relativo a la fuente s es Gπ = (Vπ , Eπ ):
Prueba: si no existe camino s ; u, la desigualdad se cumple. En otro caso,
considere un camino óptimo q de forma s ; u, y p = q → v. Tenemos,
δ(s, v) ≤ w(p) = w(q) + w(u, v) = δ(s, u) + w(u, v)
Vπ = {v ∈ V : π[v] 6= null} ∪ {s}
Eπ = {(π[v], v) ∈ E : v ∈ Vπ \ {s}}
Lema (Camino óptimo)
Gπ termina en un árbol de caminos óptimos G0 = (V 0 , E 0 ) para s:
Si s ; u → v es un camino óptimo, δ(s, v) = δ(s, u) + w(u, v)
– G0 es un subgrafo de G; i.e. V 0 ⊆ V y E 0 ⊆ E
Prueba: por principio de optimalidad, s ; u es camino óptimo. Entonces,
δ(s, v) = w(s ; u → v) = w(s ; u) + w(u, v) = δ(s, u) + w(u, v)
– G0 es un árbol con raı́z s
c 2014 Blai Bonet
– V 0 es el conjunto de vértices alcanzables desde s
– el único camino de s a v en G0 es un camino óptimo en G
CI2613
c 2014 Blai Bonet
Representación de caminos óptimos: Ejemplo
t
6
3
3
s
0
x
t
9
3
s
1
0
3
2
5
6
t
6
3
3
0
3
2
11
5
z
y
x
t
9
3
Los algoritmos para el cálculo de caminos más cortos desde un vértice
fuente pueden entenderse como que realizan dos operaciones:
7
s
1
0
3
z
x
6
9
–
Inicializar-vertice-fuente(G,s):
–
Relajar(u,v,w):
ejecutada una sola vez
ejecutada varias veces para distintas aristas (u, v)
4
2
1
3
7
5
11
6
3
4
2
2
2
7
5
5
y
c 2014 Blai Bonet
1
5
y
s
9
4
2
7
5
Operaciones básicas
x
6
3
4
2
CI2613
6
11
5
z
y
6
11
z
CI2613
c 2014 Blai Bonet
CI2613
Inicializar-vertice-fuente(G,s)
Relajar(u,v,w)
Se ejecuta una sola vez para un grafo G = (V, E), antes de cualquier
operación Relajar(u,v,w)
1
2
3
4
5
Se ejecuta múltiples veces para aristas (u, v) con peso w = w(u, v)
1
Inicializar-vertice-fuente(G,s):
foreach Vertice v
d[v] = ∞
π[v] = null
d[s] = 0
2
3
4
Relajar(u,v,w):
if d[v] > d[u] + w(u,v)
d[v] = d[u] + w(u,v)
π[v] = u
Esta operación por si sola toma tiempo Θ(1)
Esta operación por si sola toma tiempo Θ(V )
c 2014 Blai Bonet
CI2613
c 2014 Blai Bonet
Invariantes
CI2613
Invariante 1
Lema (Cotas superiores)
Para todo vértice v, d[v] ≥ δ(s, v). Si d[v] = δ(s, v), el valor d[v] no
vuelve a cambiar
A continuación establecemos 5 invariantes (propiedades) que se
cumplen para cualquier secuencia σ de operaciones básicas tal que:
Prueba: por inducción en el número n de operaciones en σ
• Para n = 1: la operación es de inicialización. Después de la operación,
d[v] = ∞ ≥ δ(s, v) para v 6= s y d[s] = 0 = δ(s, s)
– la primera operación en σ es de inicialización
– todas las operaciones en σ excepto la primera son de relajación
c 2014 Blai Bonet
CI2613
c 2014 Blai Bonet
CI2613
Invariante 1
Invariante 2
Lema (Cotas superiores)
Para todo vértice v, d[v] ≥ δ(s, v). Si d[v] = δ(s, v), el valor d[v] no
vuelve a cambiar
Lema (Inexistencia de caminos)
Prueba: por inducción en el número n de operaciones en σ
Si no existe un camino de s a v, d[v] = δ(s, v) = ∞
• Para n > 1: descomponemos σ = (σ 0 , op = Relajar(u,v,w)) con
|σ 0 | = n − 1. Por HI, la propiedad se cumple después de ejecutar σ 0
Prueba:
Si op no cambia el valor de d[v], la propiedad se cumple. Si lo cambia,
Si no existe camino de s a v, δ(s, v) = ∞. Por Invariante 1, d[v] ≥ δ(s, v).
Por lo tanto, d[v] = ∞
d[v] = d[u] + w(u, v) ≥ δ(s, u) + w(u, v) ≥ δ(s, v)
Por HI y la desigualdad triangular sobre los valores δ(s, ·)
Como Relajar(u,v,w) sólo puede decrementar d[v], una vez d[v] = δ(s, v)
el valor no vuelve a cambiar
c 2014 Blai Bonet
CI2613
c 2014 Blai Bonet
Invariante 3
CI2613
Invariante 4
Lema (Convergencia)
Lema (Relajación monótona)
Si s ; u → v es un camino óptimo de s a u, y d[u] = δ(s, u) antes
de ejecutar Relajar(u,v,w), entonces d[v] = δ(s, v) después de la
ejecución
Si p = (v0 , . . . , vk ) es un camino óptimo de s = v0 a vk , y σ contiene
(en orden) relajaciones de las aristas (v0 , v1 ), . . . , (vk−1 , vk ), entonces
después de ejecutar σ, d[vi ] = δ(s, vi ) para todo i = 0, 1, . . . , k.
Prueba: por la propiedad de camino óptimo, δ(s, v) = δ(s, u) + w(u, v)
(Las relajaciones no tienen que ser consecutivas: entre cada par de
ellas puede haber cualesquiera otras relajaciones)
Por Invariante 1, d[v] ≥ δ(s, v) antes de la ejecución.
Prueba: por inducción en i se muestra d[vi ] = δ(s, vi )
Si d[v] > δ(s, v) antes de la ejecución,
• Para i = 0: d[v0 ] = d[s] = 0 = δ(s, s)
d[v] > δ(s, v) = δ(s, u) + w(u, v) = d[u] + w(u, v)
• Para i > 0: por HI d[vi−1 ] = δ(s, vi−1 ) antes de Relajar(vi−1 , vi , w)
Luego, Relajar(u,v,w) cambia d[v] = d[u] + w(u, v) = δ(s, v)
Como el camino s ; vi−1 → vi es óptimo, el Invariante 3 implica que
después de Relajar(vi−1 , vi , w) se cumple d[vi ] = δ(s, vi )
Si d[v] = δ(s, v) antes de la ejecución, el valor d[v] no cambia
c 2014 Blai Bonet
CI2613
c 2014 Blai Bonet
CI2613
Invariante 5
Lema (Árbol de caminos óptimos)
Asuma que d[v] = δ(s, v) para todo vértice v, y que no existen ciclos
de costo negativo alcanzables desde s. Entonces, el grafo de
predecesores Gπ = (Vπ , Eπ ) es un árbol de caminos óptimos para s
Prueba: ver el libro de texto
c 2014 Blai Bonet
CI2613
Descargar