Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Algoritmo de Marshall y Camino Mínimo

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 11

UNIVERSIDAD NACIONAL DEL SANTA

FACULTAD DE INGENIERA
E.A.P. DE INGENIERA DE SISTEMAS E INFORMTICA

TRABAJO FINAL II UNIDAD


ALGORITMO DE WARSHALL Y
ALGORITMO DEL CAMINO MNIMO

ALUMNOS:

DAZ FLORES MARTN


SALVADOR ZEVALLOS MARCO
PORTELLA CARLOS SANTIAGO
MALDONADO DEL RO PAULO
VILLAR MARN CARLOS
SALDAA VSQUEZ GNESIS

DOCENTE:

ING. CASELLI GISMONDI HUGO.

ASIGNATURA:

ESTRUCTURA DE DATOS

CICLO:

III
2015

[Ttulo del documento]

ALGORITMO DE WARSHALL
SOBRE EL ALGORITMO DE WARSHALL
Este algoritmo calcula la matriz de caminos P (tambin llamado
cierre transitivo) de un grafo G de n vrtices, representado por su
matriz de adyacencia A. la estrategia que sigue el algoritmo consiste
en definir, a nivel lgico, una secuencia de matrices n-cuadradas P0 ,
P1 , P2,.Pn; los elementos de cada una de las matrices P k [i,j] tienen
el valor 0 si no hay camino y 1 si existe un camino del vrtice i y al j.
la matriz P0 es la matriz de adyacencia.
Los elementos Pij de P1 son igual a 1 si lo son los de la matriz P 0, o
bien se puede formar un camino desde el vrtice V i a Vj con la ayuda
del vrtice 1.
En definitiva, P1[ i, j ] = 1, si lo es P0 [ i, j ], o bien, hay un camino:
V1

Vi

Vj

La matriz P2 se forma a partir de P1, aadiendo el vrtice 2 para poder


formar camino entre dos vrtices todava no conectados.
La diferencia entre dos matrices consecutivas Pk y Pk-1 viene dada por
la incorporacin del vrtice de orden k, para estudiar si es posible
formara camino del vrtice i y al j con la ayuda del vrtice k. La
descripcin
deexiste
cadaun
matriz
es la
siguiente:
1 si
arco del
vrtice
i al j.
0 en otro caso.

P0[i,j] =

1 si existe un camino simple de Vi a Vj que no para por ningn vrtice, a no ser por el vrtice 1.
0 en otro
caso.
P1[i,j]
=

[Ttulo del documento]

1 Si existe un camino simple de Vi a Vj que no pasa por otro vrtice, a no ser por los que estn comprendid
0 en otro caso.

P2[i,j] =

1 Si existe un camino simple de Vi a Vj que no pasa por otro vrtice, a no ser por los que estn comprendid
0 en otro caso.

P3[i,j] =

En cada paso se incorpora un nuevo vrtice, el que coincide con el


ndice de la matriz P, a los anteriores para poder formar camino.

1 Si existe un camino simple de Vi a Vj que no pasa por otro vrtice, a no ser por los que estn comprendid
0 en otro caso.

Pk[i,j] =

1 Si existe un camino simple de Vi a Vj que no pasa por otro vrtice, a no ser por los que estn comprendid
0 en otro caso.

Pn[i,j] =

Segn estas definiciones, P0 es la matriz de adyacencia del grafo de n


vrtices, la matriz Pn es la matriz de caminos.
El algoritmo de Warshall encuentra una relacin recurrente entre los
elementos de la matriz Pk y los elementos de la matriz P k-1. Un
elemento Pk[i,j] = 1 si ocurre uno de estos dos casos:
1 Existe un camino simple de Vi a Vj del cual pueden formar parte
los vrtices del ndice 1 al k-1 (Vk a Vk-1); por consiguiente, el
elemento Pk-1 [i,j] = 1.
2 Existe un camino simple de Vi a Vk y otro camino simple de Vk a
Vj de los cuales pueden formar parte los vrtices del ndice 1 al
k-1; por consiguiente, esto equivale:
(Pk-1 [i,k] = 1) y (Pk-1 [k,j] = 1)
Vi -> -> Vj
Vi -> . -> Vk -> -> Vj
1

(2)

[Ttulo del documento]

Camino de Vi a Vj

Vj

Posibilidad de
camino de Vi a

Vi

Vj

Camino de Vi - Vk Vj

Vj

Vk
Vi

En definitiva, Warshall encuentra una relacin recurrente entre la


matriz Pk-1 y Pk que permite, a partir de, la matriz de adyacencia P 0,
encontrar Pn, matriz de caminos. La relacin para encontrar los
elementos de Pk puede expresarse como una operacin lgica:
Pk [i,j] = Pk-1[i,j] V (Pk-1[i,k] ^ Pk-1[k,j])
El algoritmo de Warshall es un ejemplo de algoritmo booleano. A
partir de una tabla inicial compuesta de ceros (0)
correspondencia

inicial

en

el

grafo)

unos

(1)

(no hay
(hay

una

correspondencia, llamase flecha, entre nodos), obtiene una nueva


matriz denominada Matriz de Clausura Transitiva en la que se
muestran

todas

las

posibles

uniones

entre

nodos,

directa

indirectamente. Es decir, si de A a B no hay una flecha, es


posible que si haya de A a C y luego de C a B. Luego, este
resultado se ver volcado en la matriz final.

[Ttulo del documento]

IMPLEMENTANDO EL ALGORITMO DE WARSHALL


PSEUDOCDIGO

CDIGO JAVA

[Ttulo del documento]

EJEMPLO DEL ALGORITMO DEE WARSHALL

EJECUCIN USANDO EL JFRAME DE JAVA - NETBEANS

[Ttulo del documento]

Algoritmo de Floyd
El algoritmo de Floyd es un algoritmo de programacin dinmica, que
encuentra el camino mnimo entre todos los pares de vrtices en una nica
ejecucin. Es decir este

algoritmo va explorando y comparando todos los

posibles caminos a travs del grafo entre cada par de vrtices; cuando se
obtiene el camino ms corto desde un nodo i a un nodo j cualquiera, el
algoritmo se detiene.
Por tanto el algoritmo es una especializacin de la bsqueda de costo
uniforme, y como tal, no funciona en grafos con aristas de costo negativo (al
elegir siempre el nodo con distancia menor, pueden quedar excluidos de la
bsqueda, nodos que en prximas iteraciones bajaran el costo general del
camino al pasar por una arista con costo negativo).
Comportamiento con ciclos negativos
Para que haya coherencia numrica, Floyd

supone que no hay ciclos

negativos (de hecho, entre cualquier pareja de vrtices que forme parte de un
ciclo negativo, el camino mnimo no est bien definido porque el camino puede
ser infinitamente pequeo). No obstante, si hay ciclos negativos, Floyd puede
ser usado para detectarlos. Si ejecutamos el algoritmo una vez ms, algunos
caminos pueden decrementarse pero no garantiza que, entre todos los vrtices,
caminos entre los cuales puedan ser infinitamente pequeos, el camino se
reduzca. Si los nmeros de la diagonal de la matriz de caminos son negativos,
es condicin necesaria y suficiente para que este vrtice pertenezca a un ciclo
negativo.
Para su recorrido es necesario de:

Entrada: Grafo dirigido/no dirigido, con peso asociado a las aristas.

Salida:
Matriz Dn que entrega el menor camino para ir de un nodo i a un
nodo j del grafo.
Matriz Sn que entrega el nodo intermedio para llegar desde un nodo i
a un nodo j del grafo.

Veamos un ejemplo de cmo trabaja el algoritmo:

[Ttulo del documento]

8
2

4
4

2
1

Matriz de Peso

Matriz Nodos Intermedios

Como vemos ac, el

D0 1 2 3 algoritmo
4
S0
1 2 3 4
no permite
que
8
3 4
1 existan
1
1 nodos 2que
2
3 4
2
4

1
9

apunten a s mismos, ya
1
3
que
las 2 diagonales
quedan inhabilitadas.
3 1 2

4 1 2

4
4

La matriz D0 se llena con los pesos de cada camino que representa la matriz[i][j]
del ejemplo, como vemos, si no existe conexin entre los nodos, se completa
con el smbolo

lo que reprenda que no existe la conexin entre los nodos,

por lo tanto el peso que trae pasar por ah no se puede tasar.


La matriz S0 se llena con los nodos intermedios entre un par de nodos, en este
caso suponemos que no existe otro camino entre los nodos que ir directamente
hacia ellos.
Luego de completar las primeras matrices, comenzamos fijando una fila y una
columna pivote, para ver todos los caminos que existen entre el nodo k y todos
los dems, cualquier cambio que ocurra en la matriz de peso, incurrir en un
cambio en la matriz de nodos intermedios, asumiendo que localmente el nodo k
es el de menor peso en esa iteracin.
Fijamos la fila 1, entonces k=1, y comenzamos a revisar el algoritmo
preguntando si MatrizdePeso[i][k]+MatrizdePeso[k][j] < MatrizdePeso[i][j], si es
menor se cambia si no se mantiene. As obtenemos D1 y S1.

[Ttulo del documento]

Como se puede ver en las posiciones 3,2 y 3,5 de la matriz de peso, hubo
cambios y como habamos fijado k =1, entonces en las mismas posiciones se
generarn cambios en la matriz de nodos intermedios. Ahora fijamos k =2 y
seguimos con el procedimiento hasta llegar a k =4, que es el nmero total de
nodos en el grafo.

Como vemos en las posiciones 1,3 y 4,3 de la matriz de


peso, hubo cambios y como habamos fijado k =2, entonces
en las mismas posiciones se generarn cambios en la
matriz de nodos intermedios. Ahora fijamos k =3 y
seguimos con el procedimiento hasta llegar a k =4, que es
el nmero total de nodos en el grafo.

Como vemos en las posiciones 2,1 ; 2,4 y 4,1 de la matriz


de peso, hubo cambios y como habamos fijado k =3,
entonces en las mismas posiciones se generarn cambios
en la matriz de nodos intermedios. Ahora fijamos k =4 y
seguimos con el procedimiento hasta llegar a k =4, que es
el nmero total de nodos en el grafo.

[Ttulo del documento]

Como vemos en las posiciones 1,2; 1,3 y 3,2 de la matriz de


peso, hubo cambios y como habamos fijado k =4, entonces
en las mismas posiciones se generarn cambios en la
matriz de nodos intermedios, y como ya completamos las 4
iteraciones, estas son las matrices con los pesos ptimos y
sus respectivos caminos.
CODIFICACIN EN JAVA

[Ttulo del documento]

REFERENCIA BIBLIOGRFICAS

Joyanes, L. y Zahanero, I. (2008). Estructura de datos en java.

Espaa: MCGRAWHILL/INTERAMERICANA S.A.U.


Universidad de Mlaga. Tcnicas de diseo de algoritmos. Libro,
[en lnea]. Consultado: [19, de julio, 2015]. Disponible en:
https://es.scribd.com/doc/3325244/39/EL-ALGORITMO-DEWARSHALL

También podría gustarte