Đây là mã giả tiêu chuẩn cho tìm kiếm đầu tiên theo chiều rộng:
{ 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
Ở đây push
và pop
được coi là hoạt động xếp hàng. Nhưng nếu chúng là các hoạt động ngăn xếp thì sao? Liệu thuật toán kết quả truy cập các đỉnh theo thứ tự độ sâu đầu tiên?
Nếu bạn bỏ phiếu cho nhận xét "đây là chuyện nhỏ", tôi sẽ yêu cầu bạn giải thích tại sao nó lại tầm thường. Tôi thấy vấn đề khá khó khăn.
5
Tôi đã thấy các sinh viên vật lộn với điều này, vì vậy tôi không nghĩ nó quá đơn giản. Tuy nhiên, câu trả lời nào chứa nhiều hơn "Có" hoặc "Không"? Độ chi tiết mong muốn không rõ ràng từ câu hỏi.
—
Raphael
"Có" sẽ đi kèm với một lập luận thuyết phục; "Không" sẽ đi kèm với một ví dụ mẫu. Nhưng có những câu trả lời tốt hơn là có / không một khi bạn hiểu chuyện gì đang xảy ra ...
—
rgrig
@Joe, Dave: vui lòng xem cuộc thảo luận meta tiếp theo
—
Gilles 'SO- ngừng trở thành ác quỷ'
Có thể viết pseudo-code để chỉ đơn giản bằng cách thay đổi
—
Joe
pop
để một chồng hoặc một hoạt động hàng đợi, chúng tôi nhận dfs hoặc BFS. Thật dễ dàng để viết mã giả mà lần đầu tiên nó xuất hiện rằng điều này là đúng, nhưng thực tế không phải vậy. ics.uci.edu//~eppstein/161/960215.html là một tài liệu tham khảo có liên quan.