当前位置:首页 » 操作系统 » 公交算法

公交算法

发布时间: 2022-04-16 02:36:02

① 寻求公交路线查询的算法,要求查询速度要快~~请高手帮帮忙!

http://main.mapbar.com/city

② 求教公交换乘算法,我不聪明,麻烦说的明白些,谢谢,财富值有回答时在加,避免浪费,谢谢

三个表(最简单化,不考虑模糊查询,单行线等其他东西):
1,站点表stop(stop_id,stop_name)
2,路线表line(line_id,line_name)
3,路线站点表(点线路关系表)linestops( line_id, stop_id, seq )此处的seq指某站点在某线路中的顺序。
现在分析算法:
1,直达线路
首先根据两个站点名获取两个站点各自的id,这里定义为id1,id2
然后查询
select line_id from
(select line_id from linestops where stop_id = id1) A,
(select line_id from linestops where stop_id = id2) B
where A.line_id = B.line_id
即得到可直达的线路列表
2,一次换乘
首先根据两个站点名获取两个站点各自的id,这里定义为id1,id2
然后搜寻两个站点通过直达方式各自能够到达的站点集合,最后他们的交集就是我们所需要的换乘站点。
select stop_id from
(
select distinct stop_id from linestops where line_id in
(select line_id from linestops where stop_id = id1)
)A,
(
select distinct stop_id from linestops where line_id in
(select line_id from linestops where stop_id = id2)
)B
where A.stop_id= B.stop_id
得到换乘站(可能有多个或0个)后,剩下的就是显示能够到达换乘站的两边线路,这通过前面的直达查询即可。
3,二次换乘
首先根据两个站点名获取两个站点各自的id,这里定义为id1,id2
算法的中心思想是:站点1能够通过直达到达的所有站点集合A,站点2能够通过直达到达的所有站点集合B,A和B之间有直达的线路。
一步一步来:
站点1能够通过直达到达的所有站点集合A:
select distinct stop_id from linestops where line_id in
(select line_id from linestops where stop_id = id1)
站点2能够通过直达到达的所有站点集合B:
select distinct stop_id from linestops where line_id in
(select line_id from linestops where stop_id = id2)
而直达的查询是
select line_id from
1/4页

(select line_id from linestops where stop_id = id1) C,
(select line_id from linestops where stop_id = id2) D
where C.line_id = D.line_id
我们把=id1和=id2换成 in (select ....)A 和 in (select ...)B
这样最后我们的查询是
select line_id from
(select distinct line_id from linestops where stop_id in 【A】) C,
(select distinct line_id from linestops where stop_id in 【B】) D
where C.line_id = D.line_id
其中【A】是
(select distinct stop_id from linestops where line_id in
(select line_id from linestops where stop_id = id1))
其中【B】是
(select distinct stop_id from linestops where line_id in
(select line_id from linestops where stop_id = id2))
这样子我们找到了作为中间换乘的线路(可能有多条或者0条),对列举的的每一条假设命名为X线,下一步就是找出可以从站点1到达X任意一个站点的直达线路、和可以从站点2到达X任意一个站点的直达线路即可。
那么与前面的算法相似,我们在站点1所有能够到达的站点中去寻找和线路X相交的站点,然后再去找这两个点的线路
select stop_id from
(select distinct stop_id

③ 公交2次换乘算法

呃,我来给你说说。先假设一个情况:你的公交次数卡里面有10次余额。你拿公交次数卡在8:13第一次刷卡(还剩下8次),那么在10:13之内的这段时间,你可以在任意一辆接受次数卡的公交车上(除了你在8:13时刷卡的那辆公交车,当然一般不会出现这种情况)再另外刷3次(仍然剩8次)。但是有一个条件:你刷过之后的公交车(注意是公交车,不是公交线路)是不再接受你再次刷次数卡的,这时就要扣你电子钱包里面的钱,如果没有电子钱包你就只有投币。2小时之内你刷卡的次数超过了4次,比如你在8:13刷了一次,在10:13之内,你已经又刷了3次,那么在10:13之内你仍旧需要转乘的话就要另外计算次数。比如你在9:55的时候你已经是乘坐了四次,达到了最高次数,那么转乘就要重新扣你的次数。9:55时你又转乘另外一趟公交车刷次数卡,这时就要重新扣你的次数(只剩下6次)。刷卡的原则是次数优先,如果没有次数就扣电子钱包的钱,如果两种方式都不能足够支付你乘车费用,就只能投币了。转乘不分普通车和中级车,你在普通车上刷了之后拿到中级车上也是不扣次数,但要计入转乘次数的记录。

④ 公共交通线路的搜索是如何实现的简称公交换乘算法

最核心的算法正是所谓的最短路径算法,这个比较简单
但是 要把算法用到公交换乘这个里面去 数据的组织准备 程序效率优化 特殊情形考虑等 是相当地有工作量的

⑤ 公交线路最优算法

可以理解,如果某条公交车线路是从A地到E地的最短路径,则其子路也必是最短的。即如果最短路径为A→B→C→D→E,那么C→D→E必是C到E的最短路径。否则用反证法,必可找到一条更短的路线,就与前面矛盾了。最短路径的上述特性,启发我们从终点开始,从后向前逐步递推,求出各站到目的地E的最短子路,最后求出从A站到E站的最短路径。

⑥ 公交换乘算法(C++)

这个算法就是这个公交网站的核心。

⑦ 公交换乘查询算法如何计及步行

先搜索一条最优路径,再从目的地反向查找,将找到的点和条最优路径对比,
比如:最优路径倒数点为A,现在查找的为B,判断B到A的距离,小于我们的要求即为所要求的点,存入(这里可以有多个符合的点)然后再对每个点按上面的那样寻找,直到找到出发点。。
还有一种是随便找到一条路线,再以中间点做为换乘点,搜寻附近的点,再判断搜寻到的点到起始和结束点的距离,进行判断,。

⑧ 百度地图或者谷歌地图中的关于公交转乘的算法是如何实现的

A*,根据数据特点做了很多工程上的优化

⑨ 公交线路最少换乘算法设计遇到的一个问题

考虑成两趟不同的公交车试试

⑩ 北京市公交车的票价算法公式

不是这样的,北京的公交车分为“单一票制”和“分段计价”两种:

“单一票制”的公交线路,如果没有卡的话,乘车1元,不管从什么地方上车、下车。

“分段计价”的公交线路是按照里程计价的,根本不看站的多少,因为站的距离是不一定的。分段计价的线路在所有的站牌上都标注着公里数,就是每个站的下面写的那些数字,把下车站的数减去上车站的数就是所需的公里数。一般的除了7XX、8XX、9XX的公交车外,都是12公里以内1元,以后每多出5公里加价0.5元。7XX公交车是前10公里1元,以后每增加10公里加价1元。8XX的公交车是:前10公里1元,以后每增加5公里加价1元。9XX的公交车属于八方达公司的远郊线路,计价方式比较复杂。。

“分段计价”线路的售票员手里都有一张站位表,上面写的不是站数,而是公里数。。

热点内容
家庭电脑做无盘服务器 发布:2024-09-29 19:23:35 浏览:999
乐初手机的配置怎么样 发布:2024-09-29 18:50:36 浏览:949
linux当天的文件夹 发布:2024-09-29 18:45:08 浏览:289
脚本干将 发布:2024-09-29 18:12:50 浏览:463
sqlserver主键索引 发布:2024-09-29 18:12:45 浏览:417
sql循环输出 发布:2024-09-29 18:12:43 浏览:778
版式文件服务器地址山东省 发布:2024-09-29 18:01:18 浏览:505
微博手机视频上传视频怎么下载到电脑上 发布:2024-09-29 18:00:45 浏览:329
苹果掌上公交安卓上叫什么 发布:2024-09-29 17:55:50 浏览:107
虚拟机如何查看配置 发布:2024-09-29 17:47:52 浏览:717