• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content

Loading…

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

Like this presentation? Why not share!

Bfs en grafos

on

  • 619 views

 

Statistics

Views

Total Views
619
Views on SlideShare
619
Embed Views
0

Actions

Likes
0
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Bfs en grafos Bfs en grafos Presentation Transcript

    • Lenguajes de Programación “ BFS en grafos”
      Expositores: Guillermo, Oscar y Alfonso
    • BFS (Breadth First Search)
      BFS, Búsqueda 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 raíz y se exploran todos los vecinos de este nodo, después 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 básicos de la teoría de graficas, vistos anteriormente en matemáticas discretas.
    • Graficas o grafos
      Una Grafica G consiste en un conjunto V de vértices (o nodos) y un conjunto E de aristas (o arcos) tal que cada arista E se asocia con un par no ordenado de vértices Es una forma muy practica de modelar ciertos tipos de comportamiento, son ampliamente usadas en las areas de las ciencias de la computación, química, ingeniería eléctrica, economía, investigación de operaciones ,etc. Un ejemplo que utilizaremos donde se usan los gráficos 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.
    • 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
      Matriz de adyacencia
      Considerando la siguiente grafica:
      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 pseudocódigo
      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.
    • Cola: nodo a .
      Cola: nodos b y c .
      Ningún elemento en la cola.
      Cola: Nodos c , d y e
      Cola: Nodos d , e, f y g
      Representación grafica
    • Algoritmo BFS escrito en pseudocódigo
      función BFS(Grafo g, Nodo inicio, Nodo destino) { pintamos todos los nodos de G de blanco. encolamos inicio mientras que aún 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; }
    • Implementación en lenguaje C++ mediante
    • una matriz de adyacencia.
      Dado el siguiente grafo
      Obtenemos su matriz de adyacencia
    • Implementación en lenguaje C++ mediante una matriz de adyacencia.
  •  
    • Referencias Bibliográficas.
      “ Matemáticas Discretas ”- 6 Edición. Richard Johnsonbaugh. “ Estructuras de Datos ”-3 Edición. Osvaldo Cairo y Silvia Guardati. “ Breadth First Search ”-(Documento en línea) Carlos Obregón, [email_address] “ Algoritmos basicos de grafos”- (Documento en linea) Ernesto Coto ISSN 1316-6239 “ Búsqueda en anchura-Wikipedia ”-(Documento en linea)
      http://es.wikipedia.org/wiki/B%C3%BAsqueda_en_anchura