Oto standardowy pseudokod pierwszego wyszukiwania szerokości:
{ 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
Tutaj push
i pop
zakłada się, że są to operacje kolejkowe. Ale co jeśli są operacjami stosowymi? Czy wynikowy algorytm odwiedza wierzchołki w pierwszej kolejności według głębokości?
Jeśli głosowałeś na komentarz „to jest trywialne”, proszę o wyjaśnienie, dlaczego jest to trywialne. Uważam, że problem jest dość trudny.
pop
do operacji stosu lub kolejki otrzymaliśmy dfs lub bfs. Łatwo jest również napisać pseudo-kod, dla którego na pierwszy rzut oka wydaje się, że to prawda, ale tak nie jest. ics.uci.edu//~eppstein/161/960215.html to odpowiednie odniesienie.