首页 > 编程语言 >最小生成树求解算法-普利姆算法

最小生成树求解算法-普利姆算法

时间:2023-11-14 10:56:24浏览次数:30  
标签:普利 min 求解 最小 算法 theClose lowcost adjvex

使用场景

对于连通图从一点出发到达其他各点有很多条路径,但是我们要求最小生成树包含的点和边,最小生成树边 = 点 - 1;

用途在于:求解一地到其他地点最短布线问题。

要求:

最小生成树(1)包含所有点 (2)点点间只有一条通路

相对于克鲁什卡尔算法,适用于稠密图,与边数无关。

编码

- 输入图,minDist[]最小路径

  - 由于能生成树的是连通图所以任意一个点开始遍历都可以 我们默认第一个

  - 创建theClose 包含所有点的 adjvex相邻边,theClose.lowcost;

  - 初始化 默认选择第一个点 for 

    - 更新 theClose->->adjvex相邻边 = i; theClose.lowcost = getWeight(1, i);

  - while 剩余没有遍历的点个数 > 0

    - 寻找代价最小点【lowcost>0 || lowcost<min,返回下标min_i;

    - 输出当前遍历路径 printf("v%d v%d\n",G.vexs[theclose[min_i].adjvex邻接边],G.vexs[min_i])

    - getWeight(min_i-各点[没有被加入最小路径点]) < theClose.lowcost,更新 theClose.adjvex = min_i; theClose.lowcost = getWeight(min_i, i);

    

  

标签:普利,min,求解,最小,算法,theClose,lowcost,adjvex
From: https://www.cnblogs.com/su27/p/17831106.html

相关文章

  • 图的最小生成树算法设计
    二叉树设计实验名称:二叉树设计(1)实验目的:1)掌握二叉树的逻辑结构。2)掌握二叉树的二叉链表存储结构;3)掌握基于二叉链表存储的二叉树的遍历等操作的实现。(2)主要内容:1)定义二叉链存储结构。2)实现二叉树的建立(利用扩展先序序列建立二叉链表存储的二叉树)、二叉树的遍历、统计二叉树结点......
  • 刷题笔记——基础算法(C)
    2181.合并零之间的节点-力扣(LeetCode)给你一个链表的头节点 head ,该链表包含由 0 分隔开的一连串整数。链表的 开端 和 末尾 的节点都满足 Node.val==0 。对于每两个相邻的 0 ,请你将它们之间的所有节点合并成一个节点,其值是所有已合并节点的值之和。然后将所有 0......
  • 算法学习笔记(38): 2-SAT
    SAT问题,也就是可满足性问题BooleanSatisfiabilityProblem,是第一个被证明的NPC问题。但是特殊的2-SAT我们可以通过图论的知识在线性复杂度内求解,构造出一组解。基本的模型在P4782【模板】2-SAT中有体现。经典的标志是:AB至少选一个,AB要么都选,要么都不选。简单的我......
  • 算法刷题记录-链表移除元素
    算法刷题记录-链表移除元素移除链表元素给你一个链表的头节点head和一个整数val,请你删除链表中所有满足Node.val==val的节点,并返回新的头节点。示例1:输入:head=[1,2,6,3,4,5,6],val=6输出:[1,2,3,4,5]示例2:输入:head=[],val=1输出:[]示例3:输入:hea......
  • 11.13算法
    题目二叉搜索树中第K小的元素给定一个二叉搜索树的根节点root,和一个整数k,请你设计一个算法查找其中第 k 个最小元素(从1开始计数)。示例1:输入:root=[3,1,4,null,2],k=1输出:1示例2:输入:root=[5,3,6,2,4,null,null,1],k=3输出:3提示:树中的节点数为n。......
  • 算法学习笔记(37): 矩阵
    一切线性操作都可以归为矩阵乘法--bySmallBasic本文是拿来玩耍,而不是学习的!目录线性递推超级矩阵快速幂!矩阵与邻接矩阵矩阵与线段树矩阵与FFT矩阵与期望不知道还能扯啥了矩阵的加法,要求两个矩阵大小相等,于是可以对位单点相加。\[C_{i,j}=A_{i,j}+B_{i,j}\]关于矩......
  • OAuth1.0的在http请求中的使用方式以及签名算法说明
    1、在httprequestheader的Authorization中,其格式为Authorization:"OAuthoauth_consumer_key="OAuthConsumeKey",oauth_token="OAuthToken",oauth_signature_method="HMAC-SHA256",oauth_timestamp="OAuthTimestamp",oauth_nonc......
  • 【C++】【图像处理】均值滤波和高斯滤波(低通滤波)算法解析(以.raw格式的图像为基础进行
    1voidmeanFilter(BYTE*image,intwidth,intheight,BYTE*outImg)2{3//均值滤波4intsmth[9];5inti,j,m,n;6BYTEblock[9];78//高斯卷积核初始化9smth[0]=1,smth[1]=2,smth[2]=1,10smth[3]=2,......
  • 实现冒泡排序算法
    实现冒泡排序算法#include<stdio.h> voidswap(int*xp,int*yp){   inttemp=*xp;   *xp=*yp;   *yp=temp;} voidbubbleSort(intarr[],intn){   for(inti=0;i<n-1;i++){       for(intj=0;j<n-i-1;j++){       ......
  • 算法题:约瑟夫环问题
    原题:N个人围成一圈顺序编号,从1号开始按1、2、3…顺序报数,报p者退出圈外,其余的人再从1、2、3开始报数,报p的人再退出圈外,以此类推。请按退出顺序输出每个退出人的原序号。输入格式:输入只有一行,包括一个整数N(1<=N<=3000)及一个整数p(1<=p<=5000)。输出格式:按退出顺序输出每个......