2.1迪杰特斯拉

news/2024/11/23 23:17:43/

1.问题
对于下图使用Dijkstra算法求由顶点a到顶点h的最短路径
对于下图使用Dijkstra算法求由顶点a到顶点h的最短路径

解析
Dijkstra算法:从一个顶点到其余各顶点的最短路径算法,解决的是有权图中最短路径问题。迪杰斯特拉算法主要特点是从起始点开始,采用贪心算法的策略,每次遍历到始点距离最近且未访问过的顶点的邻接节点,直到扩展到终点为止。

1.s=,T=v-s=<剩下顶点>,T中顶去对应距离
若存在 <v0,vi> d<v0,vi> 为对应的权重
不存在 <v0,vi> d<v0,vi> 为无限
2.从下中选取s中顶点有关联边企鹅权值最小顶点k,加入s
3.修改T在顶点距离值,若加入k,从v0到vidistanc↓ 则修改
重复2、3知道k=vi

#include<stdio.h>
#include<stdlib.h>
int i, j, n, m, max = 10000, sum, x, y, z, k;
int a[100][100], d[100], p[100];
int main()
{scanf("%d%d", &n, &m);for (i = 1; i <= m; i++){scanf("%d%d%d", &x, &y, &z);a[x][y] = z;}for (i = 1; i <= n; i++) {d[i] = max;}d[1] = 0;for (i = 1; i <= n; i++){sum = max;for (j = 1; j <= n; j++) {if (!p[j] && d[j] < sum){sum = d[j];k = j;}}p[k] = 1;for (j = 1; j <= n; j++) {if (a[k][j] != 0 && !p[j] && d[j] > d[k] + a[k][j])d[j] = d[k] + a[k][j];}}printf("a->");for (i = 2; i < n; i++) {printf("%d->", d[i]);}printf("%d\n", d[n]);return 0;
}

http://www.ppmy.cn/news/527561.html

相关文章

入职培训—中国电子信息产业发展研究院(赛迪集团)简介

中国电子信息产业发展研究院&#xff08;China Center for Information Industry Development,简称研究院&#xff09;是由中国电子工业发展规划研究院、信息产业部计算机与微电子发展研究中心&#xff08;中国软件评测中心&#xff09;、信息产业部电子信息中心、中国电子报社…

迪杰斯特拉算法图解

迪杰斯特拉(Dijkstra)算法是典型最短路径算法&#xff0c;用于计算一个节点到其他节点的最短路径。 它的主要特点是以起始点为中心向外层层扩展(广度优先搜索思想)&#xff08;BFS&#xff09;&#xff0c;直到扩展到终点为止 基本思想 1.通过Dijkstra计算图G中的最短路径时&a…

再会迪杰斯特拉(Dijkstra)

迪杰斯特拉算法 算法说明 迪杰斯特拉算法用来求解某一个起点到以其他所有点为终点的最短路径长度&#xff1b; 算法思路-贪心算法 以下图为例 指定一个节点(即起点&#xff09;&#xff0c;例如计算“A”到其他节点的最短路径&#xff1b;引入两个集合&#xff08;S,U&…

迪杰斯特拉算法(dijkstra)

算法背景&#xff1a; 图中的A,B,C,D,E,F,G,代表7个村庄&#xff0c;边上的权值带表两村庄之间的距离&#xff0c;现在要从某一个村庄&#xff0c;例如G村庄&#xff0c;往另外几个村庄送邮件&#xff0c;问G村庄到其他各村庄的最短距离分别是多少&#xff1f; 思路&#xff1…

算法之迪杰斯特拉算法

迪杰斯特拉(Dijkstra)算法是典型求单源&#xff08;一个顶点到一个顶点&#xff09;最短路径算法&#xff0c;用于计算一个结点到其他结点的最短路径。 它的主要特点是以起始点为中心向外层层扩展(广度优先搜索思想)&#xff0c;直到扩展到终点为止。 迪杰斯特拉算法思想 设G…

迪杰斯特拉模板

迪杰斯特拉算法求无向图最短路 #include<cstring> #include<cstdio> #include<algorithm> #define inf 99999999 #define N 1010 using namespace std; int map[N][N];//原储存矩阵 int dist[N]; int visited[N],s[N]; int n,m;void Dijkstra(int J)//求每个…

迪杰斯特拉算法(入门理解)

Dijkstra算法&#xff08;求某一个点到其他点的最短距离&#xff09;&#xff1a; *南昌理工学院ACM暑假集训队 &#x1f603; Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法&#xff0c;用于计算一个节点到其他所有节点的最短路径。 主要特点是以起始点为中心向外层层扩…

如何理解迪杰斯特拉算法

路漫漫其修远兮&#xff0c;吾将上下而求索。                 ——屈原 在最短路径的求解算法中&#xff0c;迪杰斯特拉&#xff08;Dijkstra&#xff09;算法应该是非常出名的&#xff0c;但是对于初学者而言却又很难理解为什么这个算法是对的&#xff0c;找…