bfs en grafos

Download Bfs en grafos

If you can't read please download the document

Upload: oscar-jose

Post on 19-Jun-2015

672 views

Category:

Education


0 download

TRANSCRIPT

  • 1. Lenguajes de Programacin BFS en grafos Expositores: Guillermo, Oscar y Alfonso

2. BFS (Breadth First Search) BFS, Bsqueda en Anchura por sus siglas en ingles, es un algoritmo para recorrer o buscar 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 adyacentes y 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. 3. 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: 4. 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. 5. 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. 6. 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. 7. 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 al final. Decolar significa remover el elemento en la cabeza. 8. 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 9. Algoritmo BFS escrito en pseudocdigo funcin BFS(Grafo g, Nodo inicio, Nodo destino) { pintamos todos los nodos de G de blanco. encolamos inicio mientras que an haya nodos por procesar { decolamos el nodo actual si actual == destino { retornamos XITO; } para cada vecino de actual { si el nodo es blanco { encolamos vecino; } } pintamos actual de negro } // fin ciclo de procesos retornamos FALLO; } 10. Implementacin en lenguaje C++ mediante una matriz de adyacencia. Dado el siguiente grafo Obtenemos su matriz de adyacencia 11. Implementacin en lenguaje C++ mediante una matriz de adyacencia. 12. 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