求助:列车时刻中转算法
各位高手,小弟想做个列车时刻软件。但是现在设计列车时刻中转算法时,遇到了难题。
我想了快一个星期没有什么进展!虽然我的算法能查询到所有的中转站,但是居然需要
10秒钟!!
考虑一下火车中转。因为中转站一般情况都是大站,我新建了一个车站表
station,里面存储的都是可能中转站,约130多个。我的算法:
比如A到B需要中转
对中转站进行搜索,
先查询A地是否能到该中转站,
假如能 --查询中转站能否到B地,
如果能则可以在此地中转。
然后搜索下一个中转站
我遇到的问题是需要 10 秒钟才能查出所有的中转站!!!
真的没有什么办法提高这个查询速度吗?我试用过一些查询列车时刻的软件,
其中一个的数据库和我是差不多的,但是它们基本上都只需要1秒钟,
各位高手有什么好的方法没?
我用的的Access数据库,vc编写.
主要由三个表,表Station存储可能中转站信息,(130条记录)
表Pass存储所有车次的详细信息, (30,000条记录)
表Train存储所有车次的始发站和终到站信息. (2200条记录)
对于判断 城市 上海 和 西安 能否由车到达,我有两种算法:
算法1: 用动态字符窜数组存储所有经过 西安 的车次
用动态字符窜数组存储所有经过 上海 的车次
判断X 和 Y数组的元素有没有相同的,
假如有则可以到达
算法2: 用SQL语句(好心的高手提供)
select 车次
from table
where 车站 in (上海,西安)
group by 车次
having count(1)=2
假如上海能到西安,搜索出所有的车次,大概需要1秒钟
但是对于需要中转的车,每次都要和那 130 个车站中的一个比较
搜索完所有的需要 10秒!!
我该怎么优化呢?
1。优化表?
2。优化算法?