当前位置: 首页 > news >正文

第四十四天(5.13)

第四十四天
所花时间(包括上课):约 8 小时(概率论 2.5h + 算法练习(最短路) 4h + 博客整理 1h + 其他 0.5h)
代码量(行):约 320 行(主要为 Dijkstra 算法堆优化模板实现、Bellman-Ford 处理负权边逻辑编写及几道典型图论最短路题目的 AC 代码)
博客量(篇):1 篇
了解到的知识点:
概率论与数理统计:几种重要离散随机变量的分布 —— 在掌握了期望与方差后,今天系统学习了三种核心离散分布:二项分布、泊松分布和几何分布。深入推导了二项分布的期望
很小时,二项分布可以用泊松分布作为近似,这在处理大规模随机事件(如网页访问量、车站流量)时极具实用价值。此外,还探讨了几何分布的“无记忆性”,这一直观上有些反直觉但在概率建模中非常重要的特性。
算法练习与沉淀:图论中的最短路算法(Shortest Path) —— 今天攻克了图论的核心内容:单源最短路算法。重点掌握了 Dijkstra 算法,尤其是结合 priority_queue 实现的堆优化版本(时间复杂度
O(mlog n)O(mlogn),这在处理稀疏图时效率极高。随后学习了 Bellman-Ford 算法 及其改进版 SPFA,深刻理解了它们在处理包含负权边图时的优势,以及如何利用它们判定图中是否存在负环。在练习中,我发现图论题目最大的挑战在于建图(邻接矩阵 vs 邻接表)以及对“松弛操作(Relaxation)”本质的理解。
总结:
今天的学习呈现出明显的“从局部到整体”的特征。概率论中,从单个随机变量的属性延伸到了经典的概率分布模型,这让我意识到数学建模就是寻找现实问题与这些标准分布之间的契合点。在算法方面,最短路问题是我之前一直比较敬畏的领域,但通过今天对 Dijkstra 算法的拆解,我发现其本质也是一种贪心策略。图论编程对细节的要求极高,一个数组大小的失误或初始化值的设定(如用 0x3f3f3f3f 代替 INT_MAX)都会直接导致程序的崩溃。今晚在调试堆优化 Dijkstra 时,我花了很多时间理清“入队次数”与“出队更新”的关系,深刻体会到图论中“状态标记”的重要性。
表 3 缺陷记录日志示例
学生:马昀昀_________
日期:5.13_______
程序号:算法练习-单源最短路(堆优化 Dijkstra 模板)
编号:2
类型:20 (注:PSP标准中20代表逻辑/控制/条件错误)
引入阶段:编码
排除阶段:测试
修复时间:25min
修复缺陷:
描述:在实现堆优化版本的 Dijkstra 算法时,程序在处理较大规模数据时运行结果不正确,且存在大量重复计算。通过断点调试发现,我在使用优先队列 priority_queue<pair<int, int>> 时,由于 C++ 默认是大顶堆(Max-Heap),而算法要求每次取出距离最小的点,我没有正确处理优先级。此外,在点出队后,我遗漏了判断当前出队距离是否大于 dist[u] 的步骤,导致已经被处理过的、具有更短路径的点被重复且无效地用于松弛其他边。
修复方法:首先,将优先队列改为小顶堆,即 priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>>(或者在入队时将距离取负值值)。其次,在 pop() 出队后立即加入 if (d > dist[u]) continue; 的剪枝逻辑,确保每个节点只在其最短路径真正确定时才进行一次松弛操作。修复后,程序在复杂拓扑图下的运行效率显著提升,并顺利通过所有测试点。

http://www.jsqmd.com/news/830498/

相关文章:

  • 利用 Taotoken 统一 API 为内部低代码平台集成 AI 能力
  • 僧伽罗文语音本地化迫在眉睫!斯里兰卡新《数字服务法》2024年10月生效前,你必须掌握的7项ElevenLabs合规配置
  • 通过curl命令直接测试Taotoken多模型API的响应与延迟
  • 源代码论文分享|图书管理系统!
  • Midscene.js跨平台AI自动化测试:3步快速上手的终极配置指南
  • 不只是标定:挖掘OpenCV findCirclesGrid在工业视觉中的另类玩法与参数调优
  • 2026 南京 GEO 优化公司 推荐 - 奔跑123
  • 【稀缺首发】Midjourney等距视角工业设计协议(ISO/IEC 21827-2024兼容版):含12类建筑/机械/游戏资产等距规范库,仅限前500名开发者领取
  • CommonJS、RequireJS 与 ES6 模块:JavaScript 模块化演进史
  • ITK-SNAP:掌握医学图像分割的5个关键步骤
  • ElevenLabs乌尔都文TTS接入全链路解析:从API密钥配置到自然停顿优化(含3个未公开参数)
  • 从0到1搭建AI心理健康预警系统:我是如何用BERT+BiLSTM捕捉情绪拐点的
  • 微信小程序流式请求实战:绕过WebSocket,实现ChatGPT逐字回复的兼容方案
  • 源代码论文分享|基于Spring Boot的装饰工程管理系统!
  • 鸿蒙与Kotlin跨平台开发中的性能与功耗深度优化实践
  • 【AI编程】 模型订阅渠道、费用与体验
  • 鸿蒙 Harmony 6.0 页面构建实战:打造酒店管理仪表盘
  • Cursor Free VIP:解锁AI编程助手完整功能的技术解决方案
  • 从零到商用:用ElevenLabs打造粤语播客AI主播——12小时实测对比Azure/Coqui/TTS开源方案,成本降63%,交付提速4.8倍
  • Metso A413110 印刷电路板
  • GDB断点管理保姆级指南:从查看、删改到批量操作,告别调试混乱
  • 工业自动化工程师如何高效解决Modbus通信调试难题?
  • Taotoken用量看板与账单追溯功能在项目复盘中的实际价值
  • CSS 定位(Position)完全解析:掌控元素布局的底层逻辑
  • 数据库COUNT(*)性能优化与高并发计数方案全解析
  • ARMv8-M架构安全扩展与嵌入式系统配置详解
  • 曾仕强讲咸卦:谈恋爱,为什么只能“男追女”?
  • FAST-LIVO vs. Fast-LIO2 vs. R3LIVE:多传感器SLAM实战选型,我该用哪个?
  • 通过DrissionPage爬取某获客平台内容
  • Windhawk完全指南:5步打造你的专属Windows系统