您当前的位置: 首页 >  数据结构
  • 2浏览

    0关注

    880博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【大话数据结构C语言】47 最短路径(迪杰斯特拉算法)

CodeAllen嵌入式编程 发布时间:2021-05-15 00:26:35 ,浏览量:2

欢迎关注我的公众号是【CodeAllen】,关注回复【1024】获取资源 程序员技术交流①群:736386324 ,程序员技术交流②群:371394777    

在网图和非网图中,最短路径的含义是不同的。
网图是两顶点经过的边上 权值之和最少的路径。
非网图是两顶点之间经过的 边数最少的路径。
 
我们把路径起始的第一个顶点称为源点,最后一个顶点称为终点。
 
关于最短路径的算法,常用的有两种:
迪杰斯特拉算法(Dijkstra)
弗洛伊德算法(Floyd)
 
求V0到V8的最短路径

 
它并不是一下子就求出了V0到V8的最短路径,而是一步步求出它们之间顶点的最短路径,过程中都是基于已经求出的最短路径的基础上,求得更远顶点的最短路径,最终得到你要的结果
 
 
dijkstra.c
#define MAXVEX  9
#define INFINITY    65535

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

void ShortestPath_Dijkstar(MGraph G, int V0, Patharc *P, ShortPathTable *D)
{
    int v, w, k, min;
    int final[MAXVEX];      // final[w] = 1 表示已经求得顶点V0到Vw的最短路径
    
    // 初始化数据
    for( v=0; v             
关注
打赏
1665938897
查看更多评论
0.0387s