现在的位置: 首页 > 综合 > 正文

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

2013年09月10日 ⁄ 综合 ⁄ 共 882字 ⁄ 字号 评论关闭

                 下面这图是本人乱涂鸦的只有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站点在13两条线路上。

下面我们开始,太好了H在线路3上,K也在线路3上,太好了,乘客你就乘3路车,肯定把你送到K,除了车子半路抛锚。

2.现在我们想从AJ,这有点麻烦。我们输入J,它带有的信息(2,3),看来我们必须转车了,没办法,我们现在只希望不要太坑就行。我们在A上了一路车,开了几分中,到达了B21),我想我可以转车了,可也不一定。我继续到达了E13),这也是好的选择。可我还是不想下车,继续到达了D,看情况你要坐3路车往回走了。

以下是路线分析:

A-B------J1-2

A-E-J1-3

A-DK----j1-3

这只是正常的,如果你真是很无聊,你可以A-B-D-E-J,路线:1-2-1-3,这些没有意思的项我们应该是在内部屏蔽的。



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



今天先讨论到这。

抱歉!评论已关闭.