Algoritmos de búsqueda en grafos II - …ertello/algorithms/sesion09.pdf · Tarea 6 Dr. Eduardo R...

26
Algoritmos de búsqueda en grafos II Dr. Eduardo A. RODRÍGUEZ TELLO CINVESTAV-Tamaulipas 12 de febrero de 2018 Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Búsqueda en grafos II 12 de febrero de 2018 1 / 26

Transcript of Algoritmos de búsqueda en grafos II - …ertello/algorithms/sesion09.pdf · Tarea 6 Dr. Eduardo R...

Page 1: Algoritmos de búsqueda en grafos II - …ertello/algorithms/sesion09.pdf · Tarea 6 Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV ) Búsqueda en grafos II 12 de febrero de 2018 3 / 26 Algoritmos

Algoritmos de búsqueda en grafos II

Dr. Eduardo A. RODRÍGUEZ TELLO

CINVESTAV-Tamaulipas

12 de febrero de 2018

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Búsqueda en grafos II 12 de febrero de 2018 1 / 26

Page 2: Algoritmos de búsqueda en grafos II - …ertello/algorithms/sesion09.pdf · Tarea 6 Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV ) Búsqueda en grafos II 12 de febrero de 2018 3 / 26 Algoritmos

1 Algoritmos de búsqueda en grafos

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Búsqueda en grafos II 12 de febrero de 2018 2 / 26

Page 3: Algoritmos de búsqueda en grafos II - …ertello/algorithms/sesion09.pdf · Tarea 6 Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV ) Búsqueda en grafos II 12 de febrero de 2018 3 / 26 Algoritmos

Algoritmos de búsqueda en grafos Búsqueda en anchura (BFS)

1 Algoritmos de búsqueda en grafosBúsqueda en anchura (BFS)Eficiencia del algoritmo BFSLongitudes en las aristasAlgoritmo de DijkstraAlgoritmo Bellman-FordTarea 6

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Búsqueda en grafos II 12 de febrero de 2018 3 / 26

Page 4: Algoritmos de búsqueda en grafos II - …ertello/algorithms/sesion09.pdf · Tarea 6 Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV ) Búsqueda en grafos II 12 de febrero de 2018 3 / 26 Algoritmos

Algoritmos de búsqueda en grafos Búsqueda en anchura (BFS)

Búsqueda en anchura (BFS)

Recordemos que la búsqueda en profundidad nos ayuda aencontrar componentes conexos en un grafo, e incluso encuentracaminos para cualquier par de vértices alcanzables entre ellos;sin embargo estos caminos no son los más cortos.

DefiniciónLa distancia entre un par de vértices es la longitud del camino máscorto entre ellos.

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Búsqueda en grafos II 12 de febrero de 2018 4 / 26

Page 5: Algoritmos de búsqueda en grafos II - …ertello/algorithms/sesion09.pdf · Tarea 6 Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV ) Búsqueda en grafos II 12 de febrero de 2018 3 / 26 Algoritmos

Algoritmos de búsqueda en grafos Búsqueda en anchura (BFS)

Búsqueda en anchura (BFS)

La idea más simple para encontrar los caminos más cortos esproceder con una búsqueda capa por capa, es decir, visitar todoslos vértices que están a una distancia d del vértice de inicio, antesde visitar los que están a una distancia d+ 1.

Esta es la idea detrás de la búsqueda en anchura.

Para implementarla, podemos hacer uso de una cola, en la queestarán, en un momento determinado, sólo los vértices a unadistancia d.

Conforme se extraigan estos vértices y sean procesados, se iránagregando a la cola los que están a distancia d+ 1.

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Búsqueda en grafos II 12 de febrero de 2018 5 / 26

Page 6: Algoritmos de búsqueda en grafos II - …ertello/algorithms/sesion09.pdf · Tarea 6 Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV ) Búsqueda en grafos II 12 de febrero de 2018 3 / 26 Algoritmos

Algoritmos de búsqueda en grafos Búsqueda en anchura (BFS)

Búsqueda en anchura (BFS)

Procedure bfs(G, s)

Require: Un grafo G = (V,E), dirigido o no dirigido; un vértice s ∈ VEnsure: Para todos los vértices u alcanzables desde s, dist(u) almacenará la

distancia de s a u1: for todo u ∈ V do2: dist(u) = ∞3: end for4: dist(s) = 05: Q = [s]6: while Q no esté vacía do7: u = eject(Q)8: for todas las aristas (u, v) ∈ E do9: if dist(v) = ∞ then

10: inject(Q, v)11: dist(v) = dist(u) + 112: end if13: end for14: end while

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Búsqueda en grafos II 12 de febrero de 2018 6 / 26

Page 7: Algoritmos de búsqueda en grafos II - …ertello/algorithms/sesion09.pdf · Tarea 6 Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV ) Búsqueda en grafos II 12 de febrero de 2018 3 / 26 Algoritmos

Algoritmos de búsqueda en grafos Búsqueda en anchura (BFS)

Búsqueda en anchura (BFS)

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Búsqueda en grafos II 12 de febrero de 2018 7 / 26

Page 8: Algoritmos de búsqueda en grafos II - …ertello/algorithms/sesion09.pdf · Tarea 6 Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV ) Búsqueda en grafos II 12 de febrero de 2018 3 / 26 Algoritmos

Algoritmos de búsqueda en grafos Eficiencia del algoritmo BFS

1 Algoritmos de búsqueda en grafosBúsqueda en anchura (BFS)Eficiencia del algoritmo BFSLongitudes en las aristasAlgoritmo de DijkstraAlgoritmo Bellman-FordTarea 6

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Búsqueda en grafos II 12 de febrero de 2018 8 / 26

Page 9: Algoritmos de búsqueda en grafos II - …ertello/algorithms/sesion09.pdf · Tarea 6 Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV ) Búsqueda en grafos II 12 de febrero de 2018 3 / 26 Algoritmos

Algoritmos de búsqueda en grafos Eficiencia del algoritmo BFS

Eficiencia del algoritmo BFS

El algoritmo BFS crea un árbol de los caminos más cortos,porque todos sus caminos son los más cortos posibles siiniciamos del vértice raíz.

Por lo tanto, su árbol generalmente será menos profundo peromás ancho que el de DFS.

Note también que la diferencia esencial con respecto a DFS, es eluso de una cola en vez de una pila.

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Búsqueda en grafos II 12 de febrero de 2018 9 / 26

Page 10: Algoritmos de búsqueda en grafos II - …ertello/algorithms/sesion09.pdf · Tarea 6 Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV ) Búsqueda en grafos II 12 de febrero de 2018 3 / 26 Algoritmos

Algoritmos de búsqueda en grafos Eficiencia del algoritmo BFS

Eficiencia del algoritmo BFS

Una diferencia más sutil es que en este caso sólo nos interesanlas distancias desde la raíz, por lo que el algoritmo no reinicia enotros componentes conexos.

El algoritmo BFS requiere tiempo O(|V |+ |E|), por las mismasrazones que el tiempo requerido por DFS.

Cada vértice es colocado exactamente una vez en la cola, y unavez que se retira, todas sus aristas son verificadas.

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Búsqueda en grafos II 12 de febrero de 2018 10 / 26

Page 11: Algoritmos de búsqueda en grafos II - …ertello/algorithms/sesion09.pdf · Tarea 6 Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV ) Búsqueda en grafos II 12 de febrero de 2018 3 / 26 Algoritmos

Algoritmos de búsqueda en grafos Longitudes en las aristas

1 Algoritmos de búsqueda en grafosBúsqueda en anchura (BFS)Eficiencia del algoritmo BFSLongitudes en las aristasAlgoritmo de DijkstraAlgoritmo Bellman-FordTarea 6

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Búsqueda en grafos II 12 de febrero de 2018 11 / 26

Page 12: Algoritmos de búsqueda en grafos II - …ertello/algorithms/sesion09.pdf · Tarea 6 Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV ) Búsqueda en grafos II 12 de febrero de 2018 3 / 26 Algoritmos

Algoritmos de búsqueda en grafos Longitudes en las aristas

Longitudes en las aristas

BFS considera que todas las aristas tienen igual longitud

Sin embargo, esto raramente ocurre en las aplicaciones prácticas

Veamos un ejemplo

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Búsqueda en grafos II 12 de febrero de 2018 12 / 26

Page 13: Algoritmos de búsqueda en grafos II - …ertello/algorithms/sesion09.pdf · Tarea 6 Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV ) Búsqueda en grafos II 12 de febrero de 2018 3 / 26 Algoritmos

Algoritmos de búsqueda en grafos Longitudes en las aristas

Longitudes en las aristas

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Búsqueda en grafos II 12 de febrero de 2018 13 / 26

Page 14: Algoritmos de búsqueda en grafos II - …ertello/algorithms/sesion09.pdf · Tarea 6 Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV ) Búsqueda en grafos II 12 de febrero de 2018 3 / 26 Algoritmos

Algoritmos de búsqueda en grafos Longitudes en las aristas

Longitudes en las aristas

BFS no es capaz de manejar aristas con longitudes diferentes

Pero puede hacerse un pequeño truco para hacer que BFS puedamanejar estos grafos

Dado un grafo G es posible romper sus aristas con longitudes envarias partes con longitud unitaria

Veamos un ejemplo

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Búsqueda en grafos II 12 de febrero de 2018 14 / 26

Page 15: Algoritmos de búsqueda en grafos II - …ertello/algorithms/sesion09.pdf · Tarea 6 Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV ) Búsqueda en grafos II 12 de febrero de 2018 3 / 26 Algoritmos

Algoritmos de búsqueda en grafos Longitudes en las aristas

Longitudes en las aristas

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Búsqueda en grafos II 12 de febrero de 2018 15 / 26

Page 16: Algoritmos de búsqueda en grafos II - …ertello/algorithms/sesion09.pdf · Tarea 6 Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV ) Búsqueda en grafos II 12 de febrero de 2018 3 / 26 Algoritmos

Algoritmos de búsqueda en grafos Longitudes en las aristas

Longitudes en las aristas

Sin embargo, esto puede ser ineficiente

Para resolver este detalle es posible usar alarmas

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Búsqueda en grafos II 12 de febrero de 2018 16 / 26

Page 17: Algoritmos de búsqueda en grafos II - …ertello/algorithms/sesion09.pdf · Tarea 6 Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV ) Búsqueda en grafos II 12 de febrero de 2018 3 / 26 Algoritmos

Algoritmos de búsqueda en grafos Longitudes en las aristas

Longitudes en las aristas

Una en T = 100 para A y otra en T = 200 para B

Son tiempos estimados de llegada basados en los vértices yavisitados.

Al llegar a A la alarma suene en T = 100, y el tiempo estimadopara llegar a B debe ser actualizado a T = 150

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Búsqueda en grafos II 12 de febrero de 2018 17 / 26

Page 18: Algoritmos de búsqueda en grafos II - …ertello/algorithms/sesion09.pdf · Tarea 6 Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV ) Búsqueda en grafos II 12 de febrero de 2018 3 / 26 Algoritmos

Algoritmos de búsqueda en grafos Longitudes en las aristas

Longitudes en las aristas

De manera más general el algoritmo funcionaría así:Fijar la alarma para el nodo s en el tiempo 0.

Repetir hasta que no haya más alarmas:La distancia de s a u es TPara cada vecino v de u en G

Si no hay todavía una alarma para v, crear una con el tiempoT + l(u, v)Si la alarma de v está programada para después de T + l(u, v),entonces actualiza con este tiempo anterior

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Búsqueda en grafos II 12 de febrero de 2018 18 / 26

Page 19: Algoritmos de búsqueda en grafos II - …ertello/algorithms/sesion09.pdf · Tarea 6 Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV ) Búsqueda en grafos II 12 de febrero de 2018 3 / 26 Algoritmos

Algoritmos de búsqueda en grafos Longitudes en las aristas

Longitudes en las aristas

El algoritmo que acabamos de describir permite calcular lasdistancias en cualquier grafo con longitudes positivas en lasaristas

Para implementar eficientemente el sistema de alarmas seemplea una cola con prioridad (usualmente un heap), quemantiene un conjunto de elementos (vértices) con un valornumérico (llave) asociado y soporta las siguientes operaciones:

InsertarDecrementar-llaveExtraer-mínimoConstruir-cola

Las primeras 2 fijan las alarmas, la tercera indica la siguientealarma que sonará

Todo junto no es otra cosa que el algoritmo de Dijkstra

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Búsqueda en grafos II 12 de febrero de 2018 19 / 26

Page 20: Algoritmos de búsqueda en grafos II - …ertello/algorithms/sesion09.pdf · Tarea 6 Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV ) Búsqueda en grafos II 12 de febrero de 2018 3 / 26 Algoritmos

Algoritmos de búsqueda en grafos Algoritmo de Dijkstra

1 Algoritmos de búsqueda en grafosBúsqueda en anchura (BFS)Eficiencia del algoritmo BFSLongitudes en las aristasAlgoritmo de DijkstraAlgoritmo Bellman-FordTarea 6

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Búsqueda en grafos II 12 de febrero de 2018 20 / 26

Page 21: Algoritmos de búsqueda en grafos II - …ertello/algorithms/sesion09.pdf · Tarea 6 Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV ) Búsqueda en grafos II 12 de febrero de 2018 3 / 26 Algoritmos

Algoritmos de búsqueda en grafos Algoritmo de Dijkstra

Algoritmo de Dijkstra

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Búsqueda en grafos II 12 de febrero de 2018 21 / 26

Page 22: Algoritmos de búsqueda en grafos II - …ertello/algorithms/sesion09.pdf · Tarea 6 Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV ) Búsqueda en grafos II 12 de febrero de 2018 3 / 26 Algoritmos

Algoritmos de búsqueda en grafos Algoritmo Bellman-Ford

1 Algoritmos de búsqueda en grafosBúsqueda en anchura (BFS)Eficiencia del algoritmo BFSLongitudes en las aristasAlgoritmo de DijkstraAlgoritmo Bellman-FordTarea 6

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Búsqueda en grafos II 12 de febrero de 2018 22 / 26

Page 23: Algoritmos de búsqueda en grafos II - …ertello/algorithms/sesion09.pdf · Tarea 6 Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV ) Búsqueda en grafos II 12 de febrero de 2018 3 / 26 Algoritmos

Algoritmos de búsqueda en grafos Algoritmo Bellman-Ford

Algoritmo Bellman-Ford

El algoritmo de Dijkstra no funciona para grafos con longitudesnegativas en las aristas

Para resolver el problema de encontrar los caminos más cortosen grafos generales a partir de un solo vértice fuente se requieredel algoritmo de Bellman-Ford

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Búsqueda en grafos II 12 de febrero de 2018 23 / 26

Page 24: Algoritmos de búsqueda en grafos II - …ertello/algorithms/sesion09.pdf · Tarea 6 Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV ) Búsqueda en grafos II 12 de febrero de 2018 3 / 26 Algoritmos

Algoritmos de búsqueda en grafos Algoritmo Bellman-Ford

Algoritmo Bellman-Ford

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Búsqueda en grafos II 12 de febrero de 2018 24 / 26

Page 25: Algoritmos de búsqueda en grafos II - …ertello/algorithms/sesion09.pdf · Tarea 6 Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV ) Búsqueda en grafos II 12 de febrero de 2018 3 / 26 Algoritmos

Algoritmos de búsqueda en grafos Tarea 6

1 Algoritmos de búsqueda en grafosBúsqueda en anchura (BFS)Eficiencia del algoritmo BFSLongitudes en las aristasAlgoritmo de DijkstraAlgoritmo Bellman-FordTarea 6

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Búsqueda en grafos II 12 de febrero de 2018 25 / 26

Page 26: Algoritmos de búsqueda en grafos II - …ertello/algorithms/sesion09.pdf · Tarea 6 Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV ) Búsqueda en grafos II 12 de febrero de 2018 3 / 26 Algoritmos

Algoritmos de búsqueda en grafos Tarea 6

Tarea 6

En la carpeta de Dropbox del curso encontrarán un archivo con lasespecificaciones de esta tarea.

Fecha de entrega: Miércoles 21 de febrero antes de las 8 AM.

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Búsqueda en grafos II 12 de febrero de 2018 26 / 26