java实现找一条转乘次数最少的公交线路?,基于最优换乘次数的城市公交查询算法...

摘要:城市公交查询系统是一个城市非常重要的基础设施,也是城市文明的一个重要标志。该文探讨城市公交查询系统中最优换乘次数的查询算法。算法以图论中邻接矩阵为基础,结合矩阵算术运算的特点和公交查询系统的要求建立算法。该算法可有效地查找出最优换乘次数的乘车路线,还可推广到火车,民航等相关问题的查询。

关键词:邻接矩阵;公交查询系统;数学模型

中图分类号:TP311文献标识码:A文章编号:1009-3044(2012)09-2084-03

An Urban Public Transport Inquiry Algorithm Based on Optimal Number of Transfers

MA Qian-li

(Ordos City Dongsheng Informatization Committee, Ordos 017000, China)

Abstract: The urban public transport inquiry system is a very important infrastructure,which is also a symbol of urban civilization . This paper is focused on the Algorithm with optimal number of transfers in the urban public transport inquiry system. The algorithm is based on the theory of adjacency matrix and combined the feature of the matrix arithmetic operations and the requirement of public transport inquiry system, which can effectively find out the optimal number of transfers routes and can also be extended to the railway and civil aviation inquiries.

Key words: adjacency matrix; public transport inquiry system; mathematical model

城市公共交通是一个城市的重要基础设施,是关系民生的社会公益事业。与其他出行方式相比,公交具有价格便宜、乘用方便安全、线路分布较广、道路占用率低、耗能低廉等优势,是解决城市交通拥堵的有效途径。发展城市公共交通是改善城市人居环境、构建和谐社会、促进城市可持续发展的必然要求,是科学发展观在城市建设和管理工作中的具体体现。

随着城市规模不断扩大,公交线路互连交汇,错综复杂,选择一条高效便捷的出行方案,使当地居民、外地游客获取足够的公交出行信息很有必要。对于每个城市公交查询系统,乘客均会面临多条线路的选择问题。通常,乘客需要在最少站数的路径和换乘次数最少的路径中做出选择。由于乘客换乘公交需要等待下一趟公交,大多乘客在路径差距不是很大的情况下更愿意选择换乘次数最少的乘车路线。该文正是基于这个特点,讨论公共交通网络中如何寻找两个结点间的一条路径使之换车次数最优。

1算法描述

1.1建立邻接矩阵

设公交系统中的站点数为N,建立第i路车连接站点的邻接矩阵:

m站到n站(m≠n)可以由第i路公交车连接0从m站到n站(m≠n)不可以由第i路公交车连接设公交系统中有M路的公交车,对所有线路公交车的邻接矩阵求和可得:

1.2查找路径

1)查找直达路径

如果bm,n≥1,说明有直达的公车路线,这时只需查找Bi(i=1,2???M)中的bi m,n。当bi

m,n=0,说明第i路车不为所要找车次,依次查询,找到所有乘车路线,并找出其时间最短的即可。

2)查找转乘一次的线路

如果bm,n=0,则没有直达路线,所以必须选择换乘。先寻找转乘一次的情况,这里根据邻接矩阵的性质知道,B×B=B2就为转

=0,则说明从m站到n转乘2次也不能完成此次行程,所以考虑转乘三次公交才能到达目的地的情况。这种情况一般在一个城市的公交系统里出现的可能性较小,可以利用前面的方法类似推倒即可。

5)查找转乘三次以上的路线

在公交查询系统中,要换乘三次以上的公交才能达到两个站点通常是距离很远,这在城市公交系统中出现的可能性也是微乎其微。此外,由于在换乘公交过程中,乘客一般需要等待公交车,等待三次以上会浪费乘客的大量时间,乘客一般会选择其他出行方式。该文认为考虑换乘三次以上的线路没有必要,也不具有实际意义。

1.3算法流程

在城市公交查询系统中,可以一次加入单个或者多个公交路线。为了提高查询算法的效率,在每次加入新的公交线路时,建立相应的邻接矩阵,对矩阵B、B2和B3进行重新计算,并作为全局变量保存起来。

该文整个算法的过程描述如下:输入:任意的两个站点p和q。输出:换乘的车次、换乘站点。(1)在矩阵B中查询bp,q。若bp,q≥1,记录p到q可以不用换乘公交,依次查找Bi(i=1,2???M)中的bi p,q,若bi p,q=1,记录乘坐车次i,待循环结束后转步骤(5);若bp,q=0,转步骤(2)。(2)在矩阵B2中查询b(1)

p,q=0,记录p到q需要换乘三次以上公交,建议乘客改变乘车方式,转步骤(5)。(5)输出乘坐车次和换乘站点或给出乘客乘坐建议。

011000 001101 100110 110011 211000 010100

通过查看B中对应元素就可以得知是否可以直达。例如:我们要查找A站是否可以直达B站,则可以通过查看b1,2的值。由于b1,2≥1,则可以得知A站到B站可以直达;然后在Bi查找bi1,2(i=1,2,3)可知b11,2=1,由此,一路车可以从A站直达B站。

若要查找任意两站的转乘一次线路,则需要计算B2:

101112 122112 322011 233201 123112 111112

若要查找B站到E站得乘车路线,首先查找B,由于b2,5=0,故不存在直达的公交;然后查找B2,由于b(1) 2,5=1,故存在换乘一次的路线;最后,查找换乘的车次。依次判定B1B2、B1B3、B2B1、B2B3、B3B1、B3B2中第二行第五列元素的值可知,B1B2中对应元素为1,故可以通过先乘坐1路车,再换乘2路车到终点站。至于换乘站点,可以查看B1第二行的元素和B2中第5列的元素可知,换乘站点为C站。

3结论

该文所述算法是利用矩阵运算特点所建立的,可以有效地搜索出的乘车路线,但由于利用矩阵运算,特别是转乘次数增多的情况,会使得运算量增大,影响计算速度。

参考文献:

[1]同济大学应用数学系.线性代数[M].北京:高等教育出版社,2003.

[2]赵静,但琦.数学建模与数学实验[M].北京:高等教育出版社,2002.

[3]苏金明,阮沈勇.MATLAB实用教程[M].北京:电子工业出版社,2005.

[4]严蔚敏,吴伟民.数据结构[M].北京:清华大学出版社,1997.

[5]尹志华,罗小龙.荆州电子地图公交查询算法与实现[J].测绘与空间地理信息,2008,31(1):141-143.

[6]张永梅,韩焱,陈立潮.城市公交查询系统的研究与设计[J].计算机应用,2005,25(2):422-425.

[7]于小东,杨国东,王凤艳,许惠平.城市公交查询系统的设计与实现[J].吉林大学学报,2005,23(6):675-678.

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值