数据结构第七章图分析.pptVIP

  • 3
  • 0
  • 约1.76万字
  • 约 68页
  • 2019-07-01 发布于中国
  • 举报
算法基本思想: 注:顶点V中下标从1开始,而D[n],C[n][n]下标从0开始。   假设用带权邻接矩阵C表示有向图,C[i-1][j-1]表示弧vi,vj上的权值。若边不存在,则用∞表示。 (1) 初始化:S={u} 只含源点      D[i]=C[u-1][i] (u从1开始,i从0开始) (2) 扩充S集  while(S中顶点数=n) 1) 选择vk, 使得D[k-1]=min{D[i-1] | vi∈V-S } 即vk为当前求得的一条从u出发的最短路径的终点。 2) S=S∪ {vk} 3) 修改数组D,即修改从u出发到集合V-S中任一顶点vj可达的最短路径长度。 若D[j-1]D[k-1]+C[k-1][j-1],则修改D[j-1]=D[k-1]+C[k-1][j-1] 4) 重复1)、2)、3)共n-1次,直到S中顶点数为n。 float D[n]; /*存放最短路径长度*/ int P[n]; /*路径向量,存放最短路径上的前趋结点*/ int S[n]; /*待扩充顶点集*/ void DIJKSTRA( float C[n][n], int v) /*v从1开始*/ { int i,j,k,v1,pre; int min,max=60,inf=80; v1=v-1; /

文档评论(0)

1亿VIP精品文档

相关文档