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

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

中图分类号: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.

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

  1. 删除字符串中出现次数最少的字符,汽水瓶,简单密码

    删除字符串中出现次数最少的字符 实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除.输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序. 输入描述:字符串只包含小写英文字母, ...

  2. java毕业设计——基于java+JSP+J2EE的城市公交查询系统设计与实现(毕业论文+程序源码)——城市公交查询系统

    基于java+JSP+J2EE的城市公交查询系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+JSP+J2EE的城市公交查询系统设计与实现,文章末尾附有本毕业设计的论文和源码下 ...

  3. 基于JAVA的城市公交查询系统毕业论文(含源文件)

    获取项目源文件,学习交流联系Q:1225467431 摘要:公交查询系统是城市道路交通的重要组成部分,是城市发展的必然产物,是联系国民生活.社会生产和流通领域的关键环节.安阳城市公交查询系统的发展处于 ...

  4. 基于JAVA的城市公交查询系统毕业论文

    欢迎添加微信互相交流学习哦! 项目源码:https://gitee.com/oklongmm/biye2 摘要:公交查询系统是城市道路交通的重要组成部分,是城市发展的必然产物,是联系国民生活.社会生产 ...

  5. 微信公众号开发(公交线路查询-JAVA

    一.Dom4j的使用    在介绍公交线路开发之前,先简单介绍下Dom4j的使用,因为公交线路查询引用的是爱帮公交api,调用结果为xml格式文件,故用到了Dom4j这个包,当然还有其他的包来读取xm ...

  6. [附源码]JAVA+ssm计算机毕业设计城市公交系统(程序+Lw)

    项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...

  7. [附源码]Java计算机毕业设计SSM城市公交系统

    项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...

  8. 城市公交查询系统的设计与实现(Java+Web+MySQL+J2EE)

    目录 摘 要 1 Abstract 1 1 绪论 1 1.1 选题背景 1 1.2 国内外发展状况 1 1.3 选题的目的 1 1.4 研究手段及意义 1 2相关技术简介 3 2.1Jsp技术介绍 3 ...

  9. python counter 出现次数最少的元素_[PY3]——找出一个序列中出现次数最多的元素/collections.Counter 类的用法...

    问题 怎样找出一个序列中出现次数最多的元素呢? 解决方案 collections.Counter 类就是专门为这类问题而设计的, 它甚至有一个有用的 most_common() 方法直接给了你答案 c ...

最新文章

  1. hihocoder offer收割编程练习赛11 B 物品价值
  2. mysql 三阶多项式拟合_2014年9月份考试机械CAD_CAM第二次作业
  3. mysql主从同步单个表实验记录
  4. python和halcon_VisionPro和Halcon的详细对比
  5. PIM SSM技术原理与实验
  6. C语言基础入门实例汇总(共65个案例)
  7. 赢在CSDN——谈谈程序员为什么要持续学习和创作?对CSDN的期待、个人创作的规划
  8. 用无线热点入门树莓派4详解
  9. PCB多层板为什么都是偶数层
  10. 微信小程序: 开发文档
  11. 【算法面试】leetcode最常见的150道前端面试题 --- 中等题
  12. SQL server 升序与降序
  13. 1.计算机图形学 实验 线条(利用C语言图形函数绘图)
  14. 「 科研经验 」思考“工程解决方案”的思维
  15. Android平台交叉编译流程
  16. 【Golang】获取本地IP
  17. 线性代数的几何意义(一)——线性代数的意义
  18. MYSQL索引原理,优化SQL
  19. JAVA日记之SpringIoC和DI注解开发 ----喝最烈的酒.
  20. 四路抢答器的PLC程序设计

热门文章

  1. 软件测试工程师薪酬水平,软件测试工程师工资怎么样?高吗?
  2. 两寸证件照的尺寸是多少?如何换两寸证件照的背景色?
  3. 【CSS】calc 函数(动态计算长度值)
  4. 岁月温柔-10 妈妈的执念--不肯开空调,坚持使用油汀
  5. Ubuntu 20.04修改ip地址
  6. 图章制作软件测试自学,SecSeal安全电子印章系统内部测试大纲.doc
  7. Django 编写您的第一个Django应用
  8. 乱七八糟:迟到的入职两年个人总结
  9. 软件工程团队项目——搜查令
  10. android 壁纸制作教程,[教程]怎样制作Android手机壁纸/桌面