广度优先搜索(BFS)算法求解单源最短路径问题

  广度优先搜索查找最短路径是对于无权图而言的。使用BFS可以求解单源最短路径问题,这是由广度优先搜索总是按照距离由近至远来遍历图中每个顶点的性质决定的。

广度优先搜索算法求解单源最短路径伪代码如下:

/*-----------------广度优先搜索求单源最短路径-------------------*/
int d[Maxsize];  //d数组记录从起始顶点v到各个顶点最短路径
int path[Maxsize];  //path数组记录最短路径从哪个顶点过来
int visited[Maxsize]; //访问标记数组
void BFS_MIN_Distance(Graph G,int v)
{
	for(int i=0;i<G.vexnum;i++)
	{
		d[i]=;		//初始化路径长度
		path[i]=-1;	//初始化路径
	}
	d[v]=0;			//起始顶点路径长度为0
	visited[v]=1;	//标记起始顶点已访问
	EnQueue(Q,v);	//起始顶点入队
	while(!isEmpty(Q))
	{
		DelQueue(Q,v);		//队头元素出队
		for(int w=FirstNeighbor(G,v);w>=0;w=NextNeighbor(G,v,w))
			if(!visited[w])
			{
				d[w]=d[v]+1;		//路径长度+1
				path[w]=v;			//最短路径从顶点v到顶点w
				visited[w]=1;		//标记已访问
				EnQueue(Q,w);		//将顶点w入队
			}
	}
}
/*-----------------------------------------------*/

你可能感兴趣的:(算法,宽度优先,图论,数据结构,c语言)