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

【贪心算法】简介

1.贪心算法

 贪心策略:解决问题的策略,局部最优----》全局最优

(1)把解决问题的过程分成若干步

(2)解决每一步的时候,都选择当前看起来的“最优”的算法

(3)“希望”得到全局最优解

例一:找零问题

只有一张50元,买了4元,如何找零?(店家有[20,10,5,1])

解答:50-4=46,来凑46

首先找最大的20元,46-20=26

再找最大的20元,26-6=6

再找20元太多了,再找10元太多了,再找5元,6-5=1

再找5元太多了,再找1元,1-1=0

例二:最小路径和

例三:背包问题

背包最大容量:8

123
体积v541
价值w1071

从体积考虑:一直选体积最小的1,选了8个3号物品 

从价值考虑:一直选当前可选的价值最高的,1号物品,3个3号物品

按性价比考虑:w/v:2,1.75,1一直选择性价比最高的,1号物品,3个3号物品

2.贪心算法的特点

(1)贪心策略的提出是没有标准和模板的

(2)可能每一道题的贪心策略都是不相同的

3.贪心策略的正确性

因为有可能“贪心策略”是一个错误的方法

正确的贪心策略需要“证明”(数学中的证明方法都可以)

证明:找零问题的正确性

[20,10,5,1]

假设最优解为:A,B,C,D

根据题目可知,能用面额大的尽量用

则B<=1,C<=1,D<=4

假设贪心解为:[a,b,c,d]

最优解为:[A,B,C,D]

因此有:

(1)a>=A

(2)a>A不可能,因为B<=1,C<=1,D<=4,加在一起10+5+1*4=19无法到达20

(3)a=A

(4)b>=B

(5)b>B不可能,因为C<=1,D<=4,加在一起5+1*4=9无法到达10

(6)b=B


http://www.kler.cn/a/578755.html

相关文章:

  • el-input-number添加自定义内容class-unit
  • 【算法题】小鱼的航程
  • AWS中使用CloudFront分发位于S3中的静态网站
  • SV学习笔记——数组、队列
  • spring boot+vue项目(免费)
  • es-初体验easy-es时报错:找不到mapper
  • Vue 过滤器 filter(s) 的使用
  • win32汇编环境,对话框中使用树形视图示例四
  • Objective-C 中 @synthesize VS @dynamic
  • webtinyserver讲解
  • pytorch retain_grad vs requires_grad
  • 电路研究9.3.1——合宙Air780EP中的AT开发指南:TCP 使用 SSL 示例
  • 关于VScode终端无法识别外部命令
  • mysql安装(演示为mac安装流程)
  • 使用 Python 批量提取 PDF 书签:一款实用工具的实现
  • Hadoop集群搭建(一)安装jdk
  • Nacos高频面试题10个
  • 深度学习与数据挖掘题库:401-500题精讲
  • 技术领域,有许多优秀的博客和网站
  • 基于PaddleNLP使用DeepSeek-R1搭建智能体