Algoritmo de Búsqueda en Anchura - Breadth-first Search


El algoritmo Breadth-first Search(BFS) sirve para recorrer todos lo nodos o vértices de un árbol o de un grafo de manera sistemática. 
Es adecuado especialmente para resolver problemas de optimización, en los que se deba elegir la mejor solución entre varias posibles. 

Al igual que en la búsqueda en profundidad se comienza en un vértice v (la raíz) que es el primer vértice activo. En el siguiente paso se etiquetan como visitados todos los vecinos del vértice activo que no han sido etiquetados. Se continúa etiquetando todos los vecinos de los hijos de v (que no hayan sido visitados aún). 

En este proceso nunca se visita un vértice dos veces por lo que se construye un grafo sin ciclos, que será un árbol generador de la componente conexa que contiene a v. Sea G(V, E) un grafo conexo y v un vértice de V. 

El algoritmo de búsqueda en anchura puede detallarse así: 

  1. Designamos a v como vértice activo y como raíz del árbol generador T que se construirá. Se le asigna a v la etiqueta 0.
  2. Sea i=0 y S={v}. 
  3. Hallar el conjunto M de todos los vértices no etiquetados que son adyacentes a algún vértice de S. 
  4. Si M es vacío el algoritmo termina. En caso contrario, se etiquetan todos los vértices de M con i+1, se añaden a T las aristas entre cada vértice de S y su vecino en M y se hace S=M.
  5. i=i+1 y volver al paso 3. Al terminar el proceso se habrá construido un árbol generador del grafo inicial. 
En caso de G no ser conexo, habría que modificar el algoritmo para encontrar un árbol generador de cada componente conexa de G. La complejidad de este algoritmo es O(max{n, m}). 

Pseudo-código formal:




Unknown

¡Hello world!

No hay comentarios:

Publicar un comentario