广度优先遍历有向图与无向图
breadth first traversal directed vs undirected graph
有向图和无向图上的 bfs 在实现上有何不同。
我在网上找到了以下伪代码。我对无向图没问题。但不知道如何为有向图实现它。
frontier = new Queue()
mark root visited (set root.distance = 0)
frontier.push(root)
while frontier not empty {
Vertex v = frontier.pop()
for each successor v' of v {
if v' unvisited {
frontier.push(v')
mark v' visited (v'.distance = v.distance + 1)
}
}
}
伪代码中的实现是相同的,除了 successor
的概念对于无向图意味着 neighbor 而 child(或类似的)用于有向图。
有向图和无向图上的 bfs 在实现上有何不同。
我在网上找到了以下伪代码。我对无向图没问题。但不知道如何为有向图实现它。
frontier = new Queue()
mark root visited (set root.distance = 0)
frontier.push(root)
while frontier not empty {
Vertex v = frontier.pop()
for each successor v' of v {
if v' unvisited {
frontier.push(v')
mark v' visited (v'.distance = v.distance + 1)
}
}
}
伪代码中的实现是相同的,除了 successor
的概念对于无向图意味着 neighbor 而 child(或类似的)用于有向图。