普利姆思想:先选中一个结点为一个整体,在剩下所有结点与该整体的所有边中选一条最短的边,将这条新出现边的一个顶点归入这个整体中,然后在新合成的整体与剩下的所有结点的所有边中选一条最短的边,将这条新出现边的一个顶点归入这个整体中,以此类推,直到所有结点遍历完。

举个实例,首先这是一个初始图表,如下所示:


第一步:我们先随机找一个基本点(例如1),然后分别列出该点到各边的距离,如下:

然后在上图中提出边长最短的一条1–>2,接下来以(1,2)为一个基本查找点,列出所有与(1,2)相关的边。

接下来,在边长为2,3,5,6间找出边长最短的边2,对应(1,3)两顶点,即将顶点3归入(1,2)内,然后(1,2,3)就变成了一个整体

最后,在边长为5,6,+&间找出最短的边5,对应(1,4)两顶点,将顶点4归入(1,2,3)中得到(1,2,3,4),即所有的点遍历完全,算法结束。

接下来代码代码演示

int visit[max];
int road[max];
int cog[max];
int j;
typedef struct AG
{int g[maxize][maxsize] //存储两个顶点及其相应的边长int n;     //存储图的结点总数int d;     //存储图的边数
}AG;
void MG(AG a,int i){int u;for(u=0;u<a.n,u++){visit[u]=0; //将每个结点做好唯一标志}for(u=1;u<=a.d;u++){if(i!=u)cog[u]=a.g[i][u];//先把这个点与各个点连接的距离记下来}j=0;visit[i]=1;road[j]=i;while(j!=a.n-1){for(k=0;k<a.n;k++)if(visit[k]==0){if(a.g[j][k]<cog[k])//重新将剩余各点最小的点进行排序cog[k]=a.g[j][k];if(term>cog[k])  //取剩下边中最小的一条边{term=cog[k];z=k;}}visit[z]=1;term=N;road[++j]=z;}
}

简单明了的普利姆算法相关推荐

  1. 普利姆算法解决最短修路问题

    普利姆算法 1.应用场景-修路问题 2.最小生成树 3.普利姆算法介绍 4.普利姆算法的最为简单的理解(重点): 理论上7个点要6条路就可以连通,随便从一个结点(村庄)出发(假设为A),先找该结点和邻 ...

  2. 普利姆算法(prim)求最小生成树(MST)过程详解

    生活中最小生成树的应用十分广泛,比如:要连通n个城市需要n-1条边线路,那么怎么样建设才能使工程造价最小呢?可以把线路的造价看成权值求这几个城市的连通图的最小生成树.求最小造价的过程也就转化成求最小生 ...

  3. [算法]最小生成树-普利姆算法

    2019独角兽企业重金招聘Python工程师标准>>> 目前正在看<大话数据结构>,其中介绍了普利姆算法,自己对算法理解能力太差,能够手写求出最小生成树,但是写出算法代码 ...

  4. 【数据结构】图的应用(普利姆算法、克鲁斯卡尔算法、迪杰斯特拉算法、弗洛伊德算法、拓扑排序)

    最小生成树 什么是最小生成树 是一棵树 - 无回路 - |V|个顶点一定有|V|-1条边 是生成树 - 包含全部顶点 - |V|-1条边全在图里 贪心算法 什么是"贪":每一步都要 ...

  5. 普利姆算法和修路问题

    修路问题 看一个应用场景和问题: 有胜利乡有7个村庄(A, B, C, D, E, F, G) ,现在需要修路把7个村庄连通 各个村庄的距离用边线表示(权) ,比如 A – B 距离 5公里 问:如何 ...

  6. 普利姆算法实现 C语言版 + C++版 +例题“村村通工程”

    普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树.意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点(英语:Vertex (graph theory)), ...

  7. Day595.普利姆算法 -数据结构和算法Java

    普利姆算法 一.问题引出 二.最小生成树 三.普利姆算法介绍 四.图解分析 五.代码实现 package com.achang.algorithm;import java.util.Arrays;/* ...

  8. 普利姆算法和克鲁斯卡尔算法求解最小生成树

    Q:最小生成树有什么用? A:譬如我要去五个城市旅游,每两个城市之间可能有路也可能没有,路的距离可能一样也可能不一样,随机从一个城市出发,我想要把每个城市走一遍,怎么样走过的路距离最短,比如我想从上海 ...

  9. 普利姆算法和克鲁斯卡尔算法解决最小生成树问题

    什么是最小生成树? 最小生成树(Minimum Cost Spanning Tree),简称MST. 最小生成树要求图是连通图.连通图指图中任意两个顶点都有路径相通,通常指无向图.理论上如果图是有向. ...

  10. 数据结构第十二天——普利姆算法和迪杰斯特拉算法

    普利姆(Prim)算法求最小生成树,也就是在包含 n个顶点的连通图中,找出只有(n-1)条边包含所有 n个顶点的连通子图,也就是所谓的极小连通子图 最小生成树:给定一个带权的无向连通图,如何选取一棵生 ...

最新文章

  1. 静态NAT,动态NAT与NAPT区别
  2. 3G时代需要“移动云计算专业”
  3. Hibernate入门之关系篇:多对一和一对多映射
  4. html制作翻页效果代码,使用原生JS实现滚轮翻页效果的示例代码
  5. 跨域资源共享CORS详解
  6. Linux双独立显卡SLI,玩点新奇的 双显卡给你不同的“SLI”效果
  7. 【华为云技术分享】敏捷实践:一周的Sprint太短,可以调吗
  8. ABP官方文档翻译 4.6 审计日志
  9. 13.地区设置(Locale Settings)
  10. 03-树2. List Leaves (25) 二叉树的层序遍历
  11. uniapp小程序生成海报图
  12. Axure制作音乐App原型图
  13. 将指定小程序页面设置为首页的两种方式
  14. linux下1060显卡驱动安装,ubuntu16.04 联想拯救者y7000笔记本电脑安装1060显卡驱动,及ubuntu16.04更新内核...
  15. 2018 CSDN博客之星评选,请投我一票~
  16. 面试官,你到底安的什么心?
  17. lvgl 8 中文内置字库配置
  18. 怎么解决localhost打不开
  19. AHB-SRAM简单设计之 顶层模块sram_top.v
  20. 1024之牛客之错误笔记+uart/IIC/232/485/SPI总结

热门文章

  1. 面试官:说说你对 options 请求的理解
  2. 商务周刊封面:别了,摩托罗拉
  3. mpeg怎么转换成mp4?
  4. 子网掩码以及网络地址、主机地址、广播地址
  5. uni-app入门教程
  6. TFP-161/100/6MM/6MM/MPU在红尘里,靠近菩提
  7. CentOS7.5 远程桌面设置
  8. 飞机客运售票系统oracle分析,民航机场售票管理系统.doc
  9. 阿里云云计算助理工程师认证(ACA)详细解读
  10. 太阳直射点纬度计算公式_高中地理:正午太阳高度公式的应用