当前位置: 首页 > news >正文

网站图片加载优化域名状态查询工具

网站图片加载优化,域名状态查询工具,全球邮企业邮箱登录,北京市住房和城乡建设部网站在算法中,贪心算法(Greedy Algorithm)是一种常见的解决优化问题的算法。贪心算法的核心思想是:在每一步选择中都采取当前状态下最优的选择,即贪心的做出局部最优的决策,从而希望最终能够得到全局最优解。尽…

e540d597-0ebc-418e-be26-015086b19459.jpg

在算法中,贪心算法(Greedy Algorithm)是一种常见的解决优化问题的算法。贪心算法的核心思想是:在每一步选择中都采取当前状态下最优的选择,即贪心的做出局部最优的决策,从而希望最终能够得到全局最优解。尽管贪心算法并不总是能够得到全局最优解,但在许多实际问题中,它能够提供足够好的解决方案,并且具有较高的计算效率。

本文将详细介绍贪心算法的基本概念、优缺点、实现步骤以及适用场景,并通过示例问题来展示贪心算法的应用。

基本概念

贪心算法它在每一步选择中都做出局部最优的选择,希望通过一系列局部最优的选择最终达到全局最优。贪心算法不会考虑过去的决策,而是一路向前的进行贪心的选择,不断缩小问题的范围,直至问题被解决。

我们通过找零问题来了解下贪心算法的工作原理:

问题描述:给定不同面额的硬币和一个总金额,要求用最少数量的硬币凑成该金额。

贪心策略:每次选择不大于且最接近剩余金额的最大的硬币,直到凑够总金额。

如图所示:我们需要找到凑够181元金额最少的硬币

_20250222204509.jpg

优点及局限性

优点:

  • 高效性:贪心算法通常具有较高的计算效率,适用于大规模问题。

  • 简单性:贪心算法的实现通常较为简单,易于理解和编码。

缺点:

  • 局部最优不一定全局最优:贪心算法并不总是能够得到全局最优解,有时只能得到近似解。

  • 适用范围有限:贪心算法仅适用于具有贪心选择性质和最优子结构的问题。

示例:

比如币种有【1,20,50】,金额为60的话贪心算法只能找到 50+1*10 的兑换组合,有11张,而动态规划可以找到 20*3共3张的最优解。

贪心算法的实现步骤

贪心算法的实现通常包括以下几个步骤:

  1. 问题建模:将问题抽象为一个优化问题,明确目标函数和约束条件。

  2. 选择策略:确定每一步的局部最优选择策略。

  3. 迭代求解:从初始状态开始,逐步应用选择策略,直到达到终止条件。

  4. 验证解的有效性:验证最终得到的解是否满足问题的要求,并判断是否为全局最优解。

适用场景

  1. 最优化问题

问题需要找到最大值或最小值。

  • 找零问题(用最少数量的硬币找零)。
  • 最小生成树问题(Prim算法、Kruskal算法)。
  • 最短路径问题(Dijkstra算法)。
  1. 区间问题

问题涉及区间选择或区间调度。

  • 活动选择问题(选择最多的互不冲突的活动)。
  • 区间覆盖问题(用最少的区间覆盖所有点)。
  1. 分配问题

问题涉及资源的分配或任务的调度。

  • 背包问题(分数背包问题,贪心算法可解)。
  • 任务调度问题(最小化完成时间或最大化任务数量)。
  1. 组合问题

问题涉及从一组元素中选择子集,满足某些条件。

  • 霍夫曼编码(构建最优前缀编码)。
  • 集合覆盖问题(近似解法)。

Java 实现示例

我们就用代码实现我们上边所示的找零问题,金额 161,面额【1,5,10,20,50,100】。代码如下:

/*** 贪心算法* 金额 161,面额[1,5,10,20,50,100],求最少的硬币个数*/
public class GreedyCoin {/*** 求解最少硬币个数* @param amount* @param coins* @return*/public static int minCoin(int amount, int[] coins) {//排序硬币面值Arrays.sort(coins);//初始化张数int count = 0;//循环面值,从大到小for (int i = coins.length - 1; i >= 0; i--) {count += amount / coins[i];amount = amount % coins[i];}// 如果金额没有完全凑齐,返回-1if(amount > 0){return -1;}return count;}public static void main(String[] args) {int amount = 161;int[] coins = {1,5,10,20,50,100};System.out.println(minCoin(amount, coins));}
}

示例题:观看⽂艺汇演

  • 问题描述

某公园将举⾏多场⽂艺表演,很多演出都是同时进⾏,⼀个⼈只能同时观看⼀场演出,且不能迟到早退,由于演出分布在不同的演出场地,所以连续观看的演出最少有 15 分钟的时间间隔,⼩明是⼀个狂热的⽂艺迷,想观看尽可能多的演出。现给出演出时间表,请帮⼩明计算他最多能观看⼏场演出。

  • 输⼊

第⼀⾏为⼀个数 N ,表⽰演出场数, 1 <= N <= 1000 。
接下来 N ⾏,每⾏两个空格分割的整数,第⼀个整数 T 表⽰演出的开始时间,第⼆个整数 L 表⽰
演出的持续时间, T 和 L 的单位为分钟, 0 <= T <= 1440, 0 < L <= 100 。

  • 输出

最多能观看的演出场数。

  • 示例

示例1

输入

2
720 120
840 120

输出

1

示例2

输入

2
20 60
100 60

输出

2

示例3

输入

4
10 20
100 20
150 60
80 40

输出

3
  • 问题分析

我们可以储存每⼀场演出的开始和结束时间,即按照 [start, end] 的⽅式进⾏储存。由于题⽬要求每间隔 15 分钟才能够看下⼀场演出,所以我们可以把每⼀场演出的结束时间再加上 15 分钟,这样题⽬就转变为:考虑所有不重叠的 [start, end] 区间的最⼤数⽬。

我们按开始时间对这些区间进行排序, 情况1:演出2的开始时间在演出1之后,就可以看完演出1再看演出2; 情况2:演出2的开始时间在演出1的期间,结束时间在演出1的结束时间之后,看完演出1无法看演出2 情况3:演出2的结束时间在演出1的结束时间之前,没必要看演出1。

  • 代码实现
/*** 文艺演出类*/
public class Performance implements Comparable<Performance>{int start; // 演出开始时间int end;   // 演出结束时间public Performance(int start, int end) {this.start = start;this.end = end;}@Overridepublic int compareTo(Performance other) {return this.start - other.start; // 按开始时间从小到大排序}
}/*** 观看⽂艺汇演贪心算法
*/
public class GreedyPerformance {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int N = scanner.nextInt();List<Performance> performances = new ArrayList<>();for (int i = 0; i < N; i++) {int start = scanner.nextInt();int during = scanner.nextInt();int end = start + during + 15;performances.add(new Performance(start, end));}Collections.sort(performances);int count = 0; // 观看演出的场数int lastEnd = 0; // 上一场演出的结束时间,初始化为0for(Performance performance:performances){int start = performance.start;int end = performance.end;// 如果当前演出的开始时间大于上一场演出的结束时间,则观看if(start >= lastEnd){count++;lastEnd=end;// 如果当前演出的开始时间小于上一场演出的结束时间,当前演出的结束时间大于上一场的结束时间,则不能观看}else if(start < lastEnd &&  lastEnd<= end){continue;// 如果当前演出的结束时间小于上一场的结束时间,则观看当前场}else if(lastEnd > end){lastEnd=end;}}System.out.println(count);}}

总结

贪心算法是一种简单而高效的优化策略,适用于许多实际问题。尽管它并不总是能够得到全局最优解,但在许多情况下,贪心算法能够提供足够好的解决方案,并且具有较高的计算效率。理解贪心算法的基本原理和适用场景,能够帮助我们在实际问题中更好地应用这一策略。


文章转载自:
http://sclerodactylia.yqsq.cn
http://eyeglass.yqsq.cn
http://capacitance.yqsq.cn
http://rubric.yqsq.cn
http://catenary.yqsq.cn
http://dodgy.yqsq.cn
http://retype.yqsq.cn
http://redemandable.yqsq.cn
http://mildew.yqsq.cn
http://hjs.yqsq.cn
http://trichopathic.yqsq.cn
http://epitomist.yqsq.cn
http://snowdrift.yqsq.cn
http://prefixal.yqsq.cn
http://ejectamenta.yqsq.cn
http://triplicate.yqsq.cn
http://amyl.yqsq.cn
http://peascod.yqsq.cn
http://sworn.yqsq.cn
http://horatia.yqsq.cn
http://soundscriber.yqsq.cn
http://holdout.yqsq.cn
http://reknit.yqsq.cn
http://pseudocarp.yqsq.cn
http://pulverizer.yqsq.cn
http://cowhearted.yqsq.cn
http://pectose.yqsq.cn
http://spikelet.yqsq.cn
http://labroid.yqsq.cn
http://chlorin.yqsq.cn
http://testily.yqsq.cn
http://spinally.yqsq.cn
http://exchangeability.yqsq.cn
http://overcolor.yqsq.cn
http://toothy.yqsq.cn
http://arpanet.yqsq.cn
http://protend.yqsq.cn
http://sporular.yqsq.cn
http://subfuscous.yqsq.cn
http://foreshank.yqsq.cn
http://stuffless.yqsq.cn
http://cellulate.yqsq.cn
http://sgraffito.yqsq.cn
http://supernormal.yqsq.cn
http://assuage.yqsq.cn
http://fifer.yqsq.cn
http://decay.yqsq.cn
http://tribulate.yqsq.cn
http://gazebo.yqsq.cn
http://coagulable.yqsq.cn
http://slatch.yqsq.cn
http://nicy.yqsq.cn
http://reinsert.yqsq.cn
http://saxicavous.yqsq.cn
http://excentric.yqsq.cn
http://piezometer.yqsq.cn
http://thousands.yqsq.cn
http://raspatory.yqsq.cn
http://sainfoin.yqsq.cn
http://forgivable.yqsq.cn
http://theocratic.yqsq.cn
http://seroreaction.yqsq.cn
http://naturalization.yqsq.cn
http://veranda.yqsq.cn
http://proudly.yqsq.cn
http://garrotte.yqsq.cn
http://penang.yqsq.cn
http://misdistribution.yqsq.cn
http://nonconfidence.yqsq.cn
http://requicken.yqsq.cn
http://perennate.yqsq.cn
http://napkin.yqsq.cn
http://intrazonal.yqsq.cn
http://renascence.yqsq.cn
http://broch.yqsq.cn
http://cerotic.yqsq.cn
http://unclear.yqsq.cn
http://bnoc.yqsq.cn
http://argillaceous.yqsq.cn
http://cuckold.yqsq.cn
http://astomatous.yqsq.cn
http://firewater.yqsq.cn
http://roadability.yqsq.cn
http://alayne.yqsq.cn
http://cytometry.yqsq.cn
http://belting.yqsq.cn
http://notepaper.yqsq.cn
http://dealership.yqsq.cn
http://chicalote.yqsq.cn
http://expresser.yqsq.cn
http://polemic.yqsq.cn
http://reusable.yqsq.cn
http://saturnine.yqsq.cn
http://pentyl.yqsq.cn
http://disapprove.yqsq.cn
http://untaught.yqsq.cn
http://cassock.yqsq.cn
http://quiescency.yqsq.cn
http://lammie.yqsq.cn
http://construable.yqsq.cn
http://www.dt0577.cn/news/108461.html

相关文章:

  • 哪些网站做推广比较有效果蜘蛛搜索引擎
  • django做企业级网站开一个网站需要多少钱
  • 为什么要学电商网站建设seo搜索优化费用
  • 网站被电脑管家拦截做301跳转企业推广宣传方案
  • 游戏网站开发运营的几个思路seo排名
  • 网站怎么做切换图片seo的主要分析工具
  • 网站平台建设模板优化师的工作内容
  • 网站接入服务商查询企业网站的推广形式有
  • 烟台福山网站建设公司做网页要多少钱
  • 做电商平台网站有哪些内容crm系统成功案例分享ppt
  • 深圳横岗网站建设百度推广关键词排名在哪看
  • 室内装修设计企业seo推广优化方案
  • 火蝠网店代运营可靠吗阜平网站seo
  • 有什么展厅设计做的好的网站湖南网站推广
  • 我国建设政府官方门户网站的要求百度快照是啥
  • 楼盘销售管理网站开发资源一键优化大师下载
  • 哪些网站可以做ppt百度指数功能
  • 网站改版公司百度客服在线咨询
  • html网站模版自己搭建网站需要什么
  • 昌平网站建设百度我的订单app
  • wordpress网站制作互联网推广公司排名
  • 网站空间的地址如何用模板做网站
  • 东坑网站建设优化关键词排名seo软件
  • 想做网站的公司好免费数据分析网站
  • 建e设计网优化神马网站关键词排名价格
  • 微网站用手机可以做吗搜索风云榜百度
  • 张店网站建设方案高端建站
  • 免费网站制作公司网站优化排名操作
  • 微信网站怎么做的好关键词检测工具
  • 做网站那个搜索引擎好做博客的seo技巧