zxh. 发表于 2020-4-12 00:01:33

迪杰斯特拉算法求助

当k=1的时候会把v0-v3的最短路径设为8,当我往下走的时候发现改不了----小甲鱼的数据结构视频第65个视频的图(我好像等级太低放不了图。。。)程序如下




#define MAXVEX      9
#define      INFINITY      65535

typedef      int      Patharc;                        // 用于存储最短路径下标的数组
typedef int      ShortPathTable;                // 用于存储到各点最短路径的权值和

void ShortestPath_Dijkstar(MGraph G, int V0, Patharc *P, ShortPathTable *D)
{
      int v, w, k, min;
      int final;                // final = 1 表示已经求得顶点V0到Vw的最短路径
      
      // 初始化数据
      for( v=0; v < G.numVertexes; v++ )
      {
                final = 0;                              // 全部顶点初始化为未找到最短路径
                (*D) = G.arc;                // 将与V0点有连线的顶点加上权值
                (*P) = 0;                              // 初始化路径数组P为0
      }
      (*D) = 0;                // V0至V0的路径为0
      final = 1;                // V0至V0不需要求路径
      0
      // 开始主循环,每次求得V0到某个V顶点的最短路径
      for( v=1; v < G.numVertexes; v++ )
      {
                min = INFINITY;
                for( w=0; w < G.numVertexes; w++ )
                {
                        if( !final && (*D)<min )
                        {
                              k = w;
                              min = (*D);
                        }
                }
                final = 1;      // 将目前找到的最近的顶点置1
               
                // 修正当前最短路径及距离
                for( w=0; w < G.numVextexes; w++ )
                {
                        // 如果经过v顶点的路径比现在这条路径的长度短的话,更新!
                        if( !final && (min+G.arc < (*D)) )
                        {
                              (*D) = min + G.arc;      // 修改当前路径长度
                              (*p) = k;                                        // 存放前驱顶点
                        }
                }
      }
}

dwwyyds 发表于 2021-8-9 10:08:15

这个属实有问题,不知道怎么改

dwwyyds 发表于 2021-8-9 10:10:25

我做出来就是这样
D:    0   1       4      8       5      8         8      10      14
P:    0      0      1      1      2       4         3         6         7
F:    1      1      1      1      1       1         1         1         1
页: [1]
查看完整版本: 迪杰斯特拉算法求助