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

贪心算法(两个实例)

例一:调度问题

问题:由n项任务,每项任务的加工时间已知,从零时刻开始陆续加入一台机器上去加工,每个任务完成的时间是从0时刻到任务加工截至的时间。

求总完成时间(所有任务完成时间最短计划方案)

解:任务集合{1,2,3,4,5}

加工时间:t1=3,t2=8,t3=5,t4=10,t5=15

排序:t1<t3<t2<t4<t5

贪心算法的解:

3581015

                      0                 3                 8                  16                      26                      41

t总=3+(3+5)+(3+5+8)+(3+5+8+10)+(3+5+8+10+15)

     =3*5+5*4+8*3+10*2+15

     =94

问题建模:

输入任务集:

{1,2,3,4,......n}

第j项任务加工时间:tj∈Z+,j=1,2,3,4.....n

输出调度I,S的排列,i1,i2,i3,.....in,

t(I)= n/k=1∑(n-k+1)

解使得I*t(I*)值是最小:

贪心算法策略:加工时间按最短先做。

算法:加工时间按从小到大排序,依次加工。

证明:加入调度f的第i,j项任务相邻且有逆序。即ti>tj,交换任务i和j得到调度g

ftitg
9tgti

带入公式:

t(I)= n/k=1∑(n-k+1)

的:tg-ti<0

直觉不一定正确:

标号1234
重量3452
价值7992

思路:贪心算法:单位重量价值大的优先,总重不超过6

7/3>9/4>9/5>1

1,2,3,4

贪心算法的解:{1,4}重量5,价值9

更好的解:{2,4}重量6,价值11

算法设计:

  1. 问题建模
  2. 选择什么算法?如何描述这个算法?
  3. 这个算法是否所有的实列都得到最优解?如何证明?
  4. 如果不是能否证明?


例二投资问题

问题:m元钱,投资n个项目,效益函数fi(x),表示第i个投资项目x元的效益,i=1,2,3,......n,求如何分配每个项目的钱使得收入效益最大?

实例:5万元,投给四个项目:

xf1(x)f2(x)f3(x)f4(x)
00000
1110220
21251021
313103022
414153223

515204024


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

相关文章:

  • 纽约时报起诉OpenAI和微软将决定未来LLM的发展
  • HTML
  • 统一异常处理ControllerAdvice
  • Jmeter+Ant 接口自动化环境配置指南
  • RK3568平台开发系列讲解(基础篇)内核是如何发送事件到用户空间
  • git pull 报错: 在签出前,请清理存储库工作树
  • ChatGPT 遇到对手:Anthropic Claude 语言模型的崛起
  • EXCEL+PYTHON学习3
  • 【2024-03-12】设计模式之模板模式的理解
  • 剑指offer面试题36 数组中的逆序对
  • rust学习笔记(1-7)
  • 【类脑智能】脑网络通信模型分类及量化指标(附思维导图)
  • springboot基于spring boot的在线答题微信小程序
  • 微信小程序开发系列(三十四)·自定义组件的创建、注册以及使用(数据和方法事件的使用)
  • Python基础入门 --- 4.循环语句
  • HttpServer整合模块设计与实现(http模块五)
  • Android 开发 地图 polygon 显示信息
  • RTC的Google拥塞控制算法 rmcat-gcc-02
  • 确保云原生部署中的网络安全
  • 前端框架的发展史