Floyd 算法学习笔记

技术Floyd 算法学习笔记 Floyd 算法学习笔记Floyd算法学习笔记(未完结)
前言
如有错误,欢迎各位 dalao 批评指出。
前置芝士:
1.邻接矩阵(Floyd要用邻接矩阵存图)
2.动态

弗洛伊德算法学习笔记

Floyd算法学习笔记(未完结)

前言

如有错误,欢迎大劳批评指出。

前置芝士:

1.邻接矩阵(弗洛伊德想用邻接矩阵保存图形)

2.动态规划的思路(最好学一学,没学的话影响不大)

1. Floyd 所解决问题的类型

我们可以发现,诸如Dijkstra、SPFA、Bellman Ford等最短路径算法都解决了单源点的最短路径问题,即确定起点或终点来寻找最短路径问题。然而,我们发现这些算法效率太低,无法解决具有多个源的最短路径问题,即具有多个起点和终点的最短路径问题。假设有\(n\)个点和\(m\)条边。在求解多源最短路径时,如果用上述三种算法求解,则需要分别做\(n\)次才能从每个点开始求解单源最短路径。最慢的时间复杂度是\ (o (nlogm),o (n 2m),o (n 2m) \),在稠密图中\ (m=n)因此,我们今天的主角Floyd就是为了解决多源最短路径问题而诞生的!

2. Floyd 的思想和基本做法

弗洛伊德算法的基本思想是动态规划。

让\(dp_{ij}\)代表从\(i\)到\(j\)的最短距离。(有\(n\)个点)

首先,这个\(dp\)数组的初始化是将输入边\(x-y\)的权重设置为\(z\)(加权图为\(1\)),如果图是无向图,那么\(dp_{xy}=dp_{yx}=z\)

然后我们进行状态转换。显然,如果我们想转移\(dp_{ij}\),我们需要找到一个点\(k\)来转移,那就是\ (DP _ {ij} \ getsmin (DP _ {ij},DP _ {ik} DP _ {kj}) \)

这里需要注意的是,我们的\(k\)层循环必须放在\(i\)和\(j\)层循环之外,因为如果放在\(i,j\)内,你会发现每两点的最短路径只会被计数一次,当你处于状态转换时,你只

Floyd算法的时间复杂度为\(o(n ^ 3)\),因为\(i,j,k\)必须枚举一层循环,比前三种算法快。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/100417.html

(0)

相关推荐

  • sketch主要是做什么的(sketch 主要是做什么)

    技术sketch的优势是什么今天就跟大家聊聊有关sketch的优势是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。现在UI设计师不仅仅需要掌握基础的设计软件P

    攻略 2021年12月24日
  • spark快速入门菜鸟教程(大数据spark入门教程)

    技术Spark该怎样入门本篇文章为大家展示了Spark该怎样入门,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1. Spark简介2009年,Spark诞生于伯克利大学的AMPL

    攻略 2021年12月17日
  • 如何使用Winrm.vbs绕过应用白名单执行任意未签名代码

    技术如何使用Winrm.vbs绕过应用白名单执行任意未签名代码这篇文章给大家分享的是有关如何使用Winrm.vbs绕过应用白名单执行任意未签名代码的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

    攻略 2021年11月1日
  • 大数据storm框架搭建和原理(大数据开发一般用什么软件)

    技术基于Storm的怎么实现大数据平台本篇内容主要讲解“基于Storm的怎么实现大数据平台”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“基于Storm的怎么实现大数据平台”吧

    攻略 2021年12月23日
  • python中什么是aiohttp库

    技术python中什么是aiohttp库这篇文章主要讲解了“python中什么是aiohttp库”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python中什么是aioh

    攻略 2021年10月20日
  • 蛋糕简笔画图片大全,自制蛋糕的做法大全谁有

    技术蛋糕简笔画图片大全,自制蛋糕的做法大全谁有家庭自制蛋糕 工具:电饭锅一个 材料:鸡蛋四个、面粉一饭勺、苏打粉(酵母粉)一小勺、生粉两小勺、色拉油、白砂糖、葡萄干若干 制作:先将鸡蛋打散在一个容器里,边搅拌边加入白砂糖

    生活 2021年10月28日