公交路线查询算法

数据库中录入每一路公交走的线路包括途径站点,及站点间距离。
假设查询 从甲地到乙地的乘车路线
1,查询经过甲地的所有公交车组成集合B1,经过乙地的所有公交车组成B2
2,B1,B2取交集得到的公交车集合就是所有的直达车,比较路径长短,选择最佳。
但是,如若没有直达(即B1,B2交集为空)怎么办?
3,取车集合B1中所有车从甲地到终点站途径的所有站点集合P1,取车集合B2中所有车从始发站到乙地途径的所有站点得集合P2,取P1,P2的交集组成的车站集合P3就是转乘站点的集合。
4,假设P3集合中,有一个站点是圆明园东门站,取B1中在此停车的车组成集合B3,取B2中在此停车的车组成集合B4,那么B3中的任一辆车与B4中的任一辆车组合就是可以从甲地经圆明园东门站倒车到乙地的方案。
5,按4中方法罗列p3集合中每个站点的转乘方案。最后比较所有的转乘方案,选择最佳
以上是倒乘一次的方案,若仅倒乘一次还不能到达怎么办?——告诉查询者:您还是打的去吧! ^_^
附加:公交查询系统的数据存储设计
又顺便考虑了下数据存储的设计,^_^。
如果采用传统的关系数据库设计起来可能有些困难和麻烦,采用XML设计更理想一点。如下:
记录每一路公交车的行车路线,及站点间的距离。
< Bus >
 < Number > 743 </Number>
 < Route >
    < Stop >
      < Name > 中央党校北门</ Name >
      < Distance > 0</Distance>
      <!-- 距离始发站的距离,始发站为0 -->
    </ Stop >
    <!-- ……
    ……
    …… -->
    < Stop >
      < Name > 圆明园东门</ Name >
      < Distance > 10</Distance>
    </ Stop >
    <!-- ……
    ……
    …… -->
    < Stop >
      < Name > 西直河</ Name >
      < Distance > 20</Distance>
    </ Stop >
 </ Route >
</ Bus >
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
公交线路查询算法可以使用 MATLAB 编写。以下是一个简单的示例: 1. 定义路线图 可以使用 MATLAB 的图形处理工具箱中的函数定义路线图。比如说,使用 `graph` 函数创建一个有向图,每个节点代表一个公交站点,每个边代表两个节点之间的公交路线。 ```matlab G = graph(edges(:, 1), edges(:, 2), weights); ``` 其中,`edges` 是一个二维数组,每行表示一条边,第一列是起始节点,第二列是终止节点;`weights` 是一个向量,表示每条边的权重(比如说,距离或时间等)。 2. 查询最短路径 使用 MATLAB 的图形处理工具箱中的函数 `shortestpath`,可以查询两个节点之间的最短路径。 ```matlab P = shortestpath(G, start_node, end_node); ``` 其中,`start_node` 和 `end_node` 分别表示起始节点和终止节点,`P` 是一个向量,表示最短路径上的节点序列。 3. 显示查询结果 可以使用 MATLAB 的图形处理工具箱中的函数 `plot` 和 `highlight` 显示查询结果。比如说,将最短路径上的节点用不同的颜色标记出来。 ```matlab plot(G); highlight(G, P, 'EdgeColor', 'r', 'LineWidth', 2); ``` 其中,`plot(G)` 显示整个路线图,`highlight(G, P, ...)` 将最短路径上的节点用红色标记,线宽为 2。 以上是一个简单的公交线路查询算法的 MATLAB 实现示例。实际应用中,还需要考虑更多的因素,比如说公交车的运行时间表、换乘规划等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值