弗洛伊德算法(Floyd-Warshall)
admin
2024-04-14 15:18:25
0

预计阅读时间:10分钟

一、简介

       弗洛伊德算法又名插点法,是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法。

       弗洛伊德算法是一种在具有正或负边缘权重但没有负周期的加权图中找到最短路径的算法。算法的单个执行将找到所有顶点对之间的最短路径的长度(加权)。 虽然它不返回路径本身的细节,但是可以通过对算法的简单修改来重建路径。 该算法的版本也可用于查找关系R的传递闭包,或在加权图中所有顶点对之间的最宽路径。

二、核心思路

路径矩阵

        即通过一个图的权值矩阵求出它的每两点间的最短路径矩阵。 

        从图的带权临接A=[a(i,j)] n×n开始,迭代地进行n次更新,即由矩阵D(0)=A,按一个公式,构造出矩阵D(1);又用同样地公式由D(1)构造出D(2);……;最后又用同样的公式由D(n-1)构造出矩阵D(n)。矩阵D(n)的i行j列元素便是i号顶点到j号顶点的最短路径长度,称D(n)为图的距离矩阵,同时还可引入一个后继节点矩阵path来记录两点间的最短路径。

状态转移方程

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]这条路。

过程

  1. 从任意一条单边路径开始。所有两点之间的距离是边的权,如果两点之间没有边相连,则权为无穷大。
  2. 对于每一对顶点 u 和 v,看看是否存在一个顶点 w 使得从 u 到 w 再到 v 比已知的路径更短。如果是更新它。

三、优缺点及时间空间复杂度 

优点:简单。

缺点:时间复杂度比较高。

时间复杂度:O(n^3)

空间复杂度:O(n^2)

四、参考代码 

声明:以下内容来自Floyd算法_百度百科

#include
#include
using namespace std;
const int &INF=100000000;
void floyd(vector > &distmap,//可被更新的邻接矩阵,更新后不能确定原有边vector > &path)//路径上到达该点的中转点
//福利:这个函数没有用除INF外的任何全局量,可以直接复制!
{const int &NODE=distmap.size();//用邻接矩阵的大小传递顶点个数,减少参数传递path.assign(NODE,vector(NODE,-1));//初始化路径数组 for(int k=1; k!=NODE; ++k)//对于每一个中转点for(int i=0; i!=NODE; ++i)//枚举源点for(int j=0; j!=NODE; ++j)//枚举终点if(distmap[i][j]>distmap[i][k]+distmap[k][j])//不满足三角不等式{distmap[i][j]=distmap[i][k]+distmap[k][j];//更新path[i][j]=k;//记录路径}
}
void print(const int &beg,const int &end,const vector > &path)//传引用,避免拷贝,不占用内存空间//也可以用栈结构先进后出的特性来代替函数递归 
{if(path[beg][end]>=0){print(beg,path[beg][end],path);print(path[beg][end],end,path);}else cout<<"->"<>n_num>>e_num;vector > path,distmap(n_num,vector(n_num,INF));//默认初始化邻接矩阵for(int i=0,p,q; i!=e_num; ++i){cout<<"输入第"<>p>>q;cin>>distmap[p][q];}floyd(distmap,path);cout<<"计算完毕,可以开始查询,请输入出发点和终点:";cin>>beg>>end;cout<<"最短距离为"<

以上就是本文的全部内容啦!感谢阅读!

相关内容

热门资讯

联合倡议!提升家具消费品质 共... “南康家具”生产经营企业、广大电商平台及平台内经营者、自媒体从业者: 为全面贯彻中国消费者协会“提升...
重庆跨境电商企业布局东南亚,境... 重庆跨境电商企业布局东南亚,境外投资备案办理指南 重庆跨境电商布局东南亚(非敏感地区)通常属于“鼓励...
原创 第... 每次路过北大街,都会看见一栋超高层的烂尾楼,它就是山西晋豪国际大酒店。 想当年,它曾是山西第一高楼,...
猴价翻倍引发资本躁动,“猴茅”... 今日(7.16),在“猴模块”行情催化下,CRO概念再度爆发,昭衍新药盘中一度涨停走出5天3板,收盘...
人工智能文创产业基地揭牌,浦东... 7月15日,人工智能文创产业基地在上海揭牌,该基地由浦东新区与阅文集团合作共建。 阅文集团首席执行...
在苏州用黄金抵押变现,5个保障... 上周,在苏州园区工作的陈先生遇到了一件棘手事。他看中一个短期项目,急需一笔10万元的资金周转两周,但...
上市临门一脚,财信证券悄悄换了... 已在上交所IPO排队超过三年的财信证券,今年4月刚恢复“已问询”。连续任职八年之久的首席风险官,忽然...
国民技术董事长新增质押20万股... 7月16日晚间,国民技术(300077)发布股东股份质押公告,公司第一大股东、董事长兼总经理孙迎彤将...
更衣室控不住了?曝英格兰球员对... 北京时间7月17日消息,据英国媒体《每日电讯报》独家报道,部分英格兰球员对图赫尔在球队领先后的换人调...
美国商品期货交易委员会调查白宫... 来源:环球市场播报 一位知情人士透露,一名白宫提词器操作员正接受美国商品期货交易委员会(CFTC)调...
术后伤口长不上的根本原因 手术后伤口不愈合,是很多患者术后最头疼的问题。明明手术很成功,可伤口就是迟迟不肯长,甚至化脓、发炎,...
原创 搞... 不少中老年股民总听人提 “核心资产”,却摸不清到底什么样的才算,不少人盲目跟风买错,结果亏了不少钱。...
黄金交易提醒:美伊大战升级,油... 汇通财经APP讯——在全球地缘政治风云变幻的当下,黄金这一传统避险资产却罕见地遭遇重挫。2026年7...
股价阴跌不止,公司是否会有ST... 有投资者向 永辉超市(601933.SH)提问,最近一年永辉股价阴跌不止,大股东还减持,给中小投资者...
智慧医院系统源码如何构建安全、... 在医疗数字化不断发展的今天,智慧医院系统已经成为医院信息化建设的重要组成部分。从预约挂号、门诊就诊,...
信维通信零溢价装入高端MLCC... 7月14日晚,信维通信(300136.SZ)发布公告,全资子公司益阳信维拟以不超过11亿元现金收购信...
两家国产AI公司上半年营收预增... 7月16日晚,国产AI芯片公司摩尔线程(688795.SH)发布业绩预告,预计今年上半年营收16.5...
存储超级周期来了!深圳五家上市... 扬子晚报网7月16日讯(实习生 崔天天 记者 范晓林 薄云峰)受益于AI算力爆发与存储行业进入高景气...
趋境科技完成A轮亿元融资 境科技A轮融资浮出水面,由河南投资集团汇融基金重磅领投,真知资本、尚势资本、星连资本、上海国方创新、...