送分来了,dijkstra看不懂了

xxxl 2006-07-05 11:19:04
清华数据结构这本书上的算法
---------------------------------------------------------------------------------
Void shortestpath_DIJ(mgraph G,int v0,pathmatrix &P,shortpathtable &D){

//用Dijkstra算法求有向图G的v0顶点到其余顶点v的最短路径P[v]及其带权长度D[v]。

//若P[v][w]为 TRUE,则w是从v0到v当前求得最短路径上的顶点。

//final[v] 为TRUE当且仅当v∈S,即已经求得从 v0到v的最短路径。

For (v=0;v<G.vexnum;++v){

Final[v]=FALSE;D[v]=G.arcs[v0][v];

For(w=0;w<G.vexnum;++w) P[v][w]=false; //设空路径

If (D[v]<INFINITY) {P[v][v0]=true;P[v][v]=true;}

}//for

D[v0]=0;final[v0]=true; //初始化,v0顶点属于S集

//开始主循环,每次求得v0到某个顶点v的最短路径,并把顶点v加到集合S中

for(I=1;I<G.vexnum;++I){ //其余G.vexnum-1个顶点

min=INFINITY; //当前所知离v0顶点的最近距离

for (w=0;w<G.vexnum;++w)

if (!final[w]) //顶点w在V-S中

if (D[w]<min) {v=w;min=D[w];} //顶点w离顶点v0更近

final[v]=true; //离顶点v0最近的v加入集合S

for (w=0;w<G.VEXNUM;++w) //更新当前最短路径及距离

if (!final[w]&&(min+G.arcs[v][w]<D[w])){ // 修改D[w]和P[w],w∈V-S

D[w]=min+G.arcs[v][w];

P[w]=P[v];

P[w][v]=true; //P[w]=P[v]+[w]

}//if

}//for

}//shortestpath_DIJ


算法的基本思想看懂了,就是不知道P[]和P[][]到底有什么用,希望各位大大解释的清除一些
------------------------------------------------------------
If (D[v]<INFINITY) {P[v][v0]=true;P[v][v]=true;} //不懂
-----------------------------------------------------------------------
P[w]=P[v];
P[w][v]=true; //P[w]=P[v]+[w] 也不懂
---------------------------------------------------------------


...全文
348 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xxxl 2006-07-05
  • 打赏
  • 举报
回复
各位大大帮帮忙

xxxl 2006-07-05
  • 打赏
  • 举报
回复
我总觉得p是用来记录前驱结点的 p[w] = p[v]

着急,这一章的最短路径把我卡了好久了
xxxl 2006-07-05
  • 打赏
  • 举报
回复
pathmatrix &P //参数p的到底是个什么结构,是个数组吗


恕我愚笨
xxxl 2006-07-05
  • 打赏
  • 举报
回复
P[w]=P[v]; //是用来干什么的

//P[w]=P[v]+[w]怎么理解
boylez 2006-07-05
  • 打赏
  • 举报
回复
楼上很负责,赞
swzqqni 2006-07-05
  • 打赏
  • 举报
回复
p[]和p[][]是用来标记每个点是否在各条最短路径里面的
例如p[1][2]=true 就表明点2在点v0到点1的最短路径的点集合里面
在开始初始化程序时 If (D[v]<INFINITY) {P[v][v0]=true;P[v][v]=true;}就是说当D[v]的值小于无穷大时,v和v0肯定有路径,因此 P[v][v0]=true;P[v][v]=true;
更新当前最短路径及距离时,加入有一条路径上的D[v]更新了,表明点v在该条路径的最短路径集合里面,因此P[w][v]=true 。

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧