一、实验要求与目的

  1. 熟悉贪心算法的基本原理与适用范围。
  2. 使用贪心算法编程,求解最小生成树问题。

二、实验内容

任选一种贪心算法(Prim或Kruskal),求解最小生成树。对算法进行描述和复杂性分析。

编程实现,并给出测试实例

三、实现思想

Prim:S、V为两个集合,S中初始为{1},V中包含了所有的顶点,然后从V-S中选出和S中顶点距离最近的顶点j,并将j添加到S中。设置两个数组closest和lowcost。对于每个j属于V-S,closet[j]就是j在S中的邻接点,它于S中其他邻接点k相比较有v[j][closet[j]]<=v[j][k],其中lowcost[j]的值就是v[j][closest]。最后lowcost存储的就是相应的最小生成树的权值,而对于每个顶点,closest中可以找到最小生成树所对应的边。

四、实现代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define mmax 100
#define maxt 100000000
int v[mmax][mmax];void Prim(int n){int low[mmax];// int clo[mmax];bool s[mmax];//判断该节点是否在S中 s[1]=true;for(int i=2;i<=n;i++){low[i]=v[1][i];//初始化 clo[i]=1;s[i]=false;}for(int i=1;i<n;i++){//对剩余的n-1个顶点进行操作 ,此处的i并无实际意思,只是起到一个记录变量的作用 int min=maxt;int j=1;for(int k=2;k<=n;k++)//从V-S中找到S中边权最小的节点 if((low[k]<min)&&(!s[k])){min=low[k];j=k;}cout<<j<<" "<<clo[j]<<":"<<low[j]<<endl;s[j]=true;for(int k=2;k<=n;k++){//调整low中的值,加入j节点之后,使得两个集合中的距离最小 if((v[j][k]<low[k])&&(!s[k])){low[k]=v[j][k];clo[k]=j;}}}
} int main()
{int n,m;//n vertexs and m edgescin>>n>>m;int ii,jj,tt;for(int i=0;i<=n;i++){for(int j=0;j<=n;j++)v[i][j]=maxt;}for(int i=0;i<m;i++){cin>>ii>>jj>>tt;v[ii][jj]=tt;v[jj][ii]=tt;}Prim(n);return 0;
}//6 10
//1 2 6
//1 4 5
//1 3 1
//2 3 5
//2 5 3
//3 4 5
//3 5 6
//3 6 4
//4 6 2
//5 6 6

默默地学习,笨笨地成长!更多精彩内容欢迎大家关注微信公众号小果果学长,和你一起成长和学习哦!

用贪心算法求解最小生成树相关推荐

  1. 贪心算法求解TSP问题(python)

    这里使用贪心算法求解TSP问题的python版本 # dist 为距离矩阵,start_index 为起始位置 def tsp_quick(dist: list, start_index: int): ...

  2. 基于贪心算法求解TSP问题(JAVA)

    前段时间在搞贪心算法,为了举例,故拿TSP来开刀,写了段求解算法代码以便有需之人,注意代码考虑可读性从最容易理解角度写,没有优化,有需要可以自行优化! 详细 代码下载:http://www.demod ...

  3. 背包问题贪心算法求解

    题目 有一个背包,背包容量是M=150.有7个物品,物品可以分割成任意大小. 要求尽可能让装入背包中的物品总价值最大,但不能超过总容量. 思路 具有最优子结构性质和贪心选择性质.只要是所有物品的总重量 ...

  4. tsp java_基于贪心算法求解TSP问题(JAVA)

    前段时间在搞贪心算法,为了举例,故拿TSP来开刀,写了段求解算法代码以便有需之人,注意代码考虑可读性从最容易理解角度写,没有优化,有需要可以自行优化! 一.TPS问题 TSP问题(Travelling ...

  5. 贪心算法 背包问题代码 c语言,用贪心算法求解普通背包问题的C++代码

    用贪心算法求解普通背包问题的C++代码 2019年3月6日 125次阅读 来源: 贪心算法 #include #define  M  100 void display(int &n,doubl ...

  6. C++贪心算法求解找零钱问题(很形象)

    贪心算法求解找零钱问题 1.什么是贪心算法? 贪心算法是一种策略,总是做出在当前看来是最好的选择,总结出来几个字:寻找最优解 举个例子来说就是:"有一个只能往前走的果园,里边有各种水果让你免 ...

  7. 贪心算法求解 TSP 旅行商问题及其实现

    文章目录 一.TSP 概述 1. TSP 2. 数学模型 3. TSP分类 二.贪心算法 1. 算法思路 2. 算法框架 3. 问题 三.贪心算法求解 TSP 一.TSP 概述 1. TSP 旅行商问 ...

  8. 贪心算法求解一个序列中出现次数最多的元素问题

    贪心算法求解一个序列中出现次数最多的元素问题 题目: 指定n个正整数,编写一个实验程序找出它们中出现次数最多的数.如果这样的数有多个,请输出其中最小的一个. 输入描述:输入的第1行只有一个正整数n(1 ...

  9. 贪心算法 背包问题 java_贪心算法求解背包问题

    一.贪心算法 1.贪心算法概念 贪婪算法(Greedy algorithm)是一种对某些求最优解问题的更简单.更迅速的设计技术.用贪婪法设计算法的特点是一步一步地进行,常以当前情况为基础根据某个优化测 ...

  10. 用动态规划和贪心算法求解割绳子问题

    题目描述 给你一根长度为n的绳子,请把绳子剪成整数长的m段(m.n都是整数,n>1并且m>1,m<=n),每段绳子的长度记为k[1],-,k[m].请问k[1]x-xk[m]可能的最 ...

最新文章

  1. 模具和java哪个好_93年,本科毕业一年(模具专业),想学Java转行怎么样?
  2. 2023年中国AI论文影响力超越美国?网友:长期看,数量不等于质量
  3. Python模块EasyGui专题学习
  4. Crawler:基于BeautifulSoup库+requests库+伪装浏览器的方式实现爬取14年所有的福彩网页的福彩3D相关信息,并将其保存到Excel表格中
  5. 剖析——移动构造函数
  6. PopupMenu控件的使用
  7. python并发处理机制_Python并发处理
  8. 【金三银四】MySQL优化面试题(2021最新版)
  9. 基于java小区物业管理系统(含源文件)
  10. html中怎样把背景图片置顶,HTML5中背景图片如何设置
  11. 计算机网络拓扑结构 教案,计算机网络拓扑结构获奖教案.docx
  12. svg 可视化操作_使用SVG和D3可视化浏览指标
  13. 建造者模式(Builder)---创建型
  14. zabbix_get [71696]: Check access restrictions in Zabbix agent configuration
  15. android gridview日历,Android使用GridView实现日历的方法
  16. 浅谈百度地图的简单开发之引入基本地图以及修改地图样式(一)
  17. 研报网站waitu.com介绍
  18. 栈,队列(纸牌游戏,小猫钓鱼)
  19. 复习3-三栏布局/htttp/判断登录
  20. #009#献给阿尔吉侬的花束

热门文章

  1. JMETER Beanshell
  2. 无线射频识别技术开发与应用学习视频
  3. 高频直流电源在整改、降压和作用方面解决方案
  4. BP神经网络算法改进
  5. Trustzone OP-TEE 在QEMU平台上的编译、运行与测试
  6. CleanMyMac X最新2022如何激活许可证解决教程
  7. 全面剖析雅虎助手以及网络实名的流氓行径(1)
  8. Twincat下载,下载老版本的twincat软件
  9. FastDFS——Bug篇——上传txt文档乱码
  10. 计算机组成原理串行加法器延迟时间,2021考研408计算机组成原理:串行加法器和并行加法器...