Aquí está el pseudocódigo estándar para la primera búsqueda de amplitud:
{ seen(x) is false for all x at this point }
push(q, x0)
seen(x0) := true
while (!empty(q))
x := pop(q)
visit(x)
for each y reachable from x by one edge
if not seen(y)
push(q, y)
seen(y) := true
Aquí push
y pop
se supone que son operaciones de cola. Pero, ¿y si son operaciones de pila? ¿El algoritmo resultante visita los vértices en primer orden de profundidad?
Si votó por el comentario "esto es trivial", le pido que explique por qué es trivial. El problema me parece bastante complicado.
55
He visto a estudiantes luchar con esto, así que no creo que sea estrictamente demasiado simple. Sin embargo, ¿qué más que "Sí" o "No" debe contener una respuesta? La granularidad deseada no está clara a partir de la pregunta.
—
Raphael
"Sí" vendría con un argumento convincente; "no" vendría con un contraejemplo. Pero hay mejores respuestas que sí / no una vez que entiendes lo que está pasando ...
—
rgrig
@ Joe, Dave: por favor vea la meta discusión que sigue
—
Gilles 'SO- deja de ser malvado'
Es posible escribir un pseudocódigo para que simplemente cambiando
—
Joe
pop
a una operación de pila o de cola, obtengamos dfs o bfs. También es fácil escribir pseudocódigo para el que al principio parece que esto es cierto, pero no lo es. ics.uci.edu//~eppstein/161/960215.html es una referencia relevante.