Floyd算法

 Floyd算法又称为弗洛伊德算法,插点法,是一种用于寻找给定的加权图中顶点间最短路径的算法。

核心思路

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

  从图的带权邻接矩阵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来记录两点间的最短路径。

  采用的是松弛技术,对在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]这条路

算法过程

 把图用邻接矩阵G表示出来,如果从Vi到Vj有路可达,则G[i,j]=d,d表示该路的长度;否则G[i,j]=空值。

  定义一个矩阵D用来记录所插入点的信息,D[i,j]表示从Vi到Vj需要经过的点,初始化D[i,j]=j。

 把各个顶点插入图中,比较插点后的距

MATLAB Floyd算法相关推荐

  1. 动态规划 - Floyd算法求最短路径 - (Matlab建模)

    Floyd算法又称为弗洛伊德算法.插点法,是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法,与Dijkstra算法类似.该算法名称以创始人之一.1978年图灵奖获得者.斯坦福大学计算 ...

  2. Dijkstra算法和Floyd算法详解(MATLAB代码)

    一.Dijkstra算法 1.算法简介 Dijkstra算法是由E.W.Dijkstra于1959年提出,又叫迪杰斯特拉算法,它应用了贪心算法模式,是目前公认的最好的求解最短路径的方法.算法解决的是有 ...

  3. 用Floyd算法解决选址问题(附完整matlab代码)

    以2021年五一建模比赛中的消防站选址为例,此问题为重心性加权最优选址问题.可考虑各区域的出警次数和人口密度,并对其进行加权分析处理. 首先用Floyd算法求出距离矩阵,在考虑出警次数和人口密度的前提 ...

  4. 基于MATLAB的Floyd算法

    基于MATLAB的Floyd算法 % 邻接矩阵 graph = [0 9 1 3 inf inf;1 0 4 inf 7 inf;2 inf 0 inf 1 inf;inf inf 5 0 2 7;i ...

  5. 详解floyd算法 及<MATLAB>实现

    欢迎来到 < Haoh-Smile > 的博客,觉得受用客官就点个赞评论一下呗!** 详解floyd算法 及MATLAB实现 一.Floyd算法原理 Floyd算法是一个经典的动态规划算法 ...

  6. floyd算法-matlab

    floyd算法-matlab 对582*582的距离矩阵进行查找最优路径 path = zeros(size(data,1),size(data,1)); for v = 1:582for i = 1 ...

  7. 任意两点最短路floyd算法matlab,多源最短路——Floyd算法

    Floyd算法 问题的提出:已知一个有向网(或者无向网),对每一对定点vi!=vj,要求求出vi与vj之间的最短路径和最短路径的长度. 解决该问题有以下两种方法: (1)轮流以每一个定点为源点,重复执 ...

  8. 图的最短路径算法及matlab实现(Dijkstra算法、Floyd算法、Bellman-Ford算法、Johnson 算法)

    图的最短路径算法 Dijkstra算法 Dijkstra算法研究的是从初始点到其他任一结点的最短路径,即单源最短路径问题,其对图的要求是不存在负权值的边. Dijkstra算法主要特点是以起始点为中心 ...

  9. floyd最短路算法的matlab程序,图论之最短路01——最短路矩阵(FLOYD)算法

    %======================================================== %最短路矩阵算法,FLOYD算法 %针对性:方案预算,能求出所有点之间的最短路(最小 ...

最新文章

  1. Oracle Advisor
  2. [ASP.NET 控件实作 Day14] 继承 CompositeControl 实作 Toolbar 控件
  3. SQL Server 2012自动备份
  4. 一起啃PRML - 1.2.2 Expectations and covariances 期望和协方差
  5. Impala内存优化
  6. c语言 万年历问题,【数组函数面试题】面试问题:万年历的C语言… - 看准网
  7. DNN训练技巧(Tips for Training DNN)
  8. UISwitch用法详解
  9. 关于M0内核MCU的Bootloader编写
  10. JimuReport积木报表 — SQL数据源报表制作
  11. python把两个图片合成一张图
  12. #9733;双十一背后的消费心理
  13. 微信公众平台原创声明功能公测 自媒体原创保护的福音
  14. DRAM、NAND Flash、Nor Flash、EEPROM的区别和应用领域
  15. Unity圆环进度条制作
  16. 在一个笼子里同事养着一些鸡和兔子,你想了解有多少只鸡和兔,主任对你说:我只告诉你鸡和兔的总头数是16和总脚数是40,你能不能自己计算有多少只鸡和多少只兔?
  17. 假设知道服务器IP,如何查询它绑定的域名?
  18. linux centos如何开启远程桌面,CentOS配置远程桌面
  19. 苹果服务器维护时间表2019,苹果更新电脑键盘服务维修计划机型 含2019最新款
  20. ARC 101 E - Ribbons on Tree

热门文章

  1. 【渝粤教育】电大中专沟通技巧作业 题库
  2. linux connect 阻塞超时时间,在linux下玩转带有超时时间的connect函数
  3. 注入dll到explorer.exe中无反应_MBR膜生物反应器的安装及技术要求都有什么呢?
  4. suse11 rpm 安装mysql_SuSE11安装MySQL5.7.22:RPM安装方式
  5. linux忘记mysql密码_linux下忘记mysql root密码解决办法 | 系统运维
  6. MFC多线程处理界面假死之红外图像数据获取和excel写入
  7. 初学JavaWeb需要的前端js,JavaScript是什么样的?
  8. MADDPG中环境怎么配置,multiagent包解决
  9. CentOS7.x以上版本配置DNS失效解决办法
  10. centos-安装python3.6环境并配置虚拟环境