Floyd算法讲解与代码实现
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
代码实现
• • • • • • D={Max_long}; for(k=1;k<=n;k++) for(i=1;i<=n;i++) for(j=1;j<=n;j++) if(d[i][j]>d[i][k]+d[k][j]) d[i][j]=d[i][k]+d[k][j];
Fra Baidu bibliotek
Floyd
佛洛依德
基本思想
• 采用的是(松弛技术),对在i和j之间的所有其他点 进行一次松弛。所以时间复杂度为O(n^3); • 其状态转移方程如下: map[i,j]:=min{map[i,k]+map[k,j],map[i,j]} • map[i,j]表示i到j的最短距离,K是穷举i,j的断点, map[n,n]初值应该为0,或者按照题目意思来做。 • 当然,如果这条路没有通的话,还必须特殊处理, 比如没有map[i,k]这条路