第三十五天
所花时间(包括上课): 约 7.5 小时(工程数学 1.5h + 计算机网络 1.5h + 软件工程 1.5h + 算法实践与代码编写 3h)
代码量(行): 约 350 行(北京地铁站最短路径与最短换乘查询系统)
博客量(篇): 1 篇(《蓝桥杯省赛复盘与图论最短路线实践》)
了解到的知识点:
工程数学:线性规划
学习了线性规划模型的基础概念,包括如何建立目标函数和处理线性约束条件。
了解到如何将实际的资源分配与统筹问题转化为数学公式,并初步接触了求解最优解的基本思路。
计算机网络:IP层分组转发
学习了路由器在网络层转发 IP 数据报的具体工作流程。
了解到路由器如何提取目的 IP 地址、查找路由表,以及特定主机路由、网络路由和默认路由在转发时的匹配顺序和作用。
软件工程:Scrum 框架
学习了敏捷开发中的 Scrum 架构及其实践流程。
了解了迭代(Sprint)、每日站会、产品待办列表(Product Backlog)等核心概念,以及团队如何通过 Scrum 应对需求的不确定性。
项目进展与心得:
蓝桥杯出成绩:今天蓝桥杯省赛公布了结果,最终拿了省一。其实比赛过程中自己知道有很多失误,部分题目的边界条件也没有处理好,能拿到这个成绩带有一定的运气成分。虽然拿到了国赛门票,但暴露出的基础薄弱点还需要踏实补救,心态上还是得保持平稳,按部就班地准备。
代码实践:今天用代码实现了一个北京地铁查询的小程序,包含最短路径和最短换乘两个查询维度。主要应用了图论算法(如 Dijkstra 和 BFS 的变体),在给换乘站增加权重惩罚时卡了一会儿,调试后理顺了逻辑。把算法应用到具体场景里,比单纯刷题多了一些工程上的实感。
综合反思:今天学的几个科目其实内在是有联系的。工程数学的线性规划是在约束条件下求最优解,计算机网络的路由分组转发本质也是在网络拓扑中找最优路径,而我写的地铁查询代码正好是这些理论的具象化。软件工程里讲的 Scrum 框架强调拆解任务、迭代开发,这很契合接下来的状态:一边用 Scrum 的模式推进外包杯项目,一边查漏补缺准备蓝桥杯国赛,踏实走好每一步就行。
表 3 缺陷记录日志示例
学生:马昀昀_________
日期:4.12_______(注:第27天为4.4,顺延至第35天为4.12)
程序号:北京地铁查询系统-路径规划模块
日期:4.12
编号:1
类型:20 (注:PSP标准中20代表逻辑/控制/条件错误)
引入阶段:编码
排除阶段:测试
修复时间:30min
修复缺陷:
描述:在测试“最短换乘”查询功能时发现,当路线经过多条线路交汇的大型换乘站时,算法偶尔会选择换乘次数较多但总站数较少的路线,未正确应用换乘权重,导致不符合“最短换乘”的预期逻辑。
修复方法:修改了 Dijkstra 算法中优先队列的状态节点对象,在节点中新增了“当前所属线路”标识。在边权计算和节点扩展逻辑中增加判断:若下一个站点的所属线路与当前线路不同,则给边权额外增加一个较大的换乘惩罚值(如 1000)。同时将访问标记(visited)的记录键从单纯的站点更改为(站点, 线路)的组合。修复后,换乘权重判定恢复正常,查询结果准确无误。
