在使用Dijkstra算法创建公交车旅行计划器时,常见的已知问题之一是计算中不考虑等待时间和行驶时间。通过在计算的权重上及时具有动态函数,可以获得最短路径。但是,我有一些问题,如何在边缘表中表示不同频率的不同总线号。例如,我有6个节点:A,B,C,D,E,F,有三条公交路线在从A到F的不同路径上行驶,当然它们有不同的频率。
我的数据结构:
巴士路线
路线|路径|频率
XXX A-B-C-D-E-F 30分钟
YYY A-B-C-D-E-F 60分钟
ZZZ A-D-F 10分钟
边缘表
来自|到|距离(m)|旅行时间(分)
A B 1200 3
B C 2400 5 等............................................
节点表
ID | Lat |长|
A
乙
C等..............
让Dijkstra获得最短路径是A-D-E-F,我的问题是
如何使用我当前的数据结构告诉用户使用路由ZZZ到D然后更改为XXX到F(而不是YYY)?
我是否需要多次表示相同的边缘,以便区分边缘是XXX还是YYY?例如,XXX和YYY都从A-B行进,因此在我的数据库中会有两个相似的边,相同的距离,只有不同的是总线频率。或者我只需要一个边缘,然后使用其他方法告诉我使用哪个总线?
假设一个拥有50条公交线路的城市,用于执行Dijkstra算法的边缘是否都来自所有50条公交线路(即使有一些重复?),或者每条边都必须具体,是否有任何方法可以这些重复的总线路径是否代表相同的边缘? 例如,30条公交线路经过相同的路径A到B,那么有什么方法可以简化它吗?
由于