bfs en grafos

Download Bfs en grafos

If you can't read please download the document

Upload: oscar-jose

Post on 16-Apr-2017

489 views

Category:

Travel


0 download

TRANSCRIPT

Diapositiva 1

Lenguajes de Programacin

BFS en grafos

Expositores: Guillermo, Oscar y Alfonso

BFS (Breadth First Search)

BFS, Bsqueda en Anchura por sus siglas en ingles, es un algoritmo para recorrer obuscar elementos en un grafo (usado frecuentemente sobre arboles)Intuitivamente se comienza de la raz y se exploran todos los vecinos de este nodo, despus para cada uno de los vecinos se exploran sus respectivos vecinos adyacentesy as hasta que se recorra todo el rbol.

Para entender el funcionamiento el algoritmo BFS es necesario conocer algunos conceptos bsicos de la teora de graficas, vistos anteriormente en matemticas discretas.

Graficas o grafos

Una Grafica G consiste en un conjunto V de vrtices (o nodos) y un conjunto E de aristas (o arcos) tal que cada arista E se asocia con un par no ordenado de vrtices

Es una forma muy practica de modelar ciertos tipos de comportamiento, son ampliamente usadas en las areas de las ciencias de la computacin, qumica, ingeniera elctrica, economa, investigacin de operaciones ,etc.

Un ejemplo que utilizaremos donde se usan los grficos puede ser el siguiente mapa:

Formas de representar un grafo.

Ahora que conocemos bien las graficas, es hora de conocer las formas en que las podemos representar de una manera mas formal, para as poder trabajar con dichas graficas en la computadora.

Tenemos dos opciones para representar los grafos:

*Mediante una matriz de adyacencia.

*Mediante una lista de adyacencia.

Matriz de adyacencia

Considerando la siguiente grafica:

1

2

3

4

5

6

7

1

0

0

1

1

1

1

0

2

0

0

0

0

0

0

0

3

1

0

0

1

1

0

0

4

1

0

1

0

0

0

0

5

1

0

1

0

0

0

0

6

1

0

0

0

0

0

0

7

0

0

0

0

0

0

0

Esta seria su matriz de adyacencia.

En donde representamos cada uno de los caminos posibles entre nodo y nodo utilizando ceros y unos.

Lista de adyacencia

Considerando la siguiente grafica:

Esta seria su lista de adyacencia.

En donde representamos todos los posibles caminos entre nodos ,agrupados como una lista y a un lado todos los nodos vecinos.

Algoritmo BFS escrito en pseudocdigo

El algoritmo BFS requiere de una estructura auxiliar para almacenar el resultado de los nodos visitados, entonces haremos uso de una estructura tipo cola.

Definimos tres colores para un nodo: blanco no ha sido procesado. gris est en la cola de procesos. negro ya ha sido procesado. Encolar significa almacenar un elemento alfinal. Decolar significa remover el elemento en lacabeza.

Cola: nodo a.

Cola: nodos b y c.

Ningn elemento en la cola.

Cola: Nodos c, d y e

Cola: Nodos d, e, f y g

Representacin grafica

Algoritmo BFS escrito en pseudocdigo

funcin BFS(Grafo g, Nodo inicio, Nodo destino) {pintamos todos los nodos de G de blanco.encolamos iniciomientras que an haya nodos por procesar {decolamos el nodo actualsi actual == destino {retornamos XITO;}para cada vecino de actual {si el nodo es blanco {encolamos vecino;}}pintamos actual de negro} // fin ciclo de procesosretornamos FALLO;}

Implementacin en lenguaje C++ mediante una matriz de adyacencia.

Dado el siguiente grafo

Obtenemos su matriz de adyacencia

Implementacin en lenguaje C++ mediante una matriz de adyacencia.

Referencias Bibliogrficas.

Matemticas Discretas- 6 Edicin. Richard Johnsonbaugh.

Estructuras de Datos-3 Edicin. Osvaldo Cairo y Silvia Guardati.

Breadth First Search-(Documento en lnea) Carlos Obregn, [email protected]

Algoritmos basicos de grafos- (Documento en linea) Ernesto Coto ISSN 1316-6239

Bsqueda en anchura-Wikipedia-(Documento en linea)

http://es.wikipedia.org/wiki/B%C3%BAsqueda_en_anchura