Es un algoritmo de
análisis sobre grafos para
encontrar el camino mínimo en
grafos dirigidos ponderados. El algoritmo encuentra el camino entre todos los
pares de vértices en una única ejecución. El algoritmo de Floyd-Warshall es un
ejemplo de programación dinámica.
·El algoritmo representa una red
de n nodos como una matriz cuadrada de orden n, la llamaremos
matriz C. De esta forma, el valor Cij representa el coste de ir
desde el nodo i al nodo j, inicialmente en caso de no existir un
arco entre ambos, el valor Cij será infinito.
·Definiremos otra matriz D, también
cuadrada de orden n, cuyos elementos van a ser los nodos predecesores en
el camino hacia el nodo origen, es decir, el valor Dij representará
el nodo predecesor a j en el camino mínimo
desde i hasta j. Inicialmente se comienza con caminos de
longitud 1, por lo que Dij = i.
·Las diagonales de ambas matrices representan el
coste y el nodo predecesor para ir de un nodo a si mismo, por lo que no sirven
para nada, estarán bloqueadas.
PASOS
1.Formar las matrices
iniciales C y D.
2.Se toma k=1.
3.Se selecciona la fila y la
columna k de la matriz C y entonces,
para i y j, con i≠k, j≠k ei≠j, hacemos:
APLICACIONES
1.Camino mínimo en grafos
dirigidos(algoritmo de Floyd).
2.Cierre transitivo en grafos dirigidos
(algoritmo de Warshall). Es la formulación original del algoritmo de Warshall.
Elgrafoes un
grafo no ponderado y representado por una matriz booleana de adyacencia.
Entonces la operación de adición es reemplazada por laconjunción lógica(AND)y la
operación menor por ladisyunción
lógica (OR).
3.Encontrar unaexpresión regulardada por unlenguaje regularaceptado por un autómata
finito(algoritmo
de Kleene).
No hay comentarios:
Publicar un comentario