⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 graph_short_path_dijk.htm

📁 选址问题的几种经典算法,包括缔结塔拉斯算法的matlab和c++各种语言的版本
💻 HTM
字号:
<html><title>Dijkstra算法求两点间最短路径子程序</title><body bgcolor="#FFFFFF"><STYLE media=screen type=text/css> #floater { POSITION: absolute; VISIBILITY: visible; WIDTH: 10px; Z-INDEX: 10 } </STYLE> <IFRAME marginWidth=0 marginHeight=0    src="../commontop.html" frameBorder=0 width="881"    height="135" scrolling=no topmargin="0"> </IFRAME> <br><p>! Dijkstra算法求两点间最短路径子程序<br>  ! 修改自 杨洪,图论常用算法选编,北京:中国铁道出版社,1988<br>  ! 陆新征,北京清华大学土木工程系<br>  ! 2007.1.12.</p><IFRAME marginWidth=0 marginHeight=0 src="../keywords/cndown.html" frameBorder=0 width="881" height="140" scrolling=no topmargin="0"> </IFRAME><p>subroutine Dijkstra (N, NStart, NEnd, A, Dist, NNode, Path, Inf)<br>  implicit none<br>  integer,intent(in) :: N, NStart, NEnd ! 节点数目, 起点、终点节点号码<br>  real*8,intent(in) :: A(N,N) ! 节点间有向距离矩阵<br>  real*8,intent(out) :: Dist ! 最小距离<br>  integer,intent(out) :: NNode, Path(N) ! 最小路径经过的节点数,最小路径节点数组<br>  real*8 :: Inf ! 无穷大数</p><p> integer :: NodeMark(N) ! 节点是否已经标记<br>  integer :: FormerNode(N) ! 由开始节点到第i节点最短通路的前一个顶点编号<br>  real*8 :: S_to_i_Dist(N) ! 由开始节点到第i节点的最短通路长度<br>  integer :: I,J,K, KK, G0<br>  real*8 :: U, V, G</p><p> Dist=0.; <br>  Path=0; NodeMark=0; FormerNode=NStart; S_to_i_Dist=Inf<br>  NodeMark(NStart)=1; S_to_i_Dist(NStart)=0.d0; J=NStart</p><p> do <br>  G=Inf; G0=0<br>  do I=1,N<br>  if(NodeMark(I).ne.0) cycle<br>  U=S_to_i_Dist(I); V=S_to_i_Dist(J)+A(J,I)<br>  S_to_i_Dist(I)=min(U,V)<br>  if(U&gt;V) FormerNode(I)=J<br>  if(S_to_i_Dist(I)&gt;=G.or.S_to_i_Dist(I)&gt;=Inf) cycle<br>  G0=I; G=S_to_i_Dist(I)<br>  end do<br>  if(G0==0) then<br>  Dist=Inf<br>  return<br>  end if<br>  NodeMark(G0)=1; J=G0<br>  if(NodeMark(NEnd).ne.0) exit<br>  end do<br>  Dist=S_to_i_Dist(NEnd)<br>  Path(1)=NEnd; J=NEnd; K=2<br>  if(Dist==Inf) return<br>  do<br>  J=FormerNode(J)<br>  Path(K)=J<br>  K=K+1<br>  if(J==NStart) exit<br>  end do<br>  NNode=K-1<br>  do K=1, int(NNode/2)<br>  I=Path(K)<br>  J=NNode-K+1<br>  Path(K)=Path(J)<br>  Path(J)=I<br>  end do<br>  return<br>  end subroutine </p><p><br>  <br></p><table width="881" border="0">  <tr>     <td width="115">       <div align="center"><font size="2"><a href="../gbindex.htm">个人信息</a></font></div>    </td>    <td width="115">       <div align="center"><font size="2"><a href="../research.htm">研究工作</a></font></div>    </td>    <td width="115">       <div align="center"><font size="2"><a href="../pratical.htm">实际工程</a></font></div>    </td>    <td width="115">       <div align="center"><font size="2"><a href="../publications.htm">论文工作</a></font></div>    </td>    <td width="115">       <div align="center"><font size="2"><a href="../download.htm">资料下载</a></font></div>    </td>    <td width="115">       <div align="center"><font size="2"><a href="../issues.htm">专题</a></font></div>    </td>    <td width="115">       <div align="center"><font size="2"><a href="../others.htm">其他</a></font></div>    </td>  </tr></table><p>&nbsp;</p><div id="floater" style="position:absolute; left:900px; top:160px; width:121px; height:600px; z-index:12"> <IFRAME marginWidth=0 marginHeight=0 src="../cnNews.htm" frameBorder=0 width="120" height="470" scrolling=no topmargin="0"> </IFRAME> <p></p><div align="left"><font size="2" color="#0000FF"><a href="http://www.thu-civil.net/" target="_parent"><b>我们的实验室</b></a></font></div></div> <SCRIPT language=JavaScript src="../java/floater.js"> </SCRIPT> <IFRAME marginWidth=0 marginHeight=0 src="../horiz.htm" frameBorder=0 width="612" height="300" scrolling=no topmargin="0"> </IFRAME> <script src="http://www.thu-concrete.net/luxz/count.asp?style=0"></script><script src="http://www.google-analytics.com/urchin.js" type="text/javascript"></script><script type="text/javascript">_uacct = "UA-257704-1";urchinTracker();</script></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -