最短路径算法专题1----弗洛伊德
由于最短路径算法我认为比较重要,所以分成几个专题来慢慢细化去磨它,不能一口气吃个胖子嘛。
首先在说算法之前,先说清楚什么叫做最短路径。
题目一般会给你一张图,然后告诉你很多地方,然后告诉你各个地方之间的路程有多远,要你求出,两点间的最短距离,注意,题目给出的两点间的距离未必是最短的,可能通过第三个点转换之后达到更短。实际其实也是这样的,有时候两个地方并没有直线的道路只有曲线的绕路。
算法的思路:
1、用二维数组列出所有的距离,达到不了的用最大距离表示,如9999999
2、循环数组上面的每一个点,因为数组上面的一个点就代表了两点之间的现在距离,如map【3】【2】表示2到3的距离,然后对于这个点,尝试在其中插入一个点使其距离缩短,如map【3】【1】 + map【1】【2】< map【3】【2】表示,先走3到1再走1到2会比直接从3到2更近,然后更新map
3、最后输出任意两点间的距离
算法的要点:
1、三层循环,第一层,中间插入的点,二三层,地图上面的任意点
2、if(map【3】【1】 + map【1】【2】< map【3】【2】)map【3】【2】= map【3】【1】 + map【1】【2】;
3、达到不了的用最大距离表示,如9999999,那么就有可能出现两个9999999相加和点比较的情况,那么久要在if中间判断是否有无穷大的值存在,如果存在不需要更新
算法的使用:
1、时间复杂度显而易见O(N^3);
2、如果要求写出全部的任意两点最短,用这个算法可行。
3、数据范围小的话,时间要求不高,这个算法的编码速度最快,简单的说就是解题速度很快,代码量小。
顺便说一下,这个算法里面有动态规划的思想在里面,简单的说就是,动态的去更新已有的值,让解慢慢优化。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?