Académique Documents
Professionnel Documents
Culture Documents
Facultad de Ingeniera
Escuela de Ingeniera en Computacin
Ciclo 02 2015 / Grupo: 03T
Asignatura: Programacin IV
Introduccin
Existen numerosos problemas que se pueden formular en trminos de grafos. Ejemplo de ello es la
planificacin de las tareas que completan un proyecto, encontrar las rutas de menor longitud entre
puntos geogrficos, calcular el camino ms rpido en un transporte, determinar el flujo mximo que
puede llegar desde una fuente a, por ejemplo, una urbanizacin, entre otros.
La resolucin de estos problemas requiere examinar todos los nodos o todas las aristas del grafo
que representa al problema, sin embargo, existen ocasiones en que la estructura del problema es tal
que solo se necesitan visitar algunos nodos o bien algunas aristas.
Los algoritmos imponen implcitamente un orden en estos recorridos: visitar el nodo ms prximo
o las aristas ms cortas, y as sucesivamente, otros algoritmos no requieren ningn orden
concreto en el recorrido.
Camino ms Corto
Cuando se trabaja con grafos dirigidos, etiquetados o ponderados con factores de peso no
negativos, es frecuente buscar el camino ms corto entre dos vrtices dados; es decir, el camino que
nos permite llegar desde un vrtice origen a un vrtice destino recorriendo la menor distancia o con
el menor costo.
Pgina 1 de 10
Los algoritmos ms usados para este fin son: Dijkstra, Floyd y Warshall.
Los tres algoritmos utilizan una matriz de adyacencia ponderada o etiquetada: que es la misma
matriz de adyacencia utilizada para representar grafos, pero con la diferencia que en lugar de
colocar un nmero 1 cuando dos vrtices son adyacentes, se coloca el peso o ponderacin
asignado a la arista que los une.
Con frecuencia en la matriz de adyacencia etiquetada suele utilizarse la siguiente notacin:
Suponiendo que M [i, j] representa la matriz de adyacencia, tenemos:
M [i, j] = 0 ; si i = j
M [i, j] = 1000 si no existe un camino de i a j; donde j j.
M [i, i] = costo de ir del vrtice i al vrtice j
Otro nombre con el cual suele llamarse a una matriz de adyacencia etiquetada es: matriz de
distancia o matriz de costos.
El problema de buscar un camino ms corto entre dos nodos dados se puede resolver mediante un
algoritmo voraz conocido como Algoritmo de Dijkstra.
Qu es un Algoritmo Voraz?
Un algoritmo voraz es aquel que, para resolver un determinado problema, sigue una heurstica
consistente en elegir la opcin ptima en cada paso local con la esperanza de llegar a una solucin
general ptima.
Pgina 2 de 10
respectivamente, se tomar como nodo de partida el 4, ya que el peso del camino a arista
es menor.
Cada camino mnimo corresponde a la suma de los pesos de las aristas que forman el
camino para ir del nodo principal al resto de nodos, pasando nicamente por caminos
especiales, es decir, nodos marcados.
Pgina 4 de 10
1
18
10
6
3
2
20
8
2
6
5
10
7
Figura 1 - Grafo Dirigido
Pasos:
1. Se marca el vrtice origen y calcular el costo de todos los caminos especiales, esto es
marcamos con un sombreado el vrtice 1 (ver figura 2) y a partir de l vemos que tenemos
dos caminos especiales: el que va del vrtice 1 al 2 y el que va del 1 al 3, tomamos el peso
de la arista de ambos caminos y lo ingresamos a nuestro vector D y el resto de posiciones
de D quedan vacas o colocamos 0 para indicar que no hay caminos especiales desde el 1
al resto de los vrtices.
Observe a figura 3 (representacin de los caminos especiales) como se marcan los primeros
caminos y que corresponden a los caminos mnimos inicialmente encontrados desde el
vrtice 1 al vrtice 2 y desde el vrtice 1 al vrtice 3, cuyos pesos son 10 y 18
respectivamente.
Como nuestro nodo inicial es 1 y en el vector de distancias corresponde a la posicin 0
entonces siempre esta posicin que corresponde al nodo de partida se coloca 0 y sta
nunca cambia (ver figura 4):
Pgina 5 de 10
2. Ahora seleccionamos el vrtice no marcado (es decir no sombreado) con costo de camino
especial mnimo, para el caso corresponde al vrtice 2, el cual es el vrtice cuyo camino
para llegar hacia l es menor, si recuerda anteriormente calculamos dos caminos especiales
del vrtice 1 2 que tena un peso de 10 y el del vrtice 1-3 que tena un peso de 18, como
el menor de estos pesos corresponde al camino especial que va del vrtice 1-2 se toma,
entonces se toma el vrtice 2 para tomarlo como punto de partida y calcular los siguientes
caminos especiales de peso mnimo.
As sombreamos el vrtice 2 (ver figura 5) y vemos que este vrtice tiene dos caminos
especiales: el que va del vrtice 2 3 con un peso de 6 y el que va del vrtice 2 -5 con un
peso de 3, ahora bien aqu sucede algo especial y es en donde comienza a distinguirse con
mayor exactitud la accin de Dijkstra, anteriormente encontramos que el camino del vrtice 1
3 era por la arista que tiene un peso 18, pero esta vez encontramos que es ms eficiente ir
desde el vrtice 1 3 por el camino que va del vrtice 1 2 3 en donde el peso de dicho
camino es igual a sumar 10 (del camino del vrtice 1 - 2) + 6 (del camino del vrtice 2 - 3),
esta suma es igual a 16 por lo tanto 16 es menor que 18, lo que hacemos es descartar del
vector D en la posicin 2 el valor de 18 (que anteriormente se tena) y se coloca el nuevo
valor 16 (ver figura 7) y se agrega a la posicin 4 el peso de 13 que corresponde al otro
camino especial calculado desde el vrtice 1 5 el cual sigue el recorrido: 1 2 - 5. Y desde
luego que nuestro grfico de caminos especiales cambia (ver figura 6).
Es importante hasta este punto aclarar que no es importante para Dijkstra el nmero de
aristas por las cuales debe pasar para encontrar un camino mnimo, a Dijkstra solo le
interesa el peso de la arista no as el nmero de aristas.
Pgina 6 de 10
Para el caso de nuestro vector, observe que siempre la posicin 0 es 0 (ver figura 10), la posicin 1
es 10 porque hasta el momento no hemos encontrado un camino ms pequeo que nos lleve del
vrtice 1 - 2 por lo tanto dicho valor se mantiene (ver figura 10), en el caso de la posicin 2 igual se
mantiene porque hasta el momento no hemos encontrado otro camino ms pequeo que nos lleve
del vrtice 1 3 (ver figura 10), pero para el caso de la posicin 3 ya tenemos un camino que nos
lleve del vrtice 1 4, el cual hasta el momento es el mnimo (ver figura 10) y note que corresponde
a la suma de los pesos de todas las aristas que deben recorrerse, para el caso el recorrido de este
camino es 1- 2 5 4 que corresponde a la suma de los pesos 10+3+8 = 21 (ver figura 9).
La posicin 4 del vector de distancias se mantiene igual (ver figura 10) y la posicin 6 tiene un valor
de 23 porque es el camino mnimo encontrado hasta el momento para ir del vrtice 1 7 el cual
Pgina 7 de 10
Pgina 8 de 10
Bien finalmente al examinar el resultado de la grfica de los caminos especiales, vemos que
exactamente corresponde a un subgrafo, en el cual nicamente se tienen los caminos mnimos que
nos llevan del vrtice 1 al resto de vrtices:
1
10
6
3
4
6
5
As:
Pgina 10 de 10