Metro
需求分析
实际已包含于题目中。
后端设计思路
题目所给定的地铁辅助规划在实际应用上是意见非常困难的事,当然我们在编写代码时会自动忽略这些(笑),而将地铁网简单地缩略为一张无向图。这样一来题目所要求的最短路径规划问题就变成了最基本的最短路问题。
实际给定的天津地铁路线图中,总站点的数量较少,未超过200;所以考虑使用\(Floyed\)对地铁图进行预处理并直接保存结果。换乘路线则由对预处理结果的新一轮遍历所添加完成。
其中目前单线开通站点数量最多的6号线站点数量为39个;所以考虑将所有路线的站点信息放在同一个文件中,以40为除数所得到的商区分具体路线,以余数区分每个路线中的具体站点。
前端显示
我们期望这个系统能由一个相对直观的结果显示;所以程序的控制台输出基本结果的同时,我们会在资源管理器中生成一个借助\(mermaid\)生成图像的\(markdown\)文件,你可以使用如Typora的markdown编写器来进行查看。(虽然mermaid自身一般用于流程图,但实际的地铁路线图也确实与流程图有着诸多的相似点)。
实际由于vue尚未开始学习,故退而求其次.
理论复杂度
理论时间消耗包括:
预处理(在软件开发阶段即完成,不影响实际使用):$ \mathcal{O}(N^3 + N^2) $
实际使用:$ \mathcal{O}(1) $
理论空间消耗 $ \mathcal{O}(N^2) <= 2Mb $
开发周期预估
后端的核心代码\(Floyed\)已熟练掌握,故后端开发周期认为小于2小时;
前端的\(mermaid\)尚处于学习阶段,故前端部分的开发周期认为小于2天。
实际测试结果
$ Coding $