您的位置:首页 > 其它

图-公交查询问题乱弹(一)

2013-05-26 15:18 239 查看
                 下面这图是本人乱涂鸦的只有3条线路的公交路线图

                 


一号线
A-B-E-D-K
二号线F-B-C-D-K-J
三号线H-I-E-J-K-D

保存这个数据结构使用图的变形很合适

首先是一个所有路线的集合,一个元素包含两个标识,路线和第一个站点。可能你会说那一条路线需要保存两次,因为正反的形式是不相同的,因为起始站点不同。我们先讨论一种情况,按上图来说,就是从左往右。

我们的数据集合就是
(1,A).(2,F),(3,H)

对于一个站点我们需要一个保存信息的格式。一个站点到下一个站点可能有几天线路一起,所以
站点设计如下,以D站点来说
除了保存站点信息外,还有(1,K)(2,K)

下面谈谈怎么获得得到两个节点之间的路径,这也是公交查询系统的核心功能。

我们下面以几个例子来分析一下(只考虑从左往右)。
1.比如我现在H,我想到K。我们知道我们自己现在在的地点是应该的,我们现在设置你要去的站点(可能你并不知道站点,你知道地方,这个可以通过地图来,地图比对,然后可以给出附近站点的信息,这个就是后话了,这里不谈)。在输入站点后,在处理站点信息时,我希望站点有这些信息,这个站点在那几条线路上,比如E站点在1和3两条线路上。
下面我们开始,太好了H在线路3上,K也在线路3上,太好了,乘客你就乘3路车,肯定把你送到K,除了车子半路抛锚。
2.现在我们想从A到J,这有点麻烦。我们输入J,它带有的信息(2,3),看来我们必须转车了,没办法,我们现在只希望不要太坑就行。我们在A上了一路车,开了几分中,到达了B(2,1),我想我可以转车了,可也不一定。我继续到达了E(1,3),这也是好的选择。可我还是不想下车,继续到达了D,看情况你要坐3路车往回走了。
以下是路线分析:
A-B------J1-2
A-E-J1-3
A-D(K)----j1-3
这只是正常的,如果你真是很无聊,你可以A-B-D-E-J,路线:1-2-1-3,这些没有意思的项我们应该是在内部屏蔽的。

为什么只讨论一个方向,你知道A-K怎么走,难道不知到K-A吗?

今天先讨论到这。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: