用一个队列来存储要遍历的顶点。在迭代开始的时候,队列只含有距离为currDist的顶点,当添加距离为currDist的邻接点时,由于它们自队尾入队,因此这就保证它们直到所有距离为currDist的顶点都被处理之后才被处理。在距离为currDist处的最后一个顶点出队并被处理后,队列只含有距离为currDist+1的顶点,因此该过程将不断进行下去。只需要把开始的结点放入队列中以启动这个过程即可。
无权最短路径算法的伪代码
void Graph::unweighted( Vertex s)
{
Queue<Vertex> q;
for each Vertex v
v.dist=INFINITY;
s.dist=0;
q.enqueue( s );
while( !q.isEmpty( ) )
{
Vertex v=q.dequeue();
for each Vertex w adjacent to v
if( w.dist == INFINITY )
{
w.dist = v.dist + 1;
w.path=v;
q.enqueue(w);
}
}
}
本文介绍了一种用于寻找无权图中最短路径的算法。该算法通过使用队列来存储待处理的顶点,并从起始顶点开始逐步扩展,确保每次处理的顶点都是当前已知的最近顶点。这种方法可以有效地找到从起点到图中所有其他顶点的最短路径。

被折叠的 条评论
为什么被折叠?



