我在我的tableLegs
中循环查找公共汽车时刻表时遇到了一个问题,以找到乘客从a到b需要乘坐的腿的数组,例如乘客希望从legID
的LocID
开始并行驶到c
的LocID
,我想要组成该行程的腿的数组。(p
,LegID
,01
),希望这很容易理解。
台词
=============================================
LegID startLocID endLocID departTime
01 a e 9:00
02 e i 10:00
03 i m 11:00
04 i q 11:00
桌脚站
=========================================
LegID stopNo LocID TripTime
01 1 a 0 min
01 2 b 20 min
01 3 c 30 min
01 4 d 40 min
01 5 e 60 min
02 1 e 0 min
02 2 f 20 min
02 3 g 30 min
02 4 h 40 min
02 5 i 60 min
03 1 i 0 min
03 2 j 20 min
03 3 k 30 min
03 4 l 40 min
03 5 m 60 min
04 1 i 0 min
04 2 n 20 min
04 3 o 30 min
04 4 p 40 min
04 5 q 60 min
为了给你一个我在这里所要达到的目标的基础,这是一个巴士网站,每个旅程都是由不同的腿组成的。
最佳答案
此任务称为在图中搜索最短路径。有一个Dijkstra algorithm的实现可以用mysql存储过程来解决这个问题。
但这可能需要您稍微更改一下表结构,因为图形只使用两种类型的实体:节点和边。所以你应该把你的腿分解成边,然后在得到边上的最短路径后再把腿推回来。