¿Qué es una primera búsqueda amplia?

Permítanme tratar de explicar esto con un modelo que está tan lejos de las realidades básicas que solo un teórico de los números puede pensar en ello. (A menos, por supuesto, que usted sea un economista del lado de la oferta).

Es 2057, y los hegemonistas, cansados ​​de dominar el mundo, quieren colonizar todo el sistema solar. La distancia es la única restricción. Gases nocivos, temperaturas extremas, internet lento: tráigalos.

Así que estamos mirando los otros siete planetas de nuestro sistema solar y dos satélites cada uno para los cinco que tienen satélites. Como primer paso, tenemos una sonda para plantar banderas que hace exactamente lo que usted cree que hace. (¿Qué bandera, sin embargo? Digamos que las Naciones Unidas prevalecieron con gran dificultad).

Ahora aquí está el itinerario si la sonda hiciera una primera búsqueda en profundidad.

Venus
Mercurio
Marte, Phobos, Deimos
Júpiter, Ganímedes, Europa
Saturno, Titán, Rea
Urano, Oberón, Titania
Neptuno, Tritón, Nereida

Y esto es lo que sucede si la sonda hiciera una primera búsqueda amplia.

Venus
Mercurio
Marte
Júpiter
Saturno
Urano
Neptuno
Phobos, Deimos
Ganímedes, Europa
Titán, Rea
Oberon, Titania
Tritón, Nereida

La primera búsqueda de amplitud es un algoritmo de recorrido de gráficos en el que el nodo fuente se expande primero y luego los vecinos del nodo fuente se expanden a continuación, luego los vecinos de los vecinos y así sucesivamente.

El primer algoritmo de búsqueda de amplitud es una instancia del algoritmo de búsqueda de gráficos.

Inicialmente, la cola solo contiene el vértice de origen y se marca como se ve.

Luego repita los siguientes pasos hasta que la cola esté vacía:

  1. Eliminar el nodo de la cola.
  2. Busque el vértice no visitado del nodo eliminado. inserte el nodo no visitado en la cola y marque como visitado.

Pseudocódigo

BFS (g, s)
crear una cola Q
Q.encueue (s)
marque s como visitado.

while (Q no está vacío)

v = Q.dequeue () // elimina el elemento superior

para todos los vecinos w de v en el Gráfico G
si no se visita w
Q.enqueue (w)
marque w como visitado.

Explicación: Programmingz [1]

Notas al pie

[1] Algoritmo de gráfico BFS (con código en C, C ++, Java y Python)

Imagina un árbol. Comienza desde un solo nodo raíz, luego cada nodo tiene dos hijos. Cada nodo tiene un número escrito en él. Ahora, pregunto, ¿qué nodo tiene el número 57? En la búsqueda de amplitud primero, verifica la raíz, luego los hijos, luego los nietos, etc. En cada profundidad, buscas en todos los hermanos. En la búsqueda de profundidad primero, busca el primer hijo, luego su primer hijo, y así sucesivamente por el borde de la estructura del árbol hasta que no pueda profundizar más, y solo entonces comienza a verificar a los hermanos.

Si está buscando en una estructura jerárquica, significa que buscará una coincidencia en todos los elementos de un nivel antes de pasar al siguiente nivel.

Por supuesto, Wikipedia también lo sabe:

Búsqueda de amplitud

Es cuando primero busca a sus vecinos, luego a los vecinos de sus vecinos, luego a los vecinos de sus vecinos, etc., en ese orden.