33
FACULTAD DE INGENIERIA CAPITULO 16: GRAFOS, ALGORITMOS FUNDAMENTALES Realizado por : Christian Paul Salinas 4to Ciclo – Ingeniería en Sistemas

Programación 3: Ordenación topológica, matriz de caminos y algoritmo Warshall

Embed Size (px)

Citation preview

Page 1: Programación 3: Ordenación topológica, matriz de caminos y algoritmo Warshall

FACULTAD DE INGENIERIA

CAPITULO 16: GRAFOS, ALGORITMOS FUNDAMENTALES

Realizado por : Christian Paul Salinas4to Ciclo – Ingeniería en Sistemas

Page 2: Programación 3: Ordenación topológica, matriz de caminos y algoritmo Warshall

CONTENIDO Introducción Ordenación Topológica

Relación de Precedencia Grafo Dirigido Aciclico Complejidad Pasos Implementación del algoritmo de ordenación

topológica(Ejemplo en Java) Matriz de caminos, Algoritmo de Warshall

Matriz Cierre Transitivo Complejidad Ejemplo Paso a paso, e Implementación del algoritmo en

Java

Page 3: Programación 3: Ordenación topológica, matriz de caminos y algoritmo Warshall

INTRODUCCIÓN

Los grafos nos permiten modelar numerosos problemas, por ejemplo, encontrar rutas de menor longitud entre dos puntos, calcular caminos mas rápidos, planificar tareas que completan un proyecto, entre otras.

Analizar cada arista y nodo del grafo que representa el problema,

Page 4: Programación 3: Ordenación topológica, matriz de caminos y algoritmo Warshall

ORDENACIÓN TOPOLÓGICA Modela las relaciones que existen entre diferentes

tareas, para poder terminar un proyecto.

Relaciones de Precedencia Se presentan mediante un grafo dirigido, donde los

vértices son tareas y existe aristas de un vértice a otro, donde es necesario que se completa la arista inicial para que comience la siguiente

Page 5: Programación 3: Ordenación topológica, matriz de caminos y algoritmo Warshall

RELACIONES DE PRECEDENCIA Una vez se dispone del grafo interesa

obtener una planificación de las tareas que constituyen el proyecto.

En definitiva, se debe encontrar la ordenación topológica de los vértices que forman el grafo, siendo el final un grafo dirigido.

Grafo final acíclico, única dependencia.

Page 6: Programación 3: Ordenación topológica, matriz de caminos y algoritmo Warshall

IMPORTANTE La ordenación topológica se aplica sobre

grafos dirigidos sin ciclos. Es una ordenación lineal tal que si un nodo

llamando A es anterior a otro nodo B entonces existe un camino de A hacia B

La ordenación topológica no se puede realizar en grafos con ciclos

Page 7: Programación 3: Ordenación topológica, matriz de caminos y algoritmo Warshall

GRAFO DIRIGIDO ACICLICO Un grafo dirigido y sin ciclos se denomina un gda o

grafo acíclico. Los gda aparecen en modelos donde no tiene sentido

que un vértice tenga un camino directo a él mismo

Los grafos dirigidos aciclicos pueden utilizarse para modelar muchos tipos diferentes de información las cuales pueden ser una colección de las tareas que pueden ordenarse en una secuencia determinada.

Page 8: Programación 3: Ordenación topológica, matriz de caminos y algoritmo Warshall

El grafo anterior es un ejemplo de un grafo dirigido acíclico, donde se modela la estructura de prerrequisito de 8 cursos

Un arista cualquiera (R,S) significa que el curso R debe completarse antes de empezar el curso S.

Por ejemplo, el curso M21 se puede empezar sólo cuando se terminen los cursos E11 y T12.

M21 es el paso que sigue o sucesor de E11 y T12

Page 9: Programación 3: Ordenación topológica, matriz de caminos y algoritmo Warshall

Una ordenación topológica de estos cursos es cualquier secuencia de cursos que cumple los prerrequisitos y tenga los pasos sucesores correctos.

Para un grafo dirigido acíclico no tiene por qué existir una única ordenación topológica

E11 - T12 - M21 - C22 - R23 - S31 - S32 - T41 T12 - E11 - R23 - C22 - M21 - S31 - S32 - T41

Page 10: Programación 3: Ordenación topológica, matriz de caminos y algoritmo Warshall

ORDENACIÓN TOPOLÓGICA COMPLEJIDAD

La complejidad del algoritmo Ordenación Topológica de un grafo.

Representación del grafo con Listas de Adyacencia, es O(a+n), siendo ‘a’ el número de arcos y ‘n’ el de vértices.

Representación del grafo con una Matriz de Adyacencia, la complejidad es O(n2 ).

Page 11: Programación 3: Ordenación topológica, matriz de caminos y algoritmo Warshall

ALGORITMO DE UNA ORDENACIÓN TOPOLÓGICA Pasos: Busca una tarea (vértice V) la cual no tenga Sucesores. Este vértice V pasa a formar parte de la Ordenación T. Ya que el vértice que no tiene sucesores se añadió a la

Ordenación T, este vértice es eliminado del grafo inicial. Se repite el proceso. Se toma otro vértice W, que no tenga sucesores. Se incorpora a la Ordenación T. Se eliminan el vértice W del grafo anterior. Se repite el proceso. Se sigue hasta completar la Ordenación.

En el próximo ejemplo de utiliza un array para guardar la Ordenación T. Cada vez que se encuentre un vértice que no tenga sucesores, se agrega desde el final del array hasta el principio.

Page 12: Programación 3: Ordenación topológica, matriz de caminos y algoritmo Warshall

Algoritmo de Ordenación Topológica con un grafo representado por su matriz de Adyacencia

Page 13: Programación 3: Ordenación topológica, matriz de caminos y algoritmo Warshall
Page 14: Programación 3: Ordenación topológica, matriz de caminos y algoritmo Warshall

IMPLEMENTACIÓN DEL ALGORITMO DE ORDENACIÓN TOPOLÓGICA Para representar el siguiente grafo se utilizara una

Matriz de Adyacencia, y aplicar el Algoritmo de Ordenación Topológica

C F

D

B E

A

H

G

Page 15: Programación 3: Ordenación topológica, matriz de caminos y algoritmo Warshall

MATRIZ DE CAMINOS: ALGORITMO DE WARSHALL Normalmente se suele confundir este

Algoritmo con el Algoritmo de Floyd Warshall Floy Warshall encuentra el camino mínimo de

grafos dirigidos ponderados

Algoritmo de Warshall trabaja sobre grafos dirigidos no ponderados, y encuentra caminos entre un par de vértices

Page 16: Programación 3: Ordenación topológica, matriz de caminos y algoritmo Warshall

MATRIZ DE CAMINOS: ALGORITMO DE WARSHALL Recibe una matriz de Adyacencia de un grafo

de n vértices y retorna la matriz de caminos llamada Cierre Transitivo.

La estrategia que sigue el algoritmo consiste en definir, a nivel lógico, una secuencia de matrices n-cuadradas P0, P1, P2, P3 ... Pn

A cada nodo del grafo lo convierte en un ‘’puente’’ para comunicar las diferentes aristas.

Page 17: Programación 3: Ordenación topológica, matriz de caminos y algoritmo Warshall

ALGORITMO DE WARSHALL El nodo puente mencionado ayudara a

encontrar caminos mediante el mismo e ira aumentado los caminos posible según se acaben los nodos.

El nodo seleccionado para cada conexión mediante un puente, se lo define como nodo de orden k

Los elementos de cada una de las matrices Pk[i,j] tienen el valor 0 si no hay camino y 1 si existe un camino del vértice i y al j.

Page 18: Programación 3: Ordenación topológica, matriz de caminos y algoritmo Warshall

1 - Si existe un arco del vértice i al j

0 - En otro casoP k=0

1 - Si existe un camino simple de i a j que no pasa por ningún otro vértice a no ser por los vértices creados en P k=0

0 - En otro caso

P k=1

1 - Si existe un camino simple de i a j que no pasa por ningún otro vértice a no ser por los vértices creados en P k=1 y P k=0

0 - En otro caso

P k=2

1 - Si existe un camino simple de i a j que no pasa por ningún otro vértice a no ser por el vértice creado en P k=0 , P k=1 y P k=2

0 - En otro caso

P k=3

k = 0, 1, 2, 3……n (Numero de vértices)

Page 19: Programación 3: Ordenación topológica, matriz de caminos y algoritmo Warshall

Representación de un Grafo por Matriz y Lista de Adyacencia

Matriz de Adyacencia

Page 20: Programación 3: Ordenación topológica, matriz de caminos y algoritmo Warshall

Matriz de Adyacencia

Page 21: Programación 3: Ordenación topológica, matriz de caminos y algoritmo Warshall

Lista de Adyacencia

Page 22: Programación 3: Ordenación topológica, matriz de caminos y algoritmo Warshall

Lista de Adyacencia

Page 23: Programación 3: Ordenación topológica, matriz de caminos y algoritmo Warshall

ALGORITMO DE WARSHALL

Page 24: Programación 3: Ordenación topológica, matriz de caminos y algoritmo Warshall

ALGORITMO DE WARSHALL COMPLEJIDAD La complejidad del algoritmo de Warshall es

cúbica, O(n3) siendo n el número de vértices.

Esta característica hace que el tiempo de ejecución crezca rápidamente para grafos con, relativamente, muchos nodos.

Page 25: Programación 3: Ordenación topológica, matriz de caminos y algoritmo Warshall

EJEMPLO E IMPLEMENTACIÓN EN JAVA Se tiene el siguiente grafo dirigido no ponderado con su

respectiva matriz adyacente,

Matriz Adyacente

Se mostrara paso a paso cual es el procedimiento ah seguir en este Algoritmo para entenderlo mejor y después su implementación en Java

  A B C D E FA 0 1 0 0 1 0B 0 0 0 1 0 0C 0 1 0 0 0 0D 0 0 1 0 0 1E 0 0 0 0 0 0F 0 0 0 0 0 0

A

B

C

D

FE

Page 26: Programación 3: Ordenación topológica, matriz de caminos y algoritmo Warshall

ALGORITMO DE WARSHALL

A

B

C

D

FE

  A B C D E FA 0 1 0 0 1 0B 0 0 0 1 0 0C 0 1 0 0 0 0D 0 0 1 0 0 1E 0 0 0 0 0 0F 0 0 0 0 0 0

  A B C D E FA 0 1 0 0 1 0B 0 0 0 1 0 0C 0 1 0 0 0 0D 0 0 1 0 0 1E 0 0 0 0 0 0F 0 0 0 0 0 0

Se realiza una matriz con k=0, en esta caso será el vértice A el cual servirá como puente

Cuando exista dos números 1 en la fila y columna amarilla, en este caso k=0 (Vértice A), que una ambos vértices por el puente amarillo, se pondrá 1 donde exista un camino y 0 caso contrario.

k= 0

Page 27: Programación 3: Ordenación topológica, matriz de caminos y algoritmo Warshall

ALGORITMO DE WARSHALL

A

B

C

D

FE

Se realiza una matriz con k=1, en esta caso será el vértice B el cual servirá como puente

Cuando exista dos números 1 en la fila y columna amarilla, que una ambos vértices por el puente amarillo, se pondrá 1 donde exista un camino y 0 caso contrario.

k= 1  A B C D E FA 0 1 0 0 1 0B 0 0 0 1 0 0C 0 1 0 0 0 0D 0 0 1 0 0 1E 0 0 0 0 0 0F 0 0 0 0 0 0

  A B C D E FA 0 1 0 1 1 0B 0 0 0 1 0 0C 0 1 0 1 0 0D 0 0 1 0 0 1E 0 0 0 0 0 0F 0 0 0 0 0 0

Page 28: Programación 3: Ordenación topológica, matriz de caminos y algoritmo Warshall

ALGORITMO DE WARSHALL

A

B

C

D

FE

Se realiza una matriz con k=2, en esta caso será el vértice C el cual servirá como puente

Cuando exista dos números 1 en la fila y columna amarilla, que una ambos vértices por el puente amarillo, se pondrá 1 donde exista un camino y 0 caso contrario.

k= 2  A B C D E FA 0 1 0 1 1 0B 0 0 0 1 0 0C 0 1 0 1 0 0D 0 0 1 0 0 1E 0 0 0 0 0 0F 0 0 0 0 0 0

  A B C D E FA 0 1 0 1 1 0B 0 0 0 1 0 0C 0 1 0 1 0 0D 0 1 1 1 0 1E 0 0 0 0 0 0F 0 0 0 0 0 0

Page 29: Programación 3: Ordenación topológica, matriz de caminos y algoritmo Warshall

ALGORITMO DE WARSHALL

A

B

C

D

FE

Se realiza una matriz con k=3, en esta caso será el vértice D el cual servirá como puente

Cuando exista dos números 1 en la fila y columna amarilla, que una ambos vértices por el puente amarillo, se pondrá 1 donde exista un camino y 0 caso contrario.

k= 3  A B C D E FA 0 1 0 1 1 0B 0 0 0 1 0 0C 0 1 0 1 0 0D 0 1 1 1 0 1E 0 0 0 0 0 0F 0 0 0 0 0 0

  A B C D E FA 0 1 1 1 1 1B 0 1 1 1 0 1C 0 1 1 1 0 1D 0 1 1 1 0 1E 0 0 0 0 0 0F 0 0 0 0 0 0

Page 30: Programación 3: Ordenación topológica, matriz de caminos y algoritmo Warshall

ALGORITMO DE WARSHALL

A

B

C

D

FE

Se realiza una matriz con k=4, en esta caso será el vértice E el cual servirá como puente

Cuando exista dos números 1 en la fila y columna amarilla, que una ambos vértices por el puente amarillo, se pondrá 1 donde exista un camino y 0 caso contrario.

k= 4  A B C D E FA 0 1 1 1 1 1B 0 1 1 1 0 1C 0 1 1 1 0 1D 0 1 1 1 0 1E 0 0 0 0 0 0F 0 0 0 0 0 0

  A B C D E FA 0 1 1 1 1 1B 0 1 1 1 0 1C 0 1 1 1 0 1D 0 1 1 1 0 1E 0 0 0 0 0 0F 0 0 0 0 0 0

Page 31: Programación 3: Ordenación topológica, matriz de caminos y algoritmo Warshall

ALGORITMO DE WARSHALL

A

B

C

D

FE

Se realiza una matriz con k=5, en esta caso será el vértice F el cual servirá como puente

Cuando exista dos números 1 en la fila y columna amarilla, que una ambos vértices por el puente amarillo, se pondrá 1 donde exista un camino y 0 caso contrario.

k= 5

  A B C D E FA 0 1 1 1 1 1B 0 1 1 1 0 1C 0 1 1 1 0 1D 0 1 1 1 0 1E 0 0 0 0 0 0F 0 0 0 0 0 0

  A B C D E FA 0 1 1 1 1 1B 0 1 1 1 0 1C 0 1 1 1 0 1D 0 1 1 1 0 1E 0 0 0 0 0 0F 0 0 0 0 0 0

Page 32: Programación 3: Ordenación topológica, matriz de caminos y algoritmo Warshall

ALGORITMO DE WARSHALL, MATRIZ DE CAMINOS

AB

C

D

FE

  A B C D E FA 0 1 1 1 1 1B 0 1 1 1 0 1C 0 1 1 1 0 1D 0 1 1 1 0 1E 0 0 0 0 0 0F 0 0 0 0 0 0

Matriz de Caminos

A

B

C

D

FE

  A B C D E FA 0 1 0 0 1 0B 0 0 0 1 0 0C 0 1 0 0 0 0D 0 0 1 0 0 1E 0 0 0 0 0 0F 0 0 0 0 0 0

Matriz de Adyacencia

Page 33: Programación 3: Ordenación topológica, matriz de caminos y algoritmo Warshall

CONCLUSIONES

En la Ordenación Topológica se tiene relaciones de precedencia que se representan mediante un grafo dirigido en el que los vértices son las tareas o hitos y existe una arista del vértice r al t si el inicio de la tarea t depende de la terminación de r.

Una vez se dispone del grafo interesa obtener una planificación de las tareas que constituyen el proyecto; en definitiva, encontrar la ordenación topológica de los vértices que forman el grafo.

Algoritmo de Warshall devuelve una matriz de Camino, llamada de Cierre Transitivo, la cual indica TODOS los caminos posible de un vértice a otro, aun así pasando por otros vértices, siempre y cuando se respete el sentido cuando es un grafo dirigido