qq是哪一个软件公司开发的山西seo

张小明 2026/1/11 18:52:28
qq是哪一个软件公司开发的,山西seo,企业管理系统项目简介内容,学生如何做网站0. 前言#xff1a;一段只有 5 行代码的“黑魔法”在图论算法中#xff0c;Floyd-Warshall#xff08;简称 Floyd#xff09;是最神奇的存在。它的核心代码短得令人发指#xff0c;只有 5 行#xff0c;甚至比很多人的“Hello World”还短#xff1a;//核心代码 for(int…0. 前言一段只有 5 行代码的“黑魔法”在图论算法中Floyd-Warshall简称 Floyd是最神奇的存在。它的核心代码短得令人发指只有 5 行甚至比很多人的“Hello World”还短//核心代码 for(int k1;kn;k){//第一层中转点 for(int i1;in;i){//第二层起点 for(int j1;jn;j){//第三层终点 d[i][j]min(d[i][j],d[i][k]d[k][j]); } } }初学者往往背下来就完事了。但只要老师稍微追问一句“同学我看你这三层循环都是1到n那我把k的循环放到最里面第三层行不行”90% 的同学会愣住“好像……逻辑上都是遍历所有组合应该……行吧”答案是绝对不行。一旦把k放里面这个算法就从“天才的动态规划”退化成了“甚至不如暴力的错误逻辑”。今天我们就把这个算法拆解开看看它肚子里到底卖的什么药。1. 核心冲突为什么k不能在最内层我们要反其道而行之先看看错误的写法会导致什么后果。假设我们把k放到最里面//❌错误示范k在最里层 for(int i1;in;i) for(int j1;jn;j) for(int k1;kn;k) d[i][j]min(d[i][j],d[i][k]d[k][j]);1.1 一个“反直觉”的失败案例咱们来推演一个具体的图。假设路径是1-2-3。1-2距离为 2。2-3距离为 3。1-3目前不通距离∞。我们的目标是算出d[1][3]235。如果k在最里层程序是这样跑的外层循环固定i1中层循环固定j3。我们正在计算d[1][3]。内层循环k开始转动尝试寻找中转点。当k2时程序试图执行d[1][3]min(∞,d[1][2]d[2][3])死穴出现了在这个时刻程序需要用到d[1][2]和d[2][3]的值。d[2][3]是直连边没问题是 3。但是d[1][2]呢如果1-2也是一条需要经过其他点比如1-5-2才能连通的复杂路径那么在算出 d[1][3]的这一刻d[1][2]必须已经算好了。然而k 在里层的逻辑是“只扫描一遍”。如果1-2 的最优路径依赖于节点 5而节点 5 在循环的后面才出现或者是 i1, j2的遍历顺序在后面那么此时d[1][2]可能还是∞。结果d[1][3]更新失败。你失去了一次连接的机会而且因为i, j循环只走一次你永远失去了这个机会。1.2 错误的本质贪心 vs 规划k 在里层相当于问“我现在能不能找个中间人把i和j连起来”——这是贪心。它要求中间人两边的关系必须是现成的。Floyd 的本意我们需要处理“多跳”路径比如 A-B-C-D。这需要动态规划保证“长路径是由已经确认的最短子路径拼接而成的”。2. 正确的理解Floyd 的本质是“层层通关”把k放在最外层算法的物理意义就完全变了。它不再是简单的遍历而是一个“动态规划DP”的过程。2.1 状态定义的奥义Floyd 的标准状态方程其实是三维的dp[k][i][j]它的含义极其严格只允许使用节点1到节点k作为中转站的情况下从i到j的最短路径。这个k代表的不是“第 k 个点”而是“第 k 个阶段”。2.2 过程全推演图解想象我们在打一个游戏地图上有N个城市但一开始所有中转站都被封锁了只能走直连航班。阶段 0 (k0)只能走直连边。1-2有路2 -3有路1-3没路。阶段 1 (k1)【系统广播1号城市解锁中转权限】大家开始检查如果有 i-1-j比原来近就更新。此时所有经过 1 号点的路径都变成了“已知”。阶段 2 (k2)【系统广播2号城市解锁中转权限】重点来了现在允许经过 {1, 2} 中转。我们要计算 1-3尝试 1-2-3。关键点这里的1-2是什么它是“只允许经过 1”的最短路这是上一阶段 k1 算出来的成品。哪怕1-2实际路径是1-1-2在 k1 阶段也早就算好了。结论我们在利用“上一版本的完全体”来构建“这一版本的完全体”。这就是为什么k必须在最外层它控制着“中转站白名单”的扩充进度。3. 进阶为什么三维数组可以“拍扁”成二维3.1 你的担心会不会“自己坑了自己”三维公式是这样的d[k][i][j]min(d[k−1][i][j],d[k−1][i][k]d[k−1][k][j])我们为了省空间写成了二维d[i][j]min(d[i][j],d[i][k]d[k][j])这时候你肯定会心慌程序是顺序执行的。比如我在算d[1][2]的时候可能把d[1][k]或者d[k][2]给修改了。那等到我后面算d[3][4]要用到d[1][k]的时候拿到的不就是“被修改过的新值”了吗我们要的是“上一轮的旧值”你却给了我“这一轮的新值”这不就乱套了吗3.2 破案最危险的地方最安全别慌。我们来看看在第 k 轮循环里到底是谁在充当“原料” 答案是d[i][k]起点到中转站和d[k][j]中转站到终点。核心问题来了在第 k 轮循环中这俩“原料”会发生变化吗我们来推演一下 d[i][k]从 i 去 k的更新逻辑如果不经过 k距离是旧值。如果经过 k 中转距离变成 d[i][k]d[k][k]。d[k][k] 是多少那是“我自己到我自己”的距离肯定是0。所以更新公式变成了d[i][k]min(d[i][k],d[i][k]0)所以只要没有负权环Floyd不处理那个d[i][k] 在第 k 轮里怎么算都是它自己。它根本就不可能变小也不可能变大。3.3 结论在第 k 轮中转站是 k的运算全过程中第 k 行的数据所有 d[k][…]是静止不动的。第 k 列的数据所有 d[…][k]也是静止不动的。既然这俩“原料”在这一轮里绝对不会变那你是读旧数组还是读正在修改的新数组结果都是一模一样的。这就是为什么我们可以大胆地把三维拍扁成二维没有任何问题。4. 灵魂追问k 的循环顺序重要吗如果我把最外层循环改成for(int kn;k1;k--)或者乱序5, 1, 3...算法还对吗答案是完全正确。这也解释了 Floyd 的另一个本质集合论。最外层循环的本质是在不断扩充“可用中转点集合”空集-{1}-{1,2}-……-{1..n}空集-{5} -{5,1}-……-{1..n}这就好比背包问题你先判断是否把“物品A”放入背包还是先判断“物品B”并不影响最终背包塞满时的最大价值。只要循环结束时所有点都曾经当过一次“中转站”那么所有的路径组合就被穷尽了。5. 总结不能死记硬背。下次写 Floyd脑子里过一遍这三点位置k必须在外层。它是动态规划的阶段循环。本质长路径是由短路径拼接的。k在外层保证了我们在拼i-k-j时手里的i-k和 k-j已经是算好的“熟食”而不是“生米”。空间三维变二维之所以没 bug是因为第 k 行和第 k 列在第 k 轮是“静止”的。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

书店网站建设规划书昆山网站建设公司

如果一只戴墨镜的猫能在泳池边当救生员,那么你也可以用一张照片或一段文字让故事动起来。SkyReels V1 的目标,就是把这种魔法装进可落地的推理框架里。 1. 项目背景:从“能生成”到“敢上线” 文本生成视频(T2V)和图生…

张小明 2026/1/8 20:43:55 网站建设

五莲网站制作编辑网页软件

在IT架构日益复杂的今天,传统运维方式已力不从心。Gartner预测,到2026年,成功应用可观测性技术的企业将实现30%的故障恢复时间(MTTR)缩短。面对众多厂商,如何选择能支撑未来数年数字化转型的长期伙伴&#…

张小明 2026/1/11 16:03:17 网站建设

境外网站 备案wordpress一键发布

终极指南:3步完成NTFS到Btrfs的无损文件系统转换 【免费下载链接】ntfs2btrfs 项目地址: https://gitcode.com/gh_mirrors/nt/ntfs2btrfs 想要在Linux系统上享受Btrfs文件系统的强大功能,却苦于Windows分区中的数据迁移?ntfs2btrfs这…

张小明 2026/1/9 18:36:50 网站建设

服务好的徐州网站建设网站文字怎么做超链接

遥感图像土地利用分类实战终极指南 【免费下载链接】EuroSAT 项目地址: https://gitcode.com/gh_mirrors/eu/EuroSAT 想要快速掌握遥感图像分类技术?这份实战手册将带你从零开始,深入了解如何利用EuroSAT数据集进行精准的土地利用识别。无论你是…

张小明 2026/1/11 9:35:46 网站建设

网站开发者工具下载一个公司多个网站做优化

Hackintool是黑苹果社区中最受欢迎的图形化配置工具,被誉为"黑苹果全能工具"。它能够帮助用户轻松解决显卡驱动、音频输出、USB识别等核心兼容性问题,让复杂的配置文件编辑变得简单直观。本教程将从零开始,带你掌握这个强大工具的核…

张小明 2026/1/5 3:36:17 网站建设

ftp上安装wordpress南通做网站优化公司

MTKClient作为一款强大的联发科芯片逆向工程和刷机工具,为技术爱好者和普通用户提供了前所未有的硬件访问能力。这款开源软件通过突破性的技术手段,让用户能够直接与BootROM通信,实现芯片级的调试和修复功能,彻底改变了传统刷机工…

张小明 2026/1/9 12:25:46 网站建设