Hier ist der Standard-Pseudocode für die Breitensuche:
{ 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
Hier push
und pop
werden Warteschlangenoperationen angenommen. Aber was ist, wenn es sich um Stapeloperationen handelt? Besucht der resultierende Algorithmus Eckpunkte in der Reihenfolge der Tiefe zuerst?
Wenn Sie für den Kommentar "das ist trivial" gestimmt haben, würde ich Sie bitten zu erklären, warum es trivial ist. Ich finde das Problem ziemlich knifflig.
pop
wir durch einfaches Wechseln in einen Stapel oder eine Warteschlangenoperation dfs oder bfs erhalten. Es ist auch einfach, Pseudo-Code zu schreiben, für den es auf den ersten Blick so aussieht, als ob dies wahr ist, aber es ist nicht wahr. ics.uci.edu//~eppstein/161/960215.html ist eine relevante Referenz.