图论最短路问题和最小生成树问题的区别

区别:

一 区别
最小生成树能够保证整个拓扑图的所有路径之和最小,但不能保证任意两点之间是最短路径。
最短路径是从一点出发,到达目的地的路径最小。
图论最短路问题——一个人的旅行
最小生成树问题——Agri-Net

图论最短路

包含dijkstra,spfa,Floyd
最短路dijkstra代码:

//最短路——Dijkstra#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int INF = 0x3f3f3f3f;
const int MAX_V = 205;
int edge[MAX_V][MAX_V] ;
int dis[MAX_V];
bool vis[MAX_V];
int N,A,B;void Dijkstra()
{int tmp,pos;memset(vis,false,sizeof(vis));for (int i = 1;i <= N;i++){dis[i] = edge[A][i];   //从哪里开始寻找}dis[A] = 0;for (int i = 2;i <= N;i++){tmp = INF;        //重新寻找for (int j = 1;j <= N;j++){if (!vis[j] && tmp > dis[j])  //找到最小的权值{tmp = dis[j];pos = j;}}if (tmp == INF)   break; //没有找的,直接进入下一个的寻找vis[pos] = true; //标记已经找过的点for (int j = 1;j <= N;j++)  //更新周围的点的权值{if (dis[pos] + edge[pos][j] < dis[j]){dis[j] = dis[pos] + edge[pos][j];}}}printf("%d\n",dis[B] == INF?-1:dis[B]);
}int main()
{while (~scanf("%d",&N) && N){int tmp;for (int i = 0;i <= N;i++){for (int j = 0;j <= i;j++){if (i == j)   edge[i][j] = edge[j][i] = 0;else   edge[i][j] = edge[j][i] = INF;}}scanf("%d%d",&A,&B);for (int i = 1;i <= N;i++){scanf("%d",&tmp);if (i - tmp > 0){edge[i][i-tmp] = 1;}if (i + tmp <= N){edge[i][i+tmp] = 1;}}Dijkstra();}return 0;
}

Floyd(不太理解)


for(k=1;k<=n;k++)   for(i=1;i<=n;i++)   for(j=1;j<=n;j++)   if(e[i][j]>e[i][k]+e[k][j])   e[i][j]=e[i][k]+e[k][j]; //实质就是动态规划

最小生成树

一.kruskal算法
二.prim算法


**最小生成树——prim算法**/*计算最小生成树的一种方法是使其连续地一步步长成。在每一步,都要把一个节点当做根并往上加边,这样也就把相关联的顶点加到增长中的树上。
在算法的任一时刻,我们都可以看到一个已经添加到树上的顶点集,而其余顶点尚未加到这颗树中。此时,算法在每一阶段都可以选择边(u,v),使得(u,v)的值是所有u在树上但v不在树上的边的值中的最小者,而找出一个新的顶点并把它添加到这棵树中。图指出该算法如何从v1开始构建最小生成树。开始时,v1在构建中的树上,它作为树的根但没有边。每一步添加一边和一个顶点到树上。*/int prim()
{memset(dis,INF,sizeof(dis));memset(vis,false,sizeof(vis));for (int i = 1;i <= N;i++){dis[i] = edge[i][1];} dis[1] = 0;vis[1] = true;int res = 0;for (int i = 1;i <= N - 1;i++){int tmp = INF,pos;for (int j = 1;j <= N;j++){if (!vis[j] && tmp > dis[j]){tmp = dis[j];pos = j;}}if (tmp == INF) return 0;vis[pos] = true;res += dis[pos];for (int j = 1;j <= N;j++){if (!vis[j] && edge[pos][j] < dis[j]) //注意最短路与生成树的更新条件很相似{dis[j] = edge[pos][j];}}}return res;
}

转载于:https://www.cnblogs.com/fzuljz/p/5701303.html

图论最短路问题和最小生成树问题的区别相关推荐

  1. 数学建模之图论——图与网络模型(二)(最小生成树问题、最大流问题)

    建议先看上一篇基本概念篇 https://blog.csdn.net/weixin_45755332/article/details/106899147 最小生成树 基本概念和方法 树:没有圈的连通图 ...

  2. Python小白的数学建模课-18.最小生成树问题

    Python小白的数学建模课-18.最小生成树问题 最小生成树(MST)是图论中的基本问题,具有广泛的实际应用,在数学建模中也经常出现. 路线设计.道路规划.官网布局.公交路线.网络设计,都可以转化为 ...

  3. 数学建模学习笔记(七)——图论最短路问题

    文章目录 一.综述 二.图论最短路问题 三.几个简单的作图方法 四.Dijkstra(迪杰斯特拉)算法 五.Bellman-Ford算法 六.总结 一.综述 本文主要根据图论的基本概念,介绍图论中常见 ...

  4. 数据结构与算法-Prim算法解析与解决修路最小生成树问题

    文章目录 简介 Prim算法 最小生成树 应用场景 问题描述 思路分析 代码实现 简介 Prim算法 ​ 普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树.意即由此算法搜索 ...

  5. 使用贪心算法解决最小生成树问题。

    使用贪心算法解决最小生成树问题. #include<iostream> #include<algorithm> using namespace std; const int M ...

  6. 实验1 最小生成树问题【Kruskal+Prim】

    1.贪心算法思想 贪心算法的基本思想是找出整体当中每个小的局部的最优解,并且将所有的这些局部最优解合起来形成整体上的一个最优解.因此能够使用贪心算法的问题必须满足下面的两个性质: 1.整体的最优解可以 ...

  7. 【算法】Kruskal算法(解决最小生成树问题) 含代码实现

    Kruskal算法和Prim算法一样,都是求最小生成树问题的流行算法. 算法思想: Kruskal算法按照边的权值的顺序从小到大查看一遍,如果不产生圈或者重边,就把当前这条边加入到生成树中. 算法的正 ...

  8. 最小生成树 kruskal_使用Kruskal算法求解Java最小生成树问题

    最小生成树 kruskal In Electronic Circuit we often required less wiring to connect pins together. We can m ...

  9. 【数据结构笔记29】最小生成树问题:Prim算法与Kruskal算法

    本次笔记内容: 8.1.1 Prim算法 8.1.2 Kruskal算法 文章目录 最小生成树问题 什么是最小生成树(Minimum Spanning Tree) 贪心算法 Prim算法 Kruska ...

  10. 关于单向TSP旅行商问题/修路问题/最小生成树问题的求解讨论

    旅行商问题,又称旅行者,推销员问题,货郎担问题.该问题十分经典,几十年前用于计算机国际竞赛,现在被用来作为算法的入门练习. 假设有一个商人要拜访n个城市,他必须走完所有路径,且路径不能重复,并且走到最 ...

最新文章

  1. 由各大企业移除MongoDB,回看关系模型与文档模型之争
  2. 矩阵的三角分解(LU)法(高斯消去法的矩阵形式分析)
  3. python网页数据存入数据库_python网络爬虫抓取动态网页并将数据存入数据库MySQL...
  4. Linux内存描述之概述--Linux内存管理(一)
  5. 通俗说基于Yarn的Map-Reduce过程
  6. 让低版本浏览器支持html5的标签
  7. python 编程(编写汽车保养时间表)
  8. 22.案例实战:把springboot的接口,自动生成接口文档
  9. Tuxera NTFS有什么优点可以让我们使用?
  10. 做微商不推广,也能赚钱?
  11. 离散作业--求左陪集
  12. 能源物联网及其关键技术
  13. OTA前装搭载率逼近50%,哪些供应商正在领跑细分赛道
  14. asp.net中@Register指令
  15. 备份恢复Lesson 07. lmproving Your Backups
  16. css浮动清除以及BFC
  17. afterlogic 7.0.1 php,免费webmail 7.0.1(after logic 最后一个免费版本)
  18. C语言第五章Structures Unions
  19. WebRTC通话原理-网络协商-NAT-ICE-STUN-TURN
  20. 最受程序员欢迎的公司榜单发布:2015 IT人才招聘趋势分析

热门文章

  1. Adobe产品在Lion上的已知问题
  2. 如何使用CleanMyMac快速释放系统内存?
  3. VEGAS不等双11,提前嗨购!助你成为视频大神!
  4. 如何用Camtasia进行内容补充?
  5. Java 集合系列4、家喻户晓之HashMap(上)
  6. iOS - Analyze 静态分析
  7. 【天池大数据赛题解析】资金流入流出预测(附Top4答辩ppt)
  8. oral_quiz-#StackWithMin#
  9. 启用RHEL5.6的VNC,使Windows可图形远程控制
  10. .NET多线程编程(2)——Thread类