普里姆(Prim)算法

普里姆(Prim)算法思想

普里姆(Prim)算法是一某个顶点为起点,逐步找各顶点最小权值的边来构建最小生成树。
换一种说法:
从任意一顶点 v0 开始选择其最近顶点 v1 构成树 T1,再连接与 T1 最近顶点 v2 构成树 T2, 如此重复直到所有顶点均在所构成树中为止。

举例

下面一张无向网图

我们以V0为根结点,找到与V0相邻的结点中权值最小的V6

再从当前树中找到权值最小的是V1
所有结点同理可得

代码部分

实现思路

  • 1、声明两个数组adjvex(用于保存邻接顶点下标)、lowcost(用于记录当前生成树到生育定点的【最小权值】)
  • 2、设根结点为0【注:如果是要求从u结点开始,则在方法参数中有u,初始化时0改为u即可】(adjvex [0] =0, lowcost= G->adj[循环的 i ] [0])

    关于0点:
  • 3、循环套两个循环(循环1、循环2),总共循环N-1次,N为结点数
  • 循环1:找出lowcost[ j ]中最小的权值给min,下标给k
  • 结点放入树中,对应的lowcost设为0
  • 循环2:生成树加入了新的结点,从下标k开始更新lowcost数组值

普里姆(Prim)算法相关推荐

  1. 普里姆(Prim)算法和克鲁斯卡尔(Kruskal)算法

    图是一种基础又重要的数据结构,图的生成树是图的一个极小连通子图.最小生成树是无向连通网的所有生成树中边的权值之和最小的一棵生成树.求图的最小生成树可以牵引出很多经典的题目,例如在N个城市之间建立通讯网 ...

  2. 【数据结构】克鲁斯卡尔(Kruskal)算法 —PK— 普里姆(Prim)算法

    目录 一.克鲁斯卡尔(Kruskal)算法 二.普里姆(Prim)算法 三.两个算法对比 求图的最小生成树的典型算法: 克鲁斯卡尔(Kruskal)算法 普里姆(Prim)算法 注:考虑问题的出发点相 ...

  3. 数据结构与算法(7-3)最小生成树(普里姆(Prim)算法和克鲁斯卡尔(Kruskal)算法)

    目录 一.最小生成树简介 二.普里姆算法(Prim) 1.原理 2.存储 2-1.图顶点和权: 2-3. 最小生成树: 3.Prim()函数 3-1.新顶点入树 3-2.保留最小权 3-3. 找到最小 ...

  4. 最小生成树——普里姆(Prim)算法

    Prim算法的基本思想是以顶点为主导地位:从起始顶点出发,通过选择当前可用的最小权值的边把其他顶点加入到生成树中来.设连通无向网为G(V,E),在普里姆算法中,将顶点集合V分成两个子集T和T'. (1 ...

  5. 一文带你弄懂普里姆(Prim)算法和克鲁斯卡尔(Kruskal)算法

    Prim算法 Prim算法用于构造最小生成树,且适用于稠密图. 基本思想 : 归并顶点 设连通网络 N = { V, E } 从某顶点 u0 出发, 选择与它关联的具有最小权值的边(u0, v), 将 ...

  6. Java实现之普利姆(Prim)算法

    一.问题引入 1.问题引入 1)有胜利乡有7个村庄(A, B,C,D,E,F,G),现在需要修路把7个村庄连通 2)各个村庄的距离用边线表示(权),比如A-B距离5公里 3)问:如何修路保证各个村庄都 ...

  7. 算法:通过普利姆(Prim)算法,求出图的最小生成树

    请看如下的示例图,该图有 V1-V7 七个顶点,每个顶点之间的距离如图所示: 如果上面的图为七个城市的地理分布图,城市间相连的边上的数字为城市间的距离.我们要在这七个城市里面架设电线,使得每一个城市都 ...

  8. 最小生成树之Prim(普里姆)算法

    关于什么是Prim(普里姆算法)? 在实际生活中,我们常常碰到类似这种一类问题:如果要在n个城市之间建立通信联络网, 则连通n个城市仅仅须要n-1条线路.这时.我们须要考虑这样一个问题.怎样在最节省经 ...

  9. 用c语言描述普里姆算法和克鲁斯卡尔算法,克鲁斯卡尔算法+普里姆算法 详解

    克鲁斯卡尔算法: [1]克鲁斯卡尔算法 普里姆算法是以某顶点为起点,逐步找各顶点上最小权值的边来构建最小生成树. 克鲁斯卡尔算法是直接以边为目标去构建. 因为权值是在边上,直接去找最小权值的边来构建生 ...

  10. 数据结构与算法|最小生成树算法(普里姆算法、克鲁斯卡尔算法)

    最小生成树算法 C语言代码部分来自小甲鱼的<数据结构与算法> 文章目录 最小生成树算法 一.普里姆(Prim)算法 1.C语言代码 2.算法思路 二.克鲁斯卡尔(Kruskal)算法 1. ...

最新文章

  1. 初为项目经理,你应该怎么做?(转载)
  2. linux环境变量查询设置及保存
  3. JavaScript实现表单的分向提交
  4. 2个字段并在一次插入一个字段里面_elasticsearch外用与内观(二)-当插入文档时,elasticsearch都在做什么...
  5. 寻路优化(一)——二维地图上A*启发函数的设计探索
  6. ENS与Cloudflare合作推出改进的ETH.LINK服务
  7. 大数据-概念-应用-弊端
  8. 海信计算机辅助统,海信计算机辅助手术系统(CAS2.2)升级面市
  9. 收集的正则表达式列子大全,方面他人,自己备用
  10. 05 - Django应用第二步
  11. 真正的手机密码大全!(整理完整版)
  12. lodop php 快递单_Lodop打印模板 - 让Web打印易起来~~ – 基于ThinkPHP和Bootstrap的极速后台开发框架...
  13. 基于MATLAB的运动目标检测系统
  14. Docker1.8 官方中文文档
  15. 关于快递查询接口的实现
  16. 走楼梯(斐波那契数列)
  17. 中美自动驾驶最新融资情况:千万级与十亿级美元的距离
  18. 微信小程序常用视图容器组件
  19. 解决Vue启动报错 npm ERR! @1.0.0 dev: node build/dev-server.js
  20. 华硕顽石第四代FL5900u拆机换电池

热门文章

  1. 用户查出本人所有待办流程
  2. 【 linux系统入门管理篇-第三章权限管理】
  3. 汽车美容养护店数字化升级,看音克如何赋能门店经营及增强会员消费
  4. 掌财社天风:“中国吴京.jpg”为什么火了?
  5. CSS_CSS让整个网页成灰色
  6. 【Python数据分析与数据挖掘】Matplotlib作图基本代码
  7. 工作小笔记——机器人底盘上里程计和惯导的融合
  8. 数据项目总结 -- 深圳租房数据分析
  9. win10 误删账户仍出现此账户登录但密码错误
  10. SnapGene 5.2.4 for Win中英文版 附安装教程