Re Corridos

8
Matriz de Caminos Es una matriz cuadrada P, Que representa si hay o no camino Entre dos vertices Vi y Vj Cierre transitivo Es el grafo resultante de la matriz de caminos Si un grafo es fuertemente conexo 1. Su cierre transitivo es un grafo completo Warshall El anterior algoritmo Es poco eficiente, peor Cuando el grafo tiene muchos vertices Warshall propuso otro algoritmo Mas eficiente Calcular una secuencia de matrices cuadradas De 0s(no hay camino) y 1s(hay camino) P0, P1, P2, P3… PN La diferencia entre Pk y Pk-1 Se basa añadir un vertice Vk-1 al analisis Para saber y a traves de Vk-1 hay camino entre V1 y Vj Funcionamiento Existe una matriz inicial P0 o Inidica si hay o no camino DIRECTO de Vi a Vj Pij= { 1 , si entre V i y V j hay camino 0, si no lo hay

description

de grafos

Transcript of Re Corridos

Page 1: Re Corridos

Matriz de Caminos

Es una matriz cuadrada P,

Que representa si hay o no caminoEntre dos vertices Vi y Vj

Cierre transitivo

Es el grafo resultante de la matriz de caminosSi un grafo es fuertemente conexo

1. Su cierre transitivo es un grafo completo

Warshall

• El anterior algoritmo

– Es poco eficiente, peor

– Cuando el grafo tiene muchos vertices

• Warshall propuso otro algoritmo

– Mas eficiente

– Calcular una secuencia de matrices cuadradas

• De 0s(no hay camino) y 1s(hay camino)

• P0, P1, P2, P3… PN

– La diferencia entre Pk y Pk-1

• Se basa añadir un vertice Vk-1 al analisis

• Para saber y a traves de Vk-1 hay camino entre V1 y Vj

Funcionamiento

Existe una matriz inicial P0

o Inidica si hay o no camino DIRECTO de Vi a Vj

La matriz que le sigue P1

o Indicaria si hay o no camino DIRECTO (Esto ya lo sabe P0)

o O pasando por V0 (añade este vertice al analisis)

Pij={1 , si entre V i y V j hay camino0, si no lo hay

Page 2: Re Corridos

P2

o Indicaria si hay camino DIRECTO o pasando por V0 (Esto ya lo sabe P1)

o O pasando por V1

P3

o Indicaria si hay camino DIRECTO o pasando por V0, o V1 (Lo sabe P2)

o O pasando por V2

Pk

o Indicaria lo que ya sabe Pk-1

o O pasando por Vk-1

Implementación

MatrizAdy Warshall(Grafo G){int i, j, k;MatrizAdy P;CopiarMatrices(P, G.A);for(k = 0; k < G.nvertices; k++){

for(i = 0; i < G.nvertices; i++){for(j = 0; j < G.nvertices; i++){

P[i][j]= P[i][j] || (P[i][k] && P[k][j]);}

}}return P;

}

Camino más corto

• Frecuentemente, se desea conocer en una red

– Cuál es el camino más corto

• Entre un par de vértices

– En este caso

• Si importa cuantos caminos existen

• Si ya conozco un camino, pero encuentro uno mejor, sustituir

• Se aplica el algoritmo de Dijkstra

– Es un algoritmo ávido, ya que

Page 3: Re Corridos

– Resuelve el problema en sucesivos pasos

– En cada paso

• Selecciona la solución mas optima

Funcionamiento

• Dado un V0, Dijkstra busca un conjunto D con

– Las menores distancias de V0 al resto de vértices

• Al inicio, solo conocemos

– Las distancias de los adyacentes

– D es inicializada a

• Factor de peso para los adyacentes, Infinito para los no adyacentes

• D va ser mejorado sucesivamente

– Escogiendo el vértice Vk no elegido antes

• Que tenga la distancia mas corta V0, Vk

– Probamos si pasando por Vk

• Se puede obtener distancias mas cortas de las que tenemos

• Para cada Vértice restante del grafo

Camino más corto entre todo los pares de vértices

Page 4: Re Corridos

• Es una generalización de lo anterior

• Si se puede obtener la menor distancia

– De un V0 al resto

• También se puede obtener

– La menor distancia de todos los vértices

– Al resto

• Se podría aplicar Dijkstra

– A cada vértice

– Y obtener n vectores D, o , una matriz F

• Pero se puede aplicar otro algoritmo

FLOYD

• Este algoritmo se basa en Warshall

– Se calculaba una secuencia de matrices Pk

– Cada Pk evaluaba dos opciones

• Que Pk-1 indicara camino entre Vi y Vj o

• Que Pk-1 indicara camino entre Vi y Vj

– Pasando por Vk

• Floyd también calcula Fk, pero

– Cada Fk escogerá la menor distancia entre

• Distancia entre Vi y Vj, indicado por Fk-1 o

• Distancia entre Vi y Vj pasando por Vk, indicado por Fk-1

Algoritmo de PRIM

• Dado el grafo, se debe seleccionar

– Un vértice de inicio v

• Dicho vértice v se añade a un conjunto W

Fij=Min( F k-1 [ i ][ j ] ,( F k- 1[ i ] [k ]+ F k-1 [ k ][ j ]))

Page 5: Re Corridos

• Escoger el vértice u que no pertenezca a W

– Adyacente a cualquiera de los vértices de W

– Y que tenga un costo mínimo

• Añadir el vértice u al conjunto W

• Repetir proceso hasta que V == W

Funcionamiento

1. Se crea un grafo nuevo con los mismos vértices del grafo original

2. origen se marca como visitado

3. Los arcos de origen, cuyos vértices destino no han sido visitados, se encolan por peso

4. Se desencola el menor en peso de los arcos no visitados (menor) y su vértice destino se marca como visitado

5. En el nuevo grafo, se lanza el arco correspondiente a menor (de ida y vuelta)

6. Se repite todo desde el punto 3 pero para un origen igual al vértice del arco sacado (menor) hasta que el número de vértices marcados como visitados sea igual al número de vértices del grafo

Algoritmo de Kruskal

Kruskal se basa en el concepto de

Componentes conexas

Sabemos que en el árbol de expansión

Deben aparecer todos los vértices de G

Lo que no sabemos aun

Es que arcos escoger para unirlos

Lo que a Kruskal le interesara elegir

Son los arcos, no los vértices, como en Prim

Funcionamiento

Primero añadir todos los vértices al árbol Ao Estos forman n componentes conexas

Luego elegir el arco de costo mínimo

Page 6: Re Corridos

Que no haya sido elegido anteriormente y que No una dos vértices de una misma componente

Este proceso se repite hasta queo Se hayan unido todos los vérticeso Es decir, n-1 veces

27 CRITERIOS PERSONALES

1. ¿Qué lo llevó a considerar estas respuestas cómo válida, en qué se fundamenta?

Las fuentes donde se encontró la información

2. ¿Qué problemas se presentaron al momento de elaborar la solución?

En su utilización al programar

3. ¿Qué se me hizo más fácil resolver en este trabajo?

Herramientas de investigación, libros e internet

4. ¿Cómo te ayudó este trabajo a aprender algo nuevo o a reforzar conocimientos anteriores?

A realizar ejercicios en clases sobre el tema buscado

5. ¿Puedes describir algunas relaciones entre este trabajo, otras asignaturas que estas estudiando y la vida real?

Por ahora ninguna

6. ¿Qué no he logrado comprender?

Algunos algoritmos de recorridos de grafos

Page 7: Re Corridos

7. ¿Qué debo mejorar?

La búsqueda más profundizada de los temas a investigar.

CONCLUSIONES

Aprendimos a identificar el algoritmo más eficaz para obtener un camino más corto de un vértice a otro

RECOMENDACIONESIdentificar el tipo de grafo e Implementación de recorridos en java

BIBLIOGRAFIA

http://www.itnuevolaredo.edu.mx/takeyas/apuntes/Estructura%20de%20Datos/Apuntes/grafos/Apuntes_Grafos.pdf

www.itnuevolaredo.edu.mx

https://www.dspace.espol.edu.ec/bitstre am/123456789/5857/15/21.%20Algoritmos%20con%20Grafos.ppt