如何制作适用于Dijkstra算法的伦敦地铁加权图
实现伦敦地铁加权图的简便方案
- 直接复用公开地铁数据集:别手动录入250个节点了,伦敦地铁的站点、线路及通行时间有不少公开数据集,这些数据里已经包含了你需要的节点和边权重信息,直接拿来用就能省掉大量手动整理的工作。
- 用邻接表存储图结构:针对250个节点的规模,邻接表比邻接矩阵更高效,内存占用低且遍历速度快。用字典就能轻松实现,比如:
# 邻接表结构示例 london_tube_graph = { "King's Cross St Pancras": [("Euston", 2), ("St Pancras International", 1)], "Euston": [("King's Cross St Pancras", 2), ("Warren Street", 3)], # 其余站点数据批量导入即可 }
- 批量导入数据生成图:如果拿到的是CSV或JSON格式的数据集,写个几行的脚本就能批量解析生成邻接表。比如用Python的
csv模块读取每行的起点站、终点站和通行时间,自动填充到字典里,不用手动逐个添加节点和边。 - 快速验证数据准确性:导入后抽几个常见站点的通行时间和实际地铁运行时长对比,确保边的权重准确,避免后续Dijkstra算法算出错误的最短路径。
- 无需过度优化Dijkstra实现:250个节点的规模不算大,用基于优先队列(比如Python的
heapq)的标准Dijkstra实现完全能快速算出结果,保持代码简洁易维护就好。
内容的提问来源于stack exchange,提问作者Hopvine
相关产品推荐
相关产品推荐

