一、实验要求与目的

  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. poj 1033 Defragment
  2. vue项目按需引入element-ui,修改.babelrc文件之后报错
  3. 沙雕同事一来公司就把高并发的程序搞崩了,我心态也蹦了!
  4. OpenCV3学习(2.3)——图像读取与鼠标截图
  5. 带你了解Typescript的14个基础语法
  6. Number类型及方法(js)
  7. Java知多少(9) import及Java类的搜索路径
  8. HDU_2082 找单词 (生成函数)
  9. 使用C#与三菱PLC通讯
  10. Lomboz 3.3
  11. C#顺时针逆时针旋转图片
  12. c#做一个身份信息查询系统
  13. 立志让国内用户不再依赖国外DLP技术 天空卫士发布UCS新品
  14. bugku misc 11-15 解题报告
  15. transition使用
  16. MAC升级gcc版本
  17. 3DMax软件的功能,通过它制作出来的影视作品有很强的立体感
  18. 雨夜,谁动了你的雨伞他的心房?
  19. 《算法图解》系列笔记(七)—— 狄克斯特拉算法
  20. 中职升高职c语言程序设计教程课后答案,锦职业技术学院2020年单独招生计算机应用技术专业技能测试考试大纲(中职升高职)...

热门文章

  1. SPSS分析基础——T检验
  2. DSP2812入门4——构建完整工程
  3. 在 MATLAB 或 Python 中使用 ZOS-API 进行光线追跡的批次处理
  4. 计算机房电源解决方案,机房UPS电源解决方案
  5. 计算机无法安装网卡驱动,win7网卡驱动安装不了怎么修复_WIN7网卡驱动装不上如何解决...
  6. 浅谈一下workstation
  7. 自制一个简单的操作系统
  8. python-贪心算法
  9. 把照片的字转换为数字版
  10. 网页打开软件显示无法连接服务器,Safari 浏览器无法打开网页怎么办