算法求公交换乘c语言,公交换乘最短路径算法研究

本文探讨了在大规模加权图中求解最短路径的问题,提出了改进的Dijkstra算法和Floyd算法。通过利用加权图的子图,减少了计算时间和开销。在公交换乘场景下,算法能够有效地找出两点间的最短路径和距离。
摘要由CSDN通过智能技术生成

摘 要: 改进的Dijkstra算法和Floyd算法是求两点间最短距离和最短路径的最简单有效的方法。但是当图的顶点个数为上万或者几十万时,计算两点间的最短距离的时间开销将是非常巨大的。利用加权图的子图来解决这一问题。

关键词: 最短路径;加权图;子图;Dijkstra算法;Floyd算法

中图分类号:TP301.6 文献标识码:A 文章编号:1671-7597(2012)0220091-02

0 引言

交通系统中的最优路径算法等同于图论中的最短路径算法,根据不同的具体要求可以是长度最短或行驶时间最短。Dijkstra算法和Floyd算法是求解最短路径问题中最简单有效的两种算法。但是当加权图中的定点数非常大时,时间开销也会非常大。本文将讨论并解决这一问题。

1 改进的Dijkstra算法

传统Dijkstra算法是求解带权图G中从某一源点到其余各点的最短路径的一种有效算法,能够得到最优解.针对我们在公交换乘中最常需要计算的两点间的最短距离和路径,将传统的Dijkstra算法进行改进。算法的基本思想如下:输入起始节点s ,输入终点v。1)从存放图G中所有节点的集合U中找出距起始点最近的子节点;2)遍历考察这个点的子节点距离起始点的距离值,求出最小值;3)把该最小值放入集合S中,把该子节点放入集合H中,重复上述步骤直到集合U为空,或者找到终点。改进的Dijkstra算法实例分析:设加权图G(如图1):

应用改进的Dijkstra算法编程实现任意两点间的最短路径求解,例如求解图中1到7的最短路径运行程序结果为:最短路径为1 3 5 7,最短距离为9.00000。

2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值