最小路径的程序.docVIP

  • 3
  • 0
  • 约2.09千字
  • 约 3页
  • 2018-03-11 发布于河南
  • 举报
最小路径的程序

根据以上分析最短路径算法,现在分别介绍 用VC + + 、Matlab 编写程序实现其算法: (1) 在VC + + 环境中编译的程序如下[1 ] : (有权无向图) # include〈iost ream. h〉 # define MAX 50 # define up 50000 int cost [MAX] [MAX] ; int dist [MAX] ,n ; st ruct {  int num; int pnode[MAX] ; } path[MAX] ; void creatgraph () {  int i , j , s , p , l , contin = 1 ;  cout〈〈″顶点个数:″;  cin 〉〉n ;  for (i = 0 ;i n ;i + + )  {   for (j = 0 ;j n ;j + + )    cost [ i ] [j ] = cost [j ] [ i ] = up ; cost [ i ] [ i ] = 0 ; } . . . . . . } void shortdjs () { int s[MAX] ; int mindis , dis , i , j , V0 = 0 , u ; for (i + 0 ;i n ;i + + ) {  dist [ i ] = cost [V0 ] [ i ] ; path[ i ] . pnode [ 0 ] = V0 ; path[ i ] . num = 0 ;  s[ i ] = 0 ;  }  s[V0 ] = 1 ;  for (i = 1 ;i n ;i + + )  {   ?? } void dispath () {  int i , j ;  cout〈〈″\ n 从V0 到各顶点的最短路径长度如 下: \ n″;  cout〈〈″\ t (起点- 终点)  最短长度 最短 路径\ n″;  cout〈〈″\ t - - - - - - - -  - - - - - - - -  - - - - - - - - \ n″;  for (i = 1 ;i n ;i + + )  {  ??   } void main () {  creatgraph () ; shortdjs () ; dispath () ; } (2) 在Matlab 环境中编译程序如(3) : (有权有 向图) 建立minroad. M 函数 function  [ P ,S(R) ] = minroad ( i , m , W) %  i 为最短路径的起始点, m 为图顶点数, W 为图的带权邻接矩阵, %  不构成边的两顶点之间的权用inf 表示。 %  S 是矩阵, S 的每一列从上到下记录了从始 点到终点的最短路径所经顶点的序号; %  R 是一行向量,记录了S 中所示路径的大小; %  P 是矩阵, P 中的每一列从上到倒数第二行 记录了从始点到终点的最短路径所经顶点的序 号;最后一行记录了该列所示路径的大小; %  S ( R) 的意思是:该位置根据需要书写S 或R 。  d = [ ] ;pp = [ ] ; n = [ ] ; n (1 ,1) = i ; V = 1 :m; V (i) = [ ] ; d = [ 0 ;i ] ; %  d 的第二行是每次求出的最短路径的终点,第 一行是最短路径的值 p = 2 ; [ a ,c ] = size (d) ; while~isempty (V)  [ td ,j ] = min (W(i ,V) ) ;tj = V(j) ;  for k = 2 :c   [ t1 ,jj ] = min (d (1 ,k) + W(d (2 ,k) ,V) ) ;   t2 = V(jj) ;pp (k - 1 , :) = [ t1 ,t2 ,jj ] ;  end  t = [ td ,tj ,j ;pp ] ; [ t3 ,t4 ] = min (t ( : ,1) ) ;  if t3 = = td , n (1 :2 ,p) = [ i ;t (t4 ,2) ] ;  else t5 = find (n ( : ,t4) ~ = 0) ;t6 = length (t5) ;   if d (2 ,t4) = = n (t6 ,t4)    n (1 :t6 + 1 ,p) = [ n (t5 ,t4) ;t (t4 ,2) ] ;    else ,n (1 :3 ,p) = [ i ;d (2 ,t4) ;t (t4 ,2) ] ;  end ;end  d = [ d ,[ t3 ;t (t4 ,2) ] ] ;V(t (t4 ,3) ) = [ ] ;

文档评论(0)

1亿VIP精品文档

相关文档