news 2026/8/26 2:37:26

Floyd算法这玩意儿挺有意思的,它就像个热心肠的交通协管员,拿着地图挨个路口问:“从这儿到那儿走我这个路口是不是更近?“ 咱们直接来看代码骨架

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Floyd算法这玩意儿挺有意思的,它就像个热心肠的交通协管员,拿着地图挨个路口问:“从这儿到那儿走我这个路口是不是更近?“ 咱们直接来看代码骨架

floyd算法求最小距离代码

def floyd(graph): n = len(graph) dist = [[0]*n for _ in range(n)] # 初始化距离矩阵 for i in range(n): for j in range(n): dist[i][j] = graph[i][j] # 三重循环暴力更新 for k in range(n): for i in range(n): for j in range(n): if dist[i][k] + dist[k][j] < dist[i][j]: dist[i][j] = dist[i][k] + dist[k][j] return dist

这个初始化部分有个小细节容易被新手忽略——为什么要单独搞个dist矩阵而不是直接修改原图?想象一下你在更新A到C的距离时,如果直接改原矩阵,后面的B到D的计算可能就用了被污染的数据。这种"数据污染防护"机制挺重要。

中间那个三重循环看起来吓人,其实可以拆解来看。假设现在要计算北京到广州的最短距离,k=武汉这个中间站。算法会先问:"北京->武汉->广州 比 北京直达广州 近吗?"如果近就更新。接着k换成郑州、长沙...直到所有可能的中转站都检查一遍。

来看看具体更新逻辑:

if dist[i][k] + dist[k][j] < dist[i][j]: dist[i][j] = dist[i][k] + dist[k][j]

这行代码藏着动态规划的精髓——最优子结构。就像拼乐高,大问题(i到j)的解建立在更小子问题(i到k和k到j)的最优解之上。不过要注意这里的k遍历顺序,最外层必须是中间节点,这个顺序如果搞反了算法就废了。

实际应用时可以加点路径追踪功能。我们可以在初始化时创建个path矩阵:

path = [[-1]*n for _ in range(n)] if dist[i][j] > dist[i][k] + dist[k][j]: dist[i][j] = dist[i][k] + dist[k][j] path[i][j] = k # 记录关键转折点

这样要查具体路径时,就可以用递归把路径拆成i->k和k->j两段,直到找到-1标识的直达路线。

虽然时间复杂度O(n³)看着吓人,但在实际项目中处理几百个节点的图还是能hold住的。不过要注意输入图的表示方式,如果节点太多建议换稀疏矩阵存储。对了,算法处理负权边时要当心,万一图里有负权环就完犊子了,这时候得用其他法子。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/22 4:30:28

Hunyuan开源模型贡献指南:如何参与社区开发

Hunyuan开源模型贡献指南&#xff1a;如何参与社区开发 1. 背景与项目定位 随着全球化进程的加速&#xff0c;高质量、低延迟的机器翻译需求日益增长。腾讯推出的混元翻译大模型&#xff08;Hunyuan-MT&#xff09;系列&#xff0c;旨在构建一个开放、高效、可扩展的多语言翻…

作者头像 李华
网站建设 2026/8/25 12:02:37

HY-MT1.5如何提升翻译流畅度?后编辑处理部署方案

HY-MT1.5如何提升翻译流畅度&#xff1f;后编辑处理部署方案 1. 背景与技术演进 随着全球化进程加速&#xff0c;高质量、低延迟的机器翻译需求日益增长。传统翻译模型在多语言互译、混合语种场景和边缘部署方面面临诸多挑战&#xff1a;大模型虽精度高但难以实时响应&#x…

作者头像 李华
网站建设 2026/8/24 5:16:38

【OTA】基于STM32F103C8T6和ESP8266-01S实现云轻量服务器的OTA升级

【OTA】基于STM32F103C8T6和ESP8266-01S实现云轻量服务器的OTA升级 文章目录 前言一、实验目的二、实验过程1.搭建云服务器1.1 搭建方式选择——公有云轻量应用服务器1.2 购买公有云厂商的服务器——阿里云服务器举例1.3 搭建 HTTP 服务——宝塔管理、Nginx托管1.4 上传固件——…

作者头像 李华
网站建设 2026/8/22 7:24:55

408 计算机网络 知识点记忆(10)应用层(更新优化版本,版本2.0)

前言 本文基于王道考研课程、湖科大计算机网络课程教学内容以及 计算机网络&#xff08;第八版&#xff09;&#xff0c;系统梳理核心知识记忆点和框架&#xff0c;既为个人复习沉淀思考&#xff0c;亦希望能与同行者互助共进。 往期内容 408 计算机网络 知识点记忆&#xf…

作者头像 李华
网站建设 2026/8/22 5:31:23

混元翻译1.5应用:实时视频字幕翻译系统搭建

混元翻译1.5应用&#xff1a;实时视频字幕翻译系统搭建 随着多语言内容在互联网中的爆炸式增长&#xff0c;实时、准确的跨语言理解需求日益迫切。尤其是在视频内容传播中&#xff0c;如何为不同语种观众提供高质量、低延迟的字幕翻译&#xff0c;成为智能媒体处理的核心挑战之…

作者头像 李华
网站建设 2026/8/24 20:21:01

HY-MT1.5-7B显存优化案例:FP16量化降低GPU占用40%

HY-MT1.5-7B显存优化案例&#xff1a;FP16量化降低GPU占用40% 1. 引言 随着多语言交流需求的快速增长&#xff0c;高质量、低延迟的翻译模型成为智能应用的核心组件。腾讯开源的混元翻译大模型 HY-MT1.5 系列&#xff0c;凭借其在多语言支持、上下文理解与格式保持方面的卓越…

作者头像 李华