有向图的最短路径之Floyd算法 带权有向图最短路径

顶点对之间的最短路径是指:对于给定的有向网G=(V,E),要对G中任意一对顶点有序对V、W(V≠W),找出V到W的最短距离和W到V的最短距离。

解决此问题的一个有效方法是:轮流以每一个顶点为源点,重复执行迪杰斯特拉算法n次,即可求得每一对顶点之间的最短路径,总的时间复杂度为O(n3)。

弗洛伊德(Floyd)提出了另外一个求图中任意两顶点之间最短路径的算法,虽然其时间复杂度也是O(n3),但其算法的形式更简单,易于理解和编程。

算法基本思想:

有向图的最短路径之Floyd算法 带权有向图最短路径

弗洛伊德算法仍然使用图的邻接矩阵arcs[n+1][n+1]来存储带权有向图。算法的基本思想是:设置一个n x n的矩阵A(k),其中除对角线的元素都等于0外,其它元素a(k)[i][j]表示顶点i到顶点j的路径长度,K表示运算步骤。开始时,以任意两个顶点之间的有向边的权值作为路径长度,没有有向边时,路径长度为∞,当K=0时,A (0)[i][j]=arcs[i][j],以后逐步尝试在原路径中加入其它顶点作为中间顶点,如果增加中间顶点后,得到的路径比原来的路径长度减少了,则以此新路径代替原路径,修改矩阵元素。

#include<stdio.h>

#defineMAX 65535

voidFloyd()//若不需知道路径经过的点path[i][j],程序则不需要path[i][j]

{

intc[6][6]={{0,50,10,MAX,45,MAX},{MAX,0,15,MAX,10,MAX},{20,MAX,0,15,MAX,MAX},

{MAX,20,MAX,0,35,MAX},{MAX,MAX,MAX,30,0,MAX}, {MAX,MAX,MAX,3,MAX,0}};

intd[6][6],path[6][6];

intn=6;

inti,j,k;

for(i=0;i<n;i++)

{

for(j=0;j<n;j++)

{

d[i][j]=c[i][j];

if((i!=j)&&c[i][j]<MAX)

path[i][j]=i;

else path[i][j]=-1;

}

}

for(k=0;k<n;k++)

for(i=0;i<n;i++)

for(j=0;j<n;j++)

{

if(d[i][k]+c[k][j]<d[i][j])

{

d[i][j]=d[i][k]+c[k][j];

path[i][j]=path[k][j];

}

}

printf("%d",d[0][1]);

printf("%d",d[0][4]);

printf("%d",d[2][4]);

}

int main()

{

Floyd();

return0;

}

  

爱华网本文地址 » http://www.413yy.cn/a/25101014/234602.html

更多阅读

千纸鹤的简单折法之图文并茂 千纸鹤的折法图解

千纸鹤的简单折法之图文并茂——简介千纸鹤最早是来源于日本的,最初人们折千纸鹤是为了祈求亲人早日康复,给予自己最美好的祝愿,而如今这个美好的事物被赋予了更多更有意义的承载,爱情,相比许多男性朋友在七夕情人节的时候送女友什么礼物

《包青天之碧血丹心》中我对庞太师的看法 包青天之碧血丹心40集

纵观全剧这是给我触动最大的地方:庞太师对庞福说了“开封府!”继而对天说了“庞昱啊,爹实在没办法。为了救你妹妹,为了救爹自己。爹只能是对不起你了。爹必须去求杀你的仇人,只有去求那包黑子,才能救我们全家!”听了这句话,给我触动很大,众所

懒人瘦腿的最快方法(图) 懒人瘦腿

核心提示:懒人瘦腿的最快方法分三步骤,一是坚持按摩;二是做一些基本的瘦腿动作,针对性强,需要长期坚持;三是强化瘦腿效果,打造柔美曲线。热身运动:拉伸和拉筋一、穴位按摩三个穴位:小腿肚(小腿围最粗的位置)小腿肚下方膝盖下方3cm刮痧棒刮腿

floyd最短路算法 floyd算法流程图

Floyd最短路径算法(转)在图论中经常会遇到这样的问题,在一个有向图里,求出任意两个节点之间的最短距离。我们在离散数学、数据结构课上都遇到过这个问题,在计算机网络里介绍网络层的时候好像也遇到过这个问题,记不请了...但是书本上一律采

出没在“宇宙最寒冷之地”的幽灵 熊出没之宇宙大冒险

2013.10.31回力棒星云是宇宙中已知的最寒冷之地。天文学家们运用设在智利的一台射电望远镜对它展开了新观测,以便更多地了解其寒冷的性状,并确定其怪异的鬼怪模样下的真实形状。回力棒星云(Boomerangnebula)在宇宙中寒意袭人,其

声明:《有向图的最短路径之Floyd算法 带权有向图最短路径》为网友隱居生活灬分享!如侵犯到您的合法权益请联系我们删除