首页 > 技术文章 > 地铁出行线路规划

BackPropagationXCX 2019-09-20 22:09 原文

概述


实现一个帮助进行地铁出行路线规划的程序,能够计算地铁线路最短路径。

项目需求

* 合理的地铁信息存储格式。简洁易懂的同时可以灵活拓展,也要方便程序读取。

  • 地铁线路信息的获取
  • 查询指定地铁线上的所有站点
  • 查询出发站与目的站之间的最短路径

设计思路

存储结构

subway.txt 可由以下方式存储地铁站点信息

站点1 线路号1
站点2 线路号2
...
站点3 线路号3

例如:

刘园 1
西横堤 1
...
东海路 9

具体实现时无需对中转站进行额外的存储,只需判断同一站点是否在不同线路中出现即可。

缺陷:存储地铁信息时对于同一线路上的站点必须按出发站→目的站的顺序进行存储。

算法实现

* 将站点信息存储为无向图

  • 相邻站点间的距离可置为1
  • Dijkstra算法求解
  • 处理异常情况,保证程序健壮性

计算完毕后保存计算结果,查询时直接调用即可,同时将结果输出至routine.txt中,格式如下:

3
洪湖里
西站
6号线
复兴路

测试样例

以下给出若干简单的测试样例以便测试

样例1

输入

西北角
二纬路

输出

3
西北角
西南角
二纬路

样例2

输入

南楼
西南楼

输出

3
南楼
下瓦房
5号线
西南楼

样例3

输入

金狮桥
成林道

输出

6
金狮桥
天津站
2号线
远洋国际中心
顺驰桥
靖江路
5号线
成林道

项目计划

PSP Personal Software Process Stages Time
Planning 计划
Estimate 估计这个任务需要多少时间 1.5h
Development 开发
Analysis 需求分析 (包括学习新技术) 3.5h
Design Spec 生成设计文档 2h
Design Review 设计复审 (和同事审核设计文档) 1h
Coding Standard 代码规范 (为目前的开发制定合适的规范) 1h
Design 具体设计 3.5h
Coding 具体编码 6h
Code Review 代码复审 1h
Test 测试(自我测试,修改代码,提交修改) 6h
Reporting 报告
Test Report 测试报告 2h
Size Measurement 计算工作量 1h
Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划 1h
合计 29.5h

推荐阅读