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

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


第一步:我们先随机找一个基本点(例如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. leetcode算法题--最长等差数列★
  2. OpenGL Indirect Culling间接剔除实例
  3. bkwin设置文本控件为多行模式
  4. 如何向女朋友解释什么是HTTP协议
  5. halcon识别ocr汉字_手写汉字识别——手写文本快速电子化的好方法
  6. ORA-28009:connection as SYS should be as SYSDBA OR SYSOPER
  7. 为Hyper-V上的Redhat Linux 打上集成服务
  8. opencv 轮廓层次结构
  9. Google云端语音识别app
  10. Kubernetes详解(十九)——Kubernetes Pod控制器
  11. QGIS获取OSM地图矢量数据
  12. Echarts 三维地图
  13. 面试必问为什么想做运营?做运营需要具备哪些特质或素质?
  14. ctl文件去空格,word文档段落如何空格去掉 word文档段落前空格
  15. 移动开发框架--------基于腾讯手Q样式规范Frozen UI
  16. 聊天室页面问题和解决方案
  17. mysql 查询dual报错_MYSQL基础02(查询)
  18. 检测昵称是否含有敏感词汇
  19. godaddy plesk mysql 连接 2014_GoDaddy Plesk主机安装Discuz论坛需要注意的问题 | Godaddy美国主机中文指南...
  20. hinge_在Swift中在iOS上重新创建Hinge的配置文件过渡

热门文章

  1. Python的print输出对齐
  2. Mysql安装后环境变量配置
  3. html自动获取图片,html img动态读取图片
  4. 【EagleEye】2020-ECCV-EagleEye: Fast Sub-net Evaluation for Efficient Neural Network Pruning-论文详解
  5. db2 cmd命令操作
  6. JAVA毕设项目民航售票管理系统(java+VUE+Mybatis+Maven+Mysql)
  7. 软件企业的基本条件和认定流程
  8. 【下载】《大教堂和市集》:开放源代码运动的《圣经》
  9. Y7000p的自带锁屏壁纸位置
  10. OpenGL ES2.0 的三种变量类型(uniform,attribute和varying)