毕业论文

打赏
当前位置: 毕业论文 > 自动化 >

基于MapX的最短路径分析方法的设计与实现 (4)

时间:2018-03-07 16:07来源:毕业论文
3.2.1 穷举搜索 1)深度优先搜索法 对树的先根遍历的推广称为深度优先搜索法。其基本方法是:设有一图G,由其某一顶点v0出发。选择一个与顶点v0相邻并


3.2.1 穷举搜索
  1)深度优先搜索法
   对树的先根遍历的推广称为深度优先搜索法。其基本方法是:设有一图G,由其某一顶点v0出发。选择一个与顶点v0相邻并且从未被访问过的顶点vi访问。继而从vi出发,选择一个与vi相邻并且从未被访问过的顶点vj进行访问。依次继续。如果当前被访问过的顶点的所有邻接顶点都已经被访问过,则退回到已被访问的顶点序列中最后一个拥有未被访问的相邻顶点的顶点w,从w出发按同样的方法向前遍历,直到图中所有顶点都被访问[9]。则得其递归算法如下:
Boolean visited[MAX_VERTEX_NUM]; //访问标志数组
Status (*VisitFunc)(int v); //VisitFunc是访问函数,对图的每个顶点调用该函数
void DFSTraverse (Graph G, Status(*Visit)(int v)){
VisitFunc = Visit;
for(v=0; v<G.vexnum; ++v)
visited[v] = FALSE; //访问标志数组初始化
for(v=0; v<G.vexnum; ++v)
if(!visited[v])
DFS(G, v); //对尚未访问的顶点调用DFS
}
void DFS(Graph G, int v){ //从第v个顶点出发递归地深度优先遍历图G
visited[v]=TRUE; VisitFunc(v); //访问第v个顶点
for(w=FirstAdjVex(G,v); w>=0; w=NextAdjVex(G,v,w))
//FirstAdjVex返回v的第一个邻接顶点,若顶点在G中没有邻接顶点,则返回空(0)。
//若w是v的邻接顶点,NextAdjVex返回v的(相对于w的)下一个邻接顶点。
//若w是v的最后一个邻接点,则返回空(0)。
if(!visited[w])
DFS(G, w); //对v的尚未访问的邻接顶点w调用DFS
}
  2) 广度优先搜索法
树的按层次推广,称为图的广度优先搜索,其基本思想是:首先,访问初始顶点vi,将其标记为已经访问过,接着访问顶点vi的所以未被访问过的邻接点vi1,vi2,....,vit,并且将其均标记为已经访问,依照此法循环,直至图中所有和初始顶点vi有路径相通的顶点都已经被访问过为止。总结得其非递归算法如下:
Boolean visited[MAX_VERTEX_NUM]; //访问标志数组
Status (*VisitFunc)(int v); //VisitFunc是访问函数,对图的每个顶点调用该函数 基于MapX的最短路径分析方法的设计与实现 (4):http://www.751com.cn/zidonghua/lunwen_10730.html
------分隔线----------------------------
推荐内容