单源最短路径问题文档格式.doc
- 文档编号:14622383
- 上传时间:2022-10-23
- 格式:DOC
- 页数:4
- 大小:100.50KB
单源最短路径问题文档格式.doc
《单源最短路径问题文档格式.doc》由会员分享,可在线阅读,更多相关《单源最短路径问题文档格式.doc(4页珍藏版)》请在冰豆网上搜索。
2)搜索方式的不同:
回溯法以深度优先的方式搜索解空间树,而分支限界法则以广度优先或以最小耗费优先的方式搜索解空间树。
2、分支限界法基本思想:
分支限界法常以广度优先或以最小耗费(最大效益)优先的方式搜索问题的解空间树。
在分支限界法中,每一个活结点只有一次机会成为扩展结点。
活结点一旦成为扩展结点,就一次性产生其所有儿子结点。
在这些儿子结点中,导致不可行解或导致非最优解的儿子结点被舍弃,其余儿子结点被加入活结点表中。
此后,从活结点表中取下一结点成为当前扩展结点,并重复上述结点扩展过程。
这个过程一直持续到找到所需的解或活结点表为空时为止。
3、常见的两种分支限界法:
1)队列式(FIFO)分支限界法
按照队列先进先出(FIFO)原则选取下一个节点为扩展节点。
2)优先队列式分支限界法
按照优先队列中规定的优先级选取优先级最高的节点成为当前扩展节点。
四、程序代码
#include<
iostream>
usingnamespacestd;
intmatrix[100][100];
//邻接矩阵
boolvisited[100];
//标记数组
intdist[100];
//源点到顶点i的最短距离
intpath[100];
//记录最短路的路径
intsource;
//源点
intvertex_num;
//顶点数
intedge_num;
//边数
intdestination;
//终结点
voidDijkstra(intsource)
{
memset(visited,0,sizeof(visited));
//初始化标记数组
visited[source]=true;
for(inti=0;
i<
vertex_num;
i++)
{
dist[i]=matrix[source][i];
path[i]=source;
}
intmin_cost;
//权值最小
intmin_cost_index;
//权值最小的下标
for(inti=1;
i++)//找到源点到另外vertex_num-1个点的最短路径
min_cost=INT_MAX;
for(intj=0;
j<
j++)
{
if(visited[j]==false&
&
dist[j]<
min_cost)//找到权值最小
{
min_cost=dist[j];
min_cost_index=j;
}
}
visited[min_cost_index]=true;
//该点已找到,进行标记
j++)//更新dist数组
matrix[min_cost_index][j]!
=INT_MAX&
//确保两点之间有边
matrix[min_cost_index][j]+min_cost<
dist[j])
dist[j]=matrix[min_cost_index][j]+min_cost;
path[j]=min_cost_index;
}
intmain()
cout<
<
"
请输入图的顶点数(<
100):
"
;
cin>
>
请输入图的边数:
edge_num;
for(intj=0;
matrix[i][j]=(i!
=j)?
INT_MAX:
0;
//初始化matrix数组
请输入边的信息:
\n"
intu,v,w;
cout<
请输入第"
<
i+1<
条边的信息(中间用空格隔开):
cin>
u>
v>
w;
matrix[u][v]=matrix[v][u]=w;
请输入源点(<
vertex_num<
):
source;
Dijkstra(source);
请输入终结点(<
destination;
source<
到"
destination<
最短距离是:
dist[destination]<
,路径是:
intt=path[destination];
while(t!
=source)
--"
t;
t=path[t];
endl;
return0;
五、结果运行与分析
本例用使迪杰斯特拉算法来求单源最短路径,也即采用优先队列式分支限界法,按照优先队列中规定的优先级选取优先级最高的节点成为当前扩展节点。
选定源节点后,从源节点开始扩展,并将其子节点按路径长度大小依次存于栈中,每次从栈顶弹出节点作为扩展节点,利用限界来剪去相应的节点。
六、心得与体会
通过这次实验,对迪杰斯特拉算法求解单源最短路径问题做了回顾,上学期修数据结构是已经了解,但是时间长了没有练习就基本忘记了,通过这次实验,更加深了对该算法的印象,也对动态规划做了回顾。
本次实验最重要的还是分支限界法,使用限界,可以有效减小工作量,提高效率。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单源最短 路径 问题