Curso amplio en The Graphs (BFS)

La ruta de ancho del gráfico (BFS) es un algoritmo que se utiliza para examinar las estructuras de datos del gráfico. BFS implementa una estrategia específica para visitar todas las cimas de un gráfico

BFS comienza con una cumbre, luego comprueba a los vecinos de la cumbre inicial, luego a los vecinos de los vecinos, etc.

En la entrada del algoritmo está el gráfico G y un punto de partida D para el que la distancia se considera 0.

Fuera del algoritmo se calculan todas las distancias entre la parte superior D y cada parte superior del gráfico G, así como el árbol que cubre si el gráfico G está relacionado (es decir, para cualquier par de topthere hay un camino entre ellos en el gráfico).

Se utilizan las siguientes tablas:

  • Distancia[.]: Almacena la distancia entre D (parte superior inicial) y otra parte superior del gráfico.
  • Padre: A[.]lmacena el padre en la parte superior de una parte superior del gráfico recorrido.
  • Visita[.]: Almacena el estado de la visita de la cumbre, posible lista de valores 0:todavía no visitados,1:Visita en curso,2:Visitado

Para un carril F se utilizan las siguientes funciones:

  • Primero (F): Devuelve el elemento a la parte superior del carril F sin quitarlo.
  • Dequeue(F): Devuelve el elemento a la parte superior de la línea F quitándolo.
  • Anexar (F, A): Coloque el elemento A en el carril F en la parte posterior de la línea.

Los pasos son:

  • Fase de inicialización
    • 1. Por todas las cumbres
      • Visita – 0 (Aún no visitado)
      • Pere – null (Inicializa la tabla)
      • Distancia – -1
    • 2. Anexar (F,D) (añade el elemento inicial)
    • 3. Distanc[R]ia – 0 (premisa de inicio)
  • Fase de acción (ruta del gráfico G)
    • Mientras la línea F no esté vacía
      • t – Primero (F)
      • Para todos los vecinos v t hacer
        • Si la visi[v]ta 0 (la cumbre no visitada) entonces
          • Visita[v] – 1 (Visita en curso)
          • Distanci[v]a – Distanci[t]a – 1
          • Padre[v] – t
          • Anexar (F,v)
      • Dequeue (F)
      • Visi[t]ta 2

Si detallamos los pasos con el caso del gráfico de ejemplo a continuación.

Fase de inicialización:

Inicializando el elemento A es el elemento inicial remoto 0, se colorea de color naranja para indicar que la visita está en curso.

Visita de los vecinos de la Cumbre A (Visita de la Cumbre B)

La Cumbre B pasa durante la visita, se calcula su distancia de A y se añade la cumbre A como cumbre paterna. Se añade a la línea.

Visita de los vecinos de la Cumbre A (Visita cumbre C)

La Cumbre C pasa durante la visita, su distancia de A se calcula y la cumbre A se añade como la cumbre padre. Se añade a la línea.

Marcar A como visitado y eliminar la cola

A se marca como visitado (color azul) y se elimina de la cabeza de la cola

Visita de los vecinos de la Cumbre B (Visita de la Cumbre D)

La cumbre C está marcada ya que durante la visita no se visitará, se visita la cumbre D se calcula su distancia 2 y se observa la cumbre B como padre de la cumbre B.

Marcar B y C como visitados y eliminar la cola

B se marca como visitado (color azul) y se quita de la cabeza de la lín
eaC se marca como visitado (color azul) y se quita de la cabeza de la cola (su vecino D se marca durante la visita)

Marcar D como visitado y final del algoritmo

D se marca como visitado (color azul) y se elimina de la cabeza de la cola.
Fin del algoritmo

Construir el árbol que cubre si el gráfico está relacionado

Si el gráfico está relacionado, el resultado de la ruta se despliega y el árbol se cubre con el gráfico que contiene todos los picos.

Aplicación: La ruta de anchura de un gráfico (BFS) es útil para:

  • Compruebe si un gráfico está relacionado (todas las tapas se marcan como visitadas al final del algoritmo).
  • Calcular distancias desde un pico determinado
  • Construir un árbol que cubra un gráfico
Retour en haut