网站大量收购独家精品文档,联系QQ:2885784924

Floyd算法在高速公路费率计算与路径生成的核对的应用研究.pdf

Floyd算法在高速公路费率计算与路径生成的核对的应用研究.pdf

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
T 第七届中国高速公路信息化管理及技术研讨会 The7thSeminarofChina E—information and 8 Exprssway ManagementTechnologi Floyd算法在高速公路 费率计算与路径生成的核对的应用 重庆高速公路发展有限公司联网收费结算中心庞栋 随着重庆路网规模的扩大,早期困扰我们的收费费率和清分费率的自动生成已经解决,但是 产生费率过后的核对依然是手工核对,而这是一个量大、烦琐、容易出错的工作。笔者通过对Floyd 算法的研究与应用,开发了一个小程序,基本解决了该问题。 Floyd算法的核心思想 单源最短路径,而Floyd算法是用于所有顶点对之间的最短路径。鉴于高速公路的费率与路径都 是路网之中任意两点之间的最小值问题,当权值为相邻站之间的收费费额时,就用于计算任意两 站之间的最小费率(即收费费率);当权值为相邻站之间的里程时,就用于计算任意两站之间的最 短路径。所以笔者选择Floyd算法。 下面介绍求所有顶点对之间最短路径的较直接的Hoyd算法,其基本思想是: 设V={1,2,,n),设置一个n*n矩阵c,初始时c[ij]=a[ij]。 然后,在矩阵C上做n次迭代。经第k次迭代之后,c[ij]的值是从顶点i到顶点J,且中间不 经过编号大于k的顶点的最短路径长度。在c上做第k次迭代时,用下面的公式来计算: clij]=min{c[i扎c[i,k】+c[k,j])。 这个公式可以直观地用下图来表示: Floyd算法用C++语言描述如下: T Templateclass ..270.. T 第七届中国高速公路信息化管理及技术研讨会 ofChina E—information and 8 The7thSeminar Exprssway ManagementTechnologi Void Floyd(T木水C,int木:lcpath) { //初始化C[i,J] for(inti=l:i=n:i++) for(int j=l:j=n:j++){ c[i][j]=a[i][J]: pathEi][J]=0: 、 for(inti--i:i=n:i++) C[i][i]=0: //循环计算C[i][J]的值 for(intk=l:k=n:k++) for(inti=l:i=n:i++) for(int j=l:j=n:j++){ Ttl=c[i][k]: Tt2=c[k][J]: Tt3=c[i][J]: Itl+t2t3)){ If(tl!=NoEdget21=NoEdge(t3==NoEdgeI c[i][J]=tl+t2: pathEi][j]=k:) ) ) 到J的边。在计算出c[i】0】的值后,容易由path记录的信息,找出相应的最短路径。 程序需要解决的问题 算法有了,现在需要将程序需要的基础信息(也即a【i][j】的值)输入程序后,即可产生任意两 站之间的最短路径和最小费额。 ◆最短路径的产生 把

文档评论(0)

带头大哥 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档