Documentos de Académico
Documentos de Profesional
Documentos de Cultura
de coste óptimo
Programación y estructuras de datos avanzadas
Caminos de coste óptimo. Entorno
Sea G=<N, A> un grafo dirigido, con pesos mayores o iguales que cero en
sus aristas, en el que todos sus nodos son accesibles desde uno concreto
considerado como origen.
10 1
6
5
5 1
2 2
4 9
3 7
4
5
3 6 8
2
Caminos de coste óptimo. Planteamiento
Se trata de determinar las longitudes de los caminos de mínimo coste,
peso o distancia que comienzan en el nodo origen del grafo G y terminan
en cada uno de los demás nodos del grafo.
Deteniendo el algoritmo cuando corresponda, se obtiene el camino de
mínimo coste, peso o distancia que comienza en el origen y termina en
un nodo determinado.
Observación: Puede que haya más de un camino con mínimo coste entre el
nodo origen y otro dado.
Caminos de coste óptimo. Propiedad
Sean n1, n2,…, np los nodos ordenados de paso de un camino de coste mínimo
que comienza en el nodo origen n1 y termina en el nodo np.
Todos los caminos n1, n2,…, ni con 1< i ≤ p son caminos de coste mínimo
entre el origen y los correspondientes nodos finales.
Si hubiera un camino n1, n2,…, ni con 1≤ i ≤ p que no fuera de mínimo coste entre
el origen y el nodo ni, bastaría sustituir este camino por uno de mínimo coste
para obtener un camino de menor coste que n1, n2,…, np, lo que contradice que
n1, n2,…, np es de mínimo coste entre el origen y np.
Caminos de coste óptimo. Primer paso
La arista de menor peso que parte del nodo origen termina en el nodo accesible
por el camino de menor coste posible del grafo porque cualquier otro camino
que parta del origen tiene que recorrer esa arista o las demás, que ya tienen un
coste superior.
10 1 6
5
2
En este ejemplo, el camino de menor coste para acceder al nodo 5 es la arista
que une el origen con el nodo 5
Caminos de coste óptimo. Segundo paso
Una vez localizado el nodo accesible por el camino de menor coste, y teniendo
en cuenta que los nodos de un camino óptimo tiene que ser accesibles por un
camino óptimo, se completa el grafo con las aristas que parten del nodo
seleccionado.
10 1
6
5
1
2
9 7
6
En este ejemplo, se desglosa el nodo 5.
Caminos de coste óptimo. Vuelta a empezar
De todos los caminos posibles, se selecciona el que tiene menos coste,
proporcionando el camino de mínimo coste de acceso al nodo en el que termina.
10 1
6
5
1
2
9 7
Por el mismo motivo que en el primer paso, cualquier otro camino no
considerado previamente tiene coste superior al elegido.
Caminos de coste óptimo. Y a repetir
Como en este caso, del último nodo elegido no parten aristas, no hay que
desglosar el grafo ni seleccionar caminos de menor peso, por lo que se elige, de
nuevo, el camino de menor coste entre los restantes y el nodo en el que termina.
10 1
6
5
1
2
9 7
6
Caminos de coste óptimo. Y a repetir…
El camino que pasa por los nodos 1, 2 y 4 es el de mínimo coste, luego se
selecciona el nodo 4.
10 1
6
5
1
2 2
4 9 7
5
3 6
Caminos de coste óptimo. Y a repetir…
Como ya ha sucedido anteriormente, del nodo 4 no parten aristas, hay que
seleccionar el camino de mínimo coste de los restantes. En este caso hay dos de
coste 15. Puede seleccionarse cualquiera de ellos, pero es seguro que el siguiente
a seleccionar será el otro camino de coste 15 porque las nuevas aristas que se
incorporen aportan un coste adicional, no negativo ni nulo.
10 1
6
5
1
2 2
4 9 7
5
3 6
Caminos de coste óptimo. Y a repetir… hasta
que se acaben los nodos
Del nodo 3, último nodo seleccionado, parte una arista hasta el nodo 4, pero no se
tiene en consideración porque ya se conoce el camino de coste óptimo que
termina en el nodo 4. Finalmente, queda el camino óptimo para el último nodo.
10 1
6
5
1
2 2
4 9 7
5
3 6
Caminos de coste óptimo. Algoritmo
1. Se expande el nodo origen y se selecciona el nodo cuya arista tenga menor peso.
2. Se expande el nodo seleccionado. Y ya no se vuelve a considerar como candidato
durante el proceso.
3. Si hay varios caminos que terminan en el mismo nodo, se escoge el de menor
peso y se ignoran los demás.
4. Se selecciona el nodo en el que termina el camino de menor peso de los
considerados.
5. Se vuelven a repetir los pasos 3 y 4 hasta que se seleccionen todos los nodos.
El algoritmo termina porque en cada paso se elimina un nodo y hay una cantidad
finita de nodos.
Caminos de coste óptimo. Algoritmo voraz
Es evidente que el algoritmo descrito es voraz porque en cada paso se
elige el candidato más próximo a la solución, en este caso el camino de
menor peso entre los que se puede elegir.
La solución que se obtiene es óptima porque los caminos que se van a
generar en pasos sucesivos van a ser de mayor coste que el elegido y en
cada paso se conserva la condición de que los caminos óptimos están
compuestos por subcaminos óptimos desde el origen.
Este algoritmo se conoce como Algoritmo de Dijkstra.
Algoritmo de Dijkstra. Modelización 1
Generalmente, los grafos de describen mediante una matriz de adyacencia, M,
en donde si el elemento mij es 1 representa que el nodo i es accesible desde el
nodo j, y si es 0, no están unidos. En el caso de nodos con peso, se puede
sustituir 0 por ∞ y 1 por el valor del peso de la arista.
La matriz de adyacencia del grafo considerado como ejemplo es la siguiente.
Puede comprobarse que D(1,5)=6.
D 1 2 3 4 5 6 7
1 ∞ 10 ∞ ∞ 6 ∞ ∞
2 ∞ ∞ 5 2 ∞ ∞ ∞
3 ∞ ∞ ∞ 4 ∞ ∞ ∞
4 5 ∞ ∞ ∞ ∞ ∞ ∞
5 ∞ ∞ ∞ ∞ ∞ 9 1
6 ∞ ∞ 2 3 ∞ ∞ 8
7 ∞ ∞ ∞ ∞ ∞ ∞ ∞
Algoritmo de Dijkstra. Modelización 2