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

【贪心算法】简介

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

相关文章:

  • vue+element|el-tree树设置懒加载和设置默认勾选
  • GO语言学习笔记
  • 蓝桥杯 C++ b组 统计子矩阵深度解析
  • 【MySQL】(4) 表的操作
  • Java集合面试题
  • 文件上传漏洞(upload-labs)
  • 基于Django创建一个WEB后端框架(DjangoRestFramework+MySQL)流程
  • Kafka Connect HTTP 项目常见问题解决方案
  • 小白学Agent技术[4](Agent设计模式)
  • HTTPS实现内容加密的逻辑
  • kali虚拟机登录页面发癫 大写锁定输入不了密码
  • WPF基础知识41-60
  • Vue3实战学习(Vue3集成Element-Plus(常用依赖、插件安装与导入 。按钮、图标组件。自定义主题的实现)(超详细))(4)
  • 第10章:性能优化与应用发布
  • 大白话Vue Router 中路由守卫(全局守卫、路由独享守卫、组件内守卫)的种类及应用场景
  • C++之序列容器(vector,list,dueqe)
  • Locker 是 Godot 的一个开源插件,它提供了一种快速且可扩展的方式来使用不同的策略保存和加载数据,并且具有开箱即用的 JSON 和加密功能。
  • 【技海登峰】Kafka漫谈系列(六)Java客户端之消费者Consumer核心概念与客户端配置详解
  • 【单片机】ARM 处理器简介
  • Java EE 进阶:Spring IoCDI
  • 雅安市纪委监委回应黄杨钿甜耳环事件:相关政府部门正在处理
  • A股三大股指低收:汽车股领涨,大金融走弱,两市成交近1.1万亿元
  • 选址江南制造总局旧址,上海工业博物馆建设有新进展
  • 马上评|安排见义勇为学生补考,善意与善意的双向奔赴
  • 日本航空自卫队一架练习机在爱知县坠毁
  • 飙升至熔断,巴基斯坦股市两大股指收盘涨逾9%