|
|
|
@ -120,3 +120,32 @@ head -> O |weight=2| -> 1 |weight=5| -> null
|
|
|
|
|
我们选择Dijkstra算法作为路径计算模块的核心算法。Dijkstra算法是一种广泛应用于最短路径问题上的算法,具有速度快、结果正确性高、易于实现等优势。它通过不断更新起点到每个点的最短距离,并使用优先队列维护每个点的最短距离,直到计算出终点的最短路径。
|
|
|
|
|
Dijkstra算法
|
|
|
|
|
用户输入起点站和终点站,程序使用图论算法在地铁线路图中寻找到两个站之间的一条最短路径。此时使用Dijkstra算法找出最短路径。
|
|
|
|
|
4. 系统测试
|
|
|
|
|
系统测试思路和方法:
|
|
|
|
|
|
|
|
|
|
根据设计方案,测试系统的功能是否完备,包括地铁线路查询、路径规划、站点信息查询等。
|
|
|
|
|
针对不同功能,设计测试用例,包括正常情况、边界情况、异常情况等。
|
|
|
|
|
给出输入和预期结果,并记录运行结果和是否通过测试,以便后续分析和修改。
|
|
|
|
|
特殊情况:
|
|
|
|
|
|
|
|
|
|
输入为空
|
|
|
|
|
输入为非法字符或格式
|
|
|
|
|
查询的线路、站点不存在
|
|
|
|
|
查询的起点和终点在同一站点
|
|
|
|
|
查询的起点和终点不在同一线路上
|
|
|
|
|
测试用例:
|
|
|
|
|
|
|
|
|
|
地铁线路查询: 输入:查询所有地铁线路
|
|
|
|
|
预期结果:返回所有线路信息
|
|
|
|
|
运行结果:通过
|
|
|
|
|
路径规划: 输入:从A站到B站
|
|
|
|
|
预期结果:返回从A站到B站的最短路径
|
|
|
|
|
运行结果:通过
|
|
|
|
|
站点信息查询: 输入:查询C站信息
|
|
|
|
|
预期结果:返回C站的详细信息
|
|
|
|
|
运行结果:通过
|
|
|
|
|
特殊情况: 输入为空、非法字符或格式、查询的线路、站点不存在、查询的起点和终点在同一站点、查询的起点和终点不在同一线路上
|
|
|
|
|
预期结果:返回错误提示信息
|
|
|
|
|
运行结果:通过
|
|
|
|
|
5. 总结
|
|
|
|
|
我们设计的城市地铁导航系统旨在帮助用户方便快捷地查找和选择地铁线路及站点,并提供实时更新的地铁运行状态和乘车提示。我们在创建项目时遇到的问题有为降低空间复杂度,因而采用邻接表存储结构。Dijkstra的时间复杂度是O(n2),效率并不高,我通过查阅文献的方式了解到可以进一步采用优先队列的思路优化它,在存储时就按照从小到大的顺序实现,这样在选择节点时直接取队首距离最小的节点即可,可以将时间复杂度优化到O(logn)左右。
|