Metro

Metro

需求分析

​ 实际已包含于题目中。
大致包括:地铁线路展示,提供各个地铁站之间的最佳换乘路线。
存储和后端的实现难度预估小于前端的实现。

后端设计思路

​ 题目所给定的地铁辅助规划在实际应用上是意见非常困难的事,当然我们在编写代码时会自动忽略这些(笑),而将地铁网简单地缩略为一张无向图。这样一来题目所要求的最短路径规划问题就变成了最基本的最短路问题。

​ 实际给定的北京地铁路线图中,总站点的数量较少,未超过400;所以考虑使用\(Floyed\)对地铁图进行预处理并直接保存结果。换乘路线则由对预处理结果的新一轮遍历所添加完成。

​ 其中目前单线开通站点数量线站点数量$ < $50;所以考虑将所有路线的站点信息放在同一个文件中,以50为除数所得到的商区分具体路线,以余数区分每个路线中的具体站点。

前端显示

​ 我们期望这个系统能由一个相对直观的结果显示;所以程序的控制台输出基本结果的同时,我们会在资源管理器中生成一个借助\(mermaid\)生成图像的\(markdown\)文件,你可以使用如Typora的markdown编写器来进行查看。(虽然mermaid自身一般用于流程图,但实际的地铁路线图也确实与流程图有着诸多的相似点)。也可以考虑以html文件输出。

​ 实际由于vue尚未开始学习,故退而求其次.

理论复杂度

​ 理论时间消耗包括:

​ 预处理(在软件开发阶段即完成,不影响实际使用):$ \mathcal{O}(N^3 + N^2) $

​ 实际使用:$ \mathcal{O}(1) $

​ 理论空间消耗 $ \mathcal{O}(N^2) <= 10Mb $

开发周期预估

​ 后端的核心代码\(Floyed\)已熟练掌握,故后端开发周期应在1~2天左右;

​ 前端的\(mermaid\)尚处于学习阶段,而html以及vue已有相关的基础,故前端部分的开发周期应在2~5天。

实际测试结果

$ Coding $

Repo

你可能感兴趣的:(Metro)