You are on page 1of 20

Recorrido de Grafos representados como listas de adyacencia

Bsqueda en Amplitud

Bsqueda en Profundidad

Teora de Grafos
C7: Busqueda en Amplitud y Profundidad

Hernn Daro Toro Zapata


Universidad del Quindo
SIGMA
Seminario Interdisciplinario Grupo en Matemtica Aplicada

Octubre 20 de 2014

Referencias

Recorrido de Grafos representados como listas de adyacencia

Bsqueda en Amplitud

Bsqueda en Profundidad

Esquema de la presentacin
1

Recorrido de Grafos representados como listas de adyacencia


Introduccin
Listas de adyacencia

Bsqueda en Amplitud
Descripcin

Bsqueda en Profundidad
Descripcin

Referencias

Referencias

Recorrido de Grafos representados como listas de adyacencia

Bsqueda en Amplitud

Bsqueda en Profundidad

Introduccin

Esquema de la presentacin
1

Recorrido de Grafos representados como listas de adyacencia


Introduccin
Listas de adyacencia

Bsqueda en Amplitud
Descripcin

Bsqueda en Profundidad
Descripcin

Referencias

Referencias

Recorrido de Grafos representados como listas de adyacencia

Bsqueda en Amplitud

Bsqueda en Profundidad

Referencias

Introduccin

Introduccin I
Con el algoritmo de Warshall estamos en condiciones de determinar la
existencia de caminos entre parejas de vrtices de un grafo, mediante su
matriz de adyacencia.
Un problema mas especfico consiste en buscar un vrtice en concreto
que nos interesa alcanzar debido a sus caractersticas o a la informacin
que contiene (depende de la aplicacin concreta que se modela); adems,
en otras aplicaciones puede ser necesario recorrer todo el grafo en un
orden concreto. Para este tipo de problemas se estudiarn dos mtodos:
Bsqueda en amplitud (BFS)1 : se puede usar para hallar la
distancia ms corta entre un vrtice inicial y los restantes vrtices
del grafo.
Bsqueda en amplitud (DFS)2 : se puede utilizar la bsqueda en
profundidad en un grafo arbitrario para realizar el recorrido de un
grafo general (no es la mejor estrategia para salir de un laberinto!).
1 Breadth-first
2 Depth-first

search
search

Recorrido de Grafos representados como listas de adyacencia

Bsqueda en Amplitud

Bsqueda en Profundidad

Listas de adyacencia

Esquema de la presentacin
1

Recorrido de Grafos representados como listas de adyacencia


Introduccin
Listas de adyacencia

Bsqueda en Amplitud
Descripcin

Bsqueda en Profundidad
Descripcin

Referencias

Referencias

Recorrido de Grafos representados como listas de adyacencia

Bsqueda en Amplitud

Bsqueda en Profundidad

Referencias

Listas de adyacencia

Listas de adyacencia I
Hasta ahora tenemos tres formas diferentes de representar un grafo G:
Grfica.
Relacional. Describiendo los conjuntos V (G) y E(G).
Matricial. Si se requiere almacenar informacin adicional de los
vrtices, se requiere una estructura adicional de almacenamiento.
Para grafos ponderados se puede almacenar el valor de la arista en
forma de un valor de bits (habra que modificar el algoritmo de
Warshall). Es preciso conocer de antemano el nmero de vrtices y
para agregar o eliminar vrtices se requiere modificar las dimensiones
de la matriz. No es adecuada para grafos muy grandes ni para grafos
dispersos.
La representacin ms conveniente depender de la aplicacin. Para un
grafo G = (V, E), se forma una lista de adyacencia para cada vrtice
x V . Es decir, la lista de adyacencia para el vrtice x contiene todos los
vrtices y que son adyacentes a x. Se asumir la lista en orden alfabtico
por comodidad.

Recorrido de Grafos representados como listas de adyacencia

Bsqueda en Amplitud

Bsqueda en Profundidad

Referencias

Listas de adyacencia

Listas de adyacencia II

Importante
En un grafo no dirigido, la lista de adyacencia se construye de la misma
forma. Debe tenerse en cuenta que cada arista aparece dos veces.

Recorrido de Grafos representados como listas de adyacencia

Bsqueda en Amplitud

Bsqueda en Profundidad

Referencias

Listas de adyacencia

Listas de adyacencia III


Ejercicio
Construir las listas de adyacencia del grafo G que se obtiene de:
V (G) = {a, b, c, d, e, f }
E(G) = {{a, c}, {a, e}, {b, c}, {b, f }, {c, a}, {c, b}, {c, d},
{c, f }, {d, c}, {d, e}}
Importante
Las listas de adyacencia son preferibles cuando el grafo es disperso (para
cada vrtice hay pocas aristas que incidan sobre l). Para grafos densos,
podra ser ms conveniente usar la matriz de adyacencia.

Recorrido de Grafos representados como listas de adyacencia

Bsqueda en Amplitud

Bsqueda en Profundidad

Descripcin

Esquema de la presentacin
1

Recorrido de Grafos representados como listas de adyacencia


Introduccin
Listas de adyacencia

Bsqueda en Amplitud
Descripcin

Bsqueda en Profundidad
Descripcin

Referencias

Referencias

Recorrido de Grafos representados como listas de adyacencia

Bsqueda en Amplitud

Bsqueda en Profundidad

Referencias

Descripcin

Bsqueda en amplitud (BFS) I


Se estudian grafos sencillos dados en una representacin de listas de
adyacencia.
La BFS Se puede usar para hallar la distancia ms corta entre un vrtice
inicial y los restantes vrtices del grafo; es decir, el mnimo nmero de
aristas que hay que recorrer desde el vrtice inicial hasta un vrtice final
en concreto.
Comenzando desde el vrtice s, se examinan todas las aristas incidentes
en el vrtice s, pasando despus a un vrtice w, se repite el
procedimiento hasta que se hayan recorrido todos los vrtices del grafo.
Este enfoque de bsqueda puede dar lugar a problemas: los vrtices ya
visitados no deben visitarse de nuevo. Para evitar esta situacin, se
marcan los vrtices ya visitados

Recorrido de Grafos representados como listas de adyacencia

Bsqueda en Amplitud

Bsqueda en Profundidad

Referencias

Descripcin

Bsqueda en amplitud (BFS) II


Suponga que v1 es el
vrtice inicial y que cada
arista vale 1.
Para cada vrtice hay que
calcular la distancia ms
corta desde el vrtice
inicial y se marca con ese
valor.
Se marcan los vrtices
adyacentes al inicial antes
de seguir con la bsqueda.
Si el grafo es conectado,
los vrtices se visitarn al
menos una vez.

Recorrido de Grafos representados como listas de adyacencia

Bsqueda en Amplitud

Bsqueda en Profundidad

Referencias

Descripcin

Bsqueda en amplitud (BFS) III


Si la bsqueda comienza desde el vrtice v1 (inicial) este se marca
con distancia 0.
Luego se visitan todos los vrtices adyacentes a v1 y se marcan con
distancia 1. Como los vrtices de la lista de adyacencia estn
ordenados, los vrtices se visitan en el orden: v2 , v3 , v4 , v5 .
A continuacin se visitan todos los vrtices que estn a una
distancia 2 del vrtice v1 ,
Este proceso se facilita almacenando todos los vrtices adyacentes a
v1 en una estructura de cola. Dado que v2 fue el primer vrtice
adyacente a v1 que se visit, (y se almacen en cola), entonces se
exploran todos los vrtices adyacentes a v2 que no hayan sido
visitados: el nico es v6 .

El proceso se repite para v3 (el segundo vrtice adyacente a v1 ) lo


que da lugar a las visitas de v7 y v8 .
A continuacin se exploran los vrtices no visitados de v4 . No hay
ninguno.

Recorrido de Grafos representados como listas de adyacencia

Bsqueda en Amplitud

Bsqueda en Profundidad

Referencias

Descripcin

Bsqueda en amplitud (BFS) IV


Por ltimo, el nico vrtice no visitado de v5 es v9 , lo que completa
la bsqueda.
Las flechas rojas del grafo representan el recorrido usado en la estrategia
BFS.
Importante
La estructura de cola es adecuada, debido a que los vrtices se visitan en
el mismo orden en que aparecen en la lista de adyacencia.
Dado un vrtice inicial s el proceso es el siguiente (ver pg 383 de [1]):
1

Se marcan todos los vrtices del grafo como no visitados (F).

Se marca (V) y se visita s.

Se pone a s en la cola.

Mientras la cola no est vaca:

Se quita el primero de la cola, y se toma como vrtice actual

Recorrido de Grafos representados como listas de adyacencia

Bsqueda en Amplitud

Bsqueda en Profundidad

Referencias

Descripcin

Bsqueda en amplitud (BFS) V


6

Para cada vecino del vrtice actual:


Si el vecino no est marcado (F), entonces se visita y se marca (V).
Se actualiza el valor distancia del vecino
Se pone el vecino en la cola.

Los resultados del proceso se pueden representar en un rbol BFS de


caminos ms cortos o rbol de expansin:

El vrtice v1 es el vrtice raz. Los vrtices del rbol se examinan en orden


creciente de nmero de nivel y de izquierda a derecha en cada nivel.

Recorrido de Grafos representados como listas de adyacencia

Bsqueda en Amplitud

Bsqueda en Profundidad

Descripcin

Esquema de la presentacin
1

Recorrido de Grafos representados como listas de adyacencia


Introduccin
Listas de adyacencia

Bsqueda en Amplitud
Descripcin

Bsqueda en Profundidad
Descripcin

Referencias

Referencias

Recorrido de Grafos representados como listas de adyacencia

Bsqueda en Amplitud

Bsqueda en Profundidad

Referencias

Descripcin

Bsqueda en Profundidad (DFS) I


La estrategia DFS es como sigue: se toma un vrtice s como comienzo, y
se marca. A continuacin se toma un vrtice no marcado y adyacente a
s, el cual pasa a ser el nuevo vrtice de partida (se dejan por el momento
otros vrtices sin explorar). La bsqueda finaliza en un vrtice en que
todos los vrtices adyacentes estn marcados. Luego la bsqueda vuelve
al ltimo vrtice que todava tenga vrtices adyacentes sin marcar y as
sucesivamente. De forma ms precisa:
1

Se marcan todos los vrtices como no visitados

Se invoca el procedimiento DFS para el vrtice inicial s

Procedimiento DFS:
1

Se marca y visita s.

Para cada vecino w de s:


Si w no est marcado entonces se invoca el procedimiento DFS
para w.

Recorrido de Grafos representados como listas de adyacencia

Bsqueda en Amplitud

Bsqueda en Profundidad

Referencias

Descripcin

Bsqueda en Profundidad (DFS) II


Se inicia con v1 , se marca y se
visita.
El primer vrtice en la lista de
adyacencia de v1 es v2 , se marca y
se visita.
El primer vrtice en la lista de
adyacencia de v2 es v1 , pero ya se
ha visitado entonces se pasa al
siguiente vrtice de la lista que es
v3 , se marca y se visita.
El primer vrtice en la lista de
adyacencia de v3 (sin marcar) es v4 ,
ya que v1 y v2 ya se visitaron, se
marca y se visita v4 .

Recorrido de Grafos representados como listas de adyacencia

Bsqueda en Amplitud

Bsqueda en Profundidad

Referencias

Descripcin

Bsqueda en Profundidad (DFS) III


El primer vrtice en la lista de adyacencia de v4 sin marcar es v5 , se
marca y se visita.
El primer vrtice en la lista de adyacencia de v5 es v1 , que ya se
visit, sigue v4 , que tambin se visit, por lo tanto solo queda
marcar y visitar v9 .
A partir de v9 ya no hay vrtices por visitar, entonces vuelve al
vrtice v4 y se marca y visita a v8 .
De nuevo, ya no hay ms vrtices sin marcar, entonces se vuelva a
v3 y se marca y visita v7 .
Como v8 ya fue visitado, se regresa a v2 y se marca y visita a v6 .
Al comenzar con el vrtice v1 se obtuvo la sucesin de vrtices v1 ,
v2 , v3 , v4 , v5 , v9 , v8 , v7 , v6 .

Recorrido de Grafos representados como listas de adyacencia

Bsqueda en Amplitud

Bsqueda en Profundidad

Referencias

Descripcin

Bsqueda en Profundidad (DFS) IV


Importante
Existe una variante del procedimiento DFS que se enfoca en buscar un
ciclo que contenga a cierto vrtice v0 dentro de un grafo no dirigido. Ver
paginas 386 y 387 de [1] para la descripcin.

Recorrido de Grafos representados como listas de adyacencia

Bsqueda en Amplitud

Bsqueda en Profundidad

Referencias

Referencias
Grassmann WK, Tremblay JP. (1998) Matemtica Discreta y Lgica:
una perspectiva desde la ciencia de la computacin. Prentice Hall.
Madrid. (Se encuentra en la carpeta de dropbox)