简单明了的普利姆算法
普利姆思想:先选中一个结点为一个整体,在剩下所有结点与该整体的所有边中选一条最短的边,将这条新出现边的一个顶点归入这个整体中,然后在新合成的整体与剩下的所有结点的所有边中选一条最短的边,将这条新出现边的一个顶点归入这个整体中,以此类推,直到所有结点遍历完。
举个实例,首先这是一个初始图表,如下所示:
第一步:我们先随机找一个基本点(例如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.应用场景-修路问题 2.最小生成树 3.普利姆算法介绍 4.普利姆算法的最为简单的理解(重点): 理论上7个点要6条路就可以连通,随便从一个结点(村庄)出发(假设为A),先找该结点和邻 ...
- 普利姆算法(prim)求最小生成树(MST)过程详解
生活中最小生成树的应用十分广泛,比如:要连通n个城市需要n-1条边线路,那么怎么样建设才能使工程造价最小呢?可以把线路的造价看成权值求这几个城市的连通图的最小生成树.求最小造价的过程也就转化成求最小生 ...
- [算法]最小生成树-普利姆算法
2019独角兽企业重金招聘Python工程师标准>>> 目前正在看<大话数据结构>,其中介绍了普利姆算法,自己对算法理解能力太差,能够手写求出最小生成树,但是写出算法代码 ...
- 【数据结构】图的应用(普利姆算法、克鲁斯卡尔算法、迪杰斯特拉算法、弗洛伊德算法、拓扑排序)
最小生成树 什么是最小生成树 是一棵树 - 无回路 - |V|个顶点一定有|V|-1条边 是生成树 - 包含全部顶点 - |V|-1条边全在图里 贪心算法 什么是"贪":每一步都要 ...
- 普利姆算法和修路问题
修路问题 看一个应用场景和问题: 有胜利乡有7个村庄(A, B, C, D, E, F, G) ,现在需要修路把7个村庄连通 各个村庄的距离用边线表示(权) ,比如 A – B 距离 5公里 问:如何 ...
- 普利姆算法实现 C语言版 + C++版 +例题“村村通工程”
普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树.意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点(英语:Vertex (graph theory)), ...
- Day595.普利姆算法 -数据结构和算法Java
普利姆算法 一.问题引出 二.最小生成树 三.普利姆算法介绍 四.图解分析 五.代码实现 package com.achang.algorithm;import java.util.Arrays;/* ...
- 普利姆算法和克鲁斯卡尔算法求解最小生成树
Q:最小生成树有什么用? A:譬如我要去五个城市旅游,每两个城市之间可能有路也可能没有,路的距离可能一样也可能不一样,随机从一个城市出发,我想要把每个城市走一遍,怎么样走过的路距离最短,比如我想从上海 ...
- 普利姆算法和克鲁斯卡尔算法解决最小生成树问题
什么是最小生成树? 最小生成树(Minimum Cost Spanning Tree),简称MST. 最小生成树要求图是连通图.连通图指图中任意两个顶点都有路径相通,通常指无向图.理论上如果图是有向. ...
- 数据结构第十二天——普利姆算法和迪杰斯特拉算法
普利姆(Prim)算法求最小生成树,也就是在包含 n个顶点的连通图中,找出只有(n-1)条边包含所有 n个顶点的连通子图,也就是所谓的极小连通子图 最小生成树:给定一个带权的无向连通图,如何选取一棵生 ...
最新文章
- leetcode算法题--最长等差数列★
- OpenGL Indirect Culling间接剔除实例
- bkwin设置文本控件为多行模式
- 如何向女朋友解释什么是HTTP协议
- halcon识别ocr汉字_手写汉字识别——手写文本快速电子化的好方法
- ORA-28009:connection as SYS should be as SYSDBA OR SYSOPER
- 为Hyper-V上的Redhat Linux 打上集成服务
- opencv 轮廓层次结构
- Google云端语音识别app
- Kubernetes详解(十九)——Kubernetes Pod控制器
- QGIS获取OSM地图矢量数据
- Echarts 三维地图
- 面试必问为什么想做运营?做运营需要具备哪些特质或素质?
- ctl文件去空格,word文档段落如何空格去掉 word文档段落前空格
- 移动开发框架--------基于腾讯手Q样式规范Frozen UI
- 聊天室页面问题和解决方案
- mysql 查询dual报错_MYSQL基础02(查询)
- 检测昵称是否含有敏感词汇
- godaddy plesk mysql 连接 2014_GoDaddy Plesk主机安装Discuz论坛需要注意的问题 | Godaddy美国主机中文指南...
- hinge_在Swift中在iOS上重新创建Hinge的配置文件过渡
热门文章
- Python的print输出对齐
- Mysql安装后环境变量配置
- html自动获取图片,html img动态读取图片
- 【EagleEye】2020-ECCV-EagleEye: Fast Sub-net Evaluation for Efficient Neural Network Pruning-论文详解
- db2 cmd命令操作
- JAVA毕设项目民航售票管理系统(java+VUE+Mybatis+Maven+Mysql)
- 软件企业的基本条件和认定流程
- 【下载】《大教堂和市集》:开放源代码运动的《圣经》
- Y7000p的自带锁屏壁纸位置
- OpenGL ES2.0 的三种变量类型(uniform,attribute和varying)