首页 > 其他分享 >可能是流水调度问题的证明

可能是流水调度问题的证明

时间:2023-11-06 11:57:15浏览次数:30  
标签:min 加工 调度 证明 a1 a2 b1 b2 流水

之前一直都丢在luogu,现在终于放这了

n个东西需要加工,在A加工的时间是ai, 在B加工的时间是bi,每个东西必须在A加工完后才能在B加工,求最少时间

贪心大体思路:不要让A有空闲时间,B的空闲时间尽量少是最优的

对于贪心思路采用归纳法

对于n = 1的情况,显然最少时间是a1 + b1


对于n = 2的情况:

第一种情况:

假设生产顺序是先(a1, b1)再(a2, b2):

如果b2加工前最后是在等待a2,也就是b1<a2,所以Tmin = a1 + a2 + b2

如果b2加工前最后是在等b1,也就是b1>a2,那么Tmin = a1 + b1 + b2

则容易看出Tmin = a1 + b1 + a2 + b2 - min(b1, a2)

第二种情况:

假设生产顺序是(a2,b2)再(a1,b1),同理可得Tmin = a1 + b1 + a2 + b2 - min(b2, a1)

综上,Tmin = a1 + b1 + a2 + b2 - max(min(b1, a2), min(b2, a1))

则可以得到Johnson不等式:

对于两个待加工的东西x, y,排序

min(x1, y2) < min(x2, y1)

会使得最终答案最优

其实就是,对于所有待加工的东西所花时间(a, b)分成p1类别a <= b和p2类别a > b,对于p1按a递增排序,对于p2按b递减排序,先执行第一种,再执行p2种,得到的答案一定最优

Johnson不等式和这个贪心思路为什么得到的顺序一定相同呢?

对于(a1, b1)和(a2, b2),假设a1 <= b1属于p1类别,a2 > b2属于第二类别

因为Johnson不等式有min(a1, b2) < min(a2, b1),无论左边的是a1小还是b2小,都一定小于右边的min(a2, b1),所以能够得到上面的思路

标签:min,加工,调度,证明,a1,a2,b1,b2,流水
From: https://www.cnblogs.com/blueparrot/p/17812336.html

相关文章

  • 解锁JVS低代码表单流水号配置的秘密:一步步教你如何设置
    在数字化时代,表单成为了我们日常生活和工作中不可或缺的一部分。无论是在线申请、数据录入还是业务流程管理,表单都发挥着重要的作用。为了确保数据的准确性和可追溯性,流水号的概念应运而生。流水号作为表单数据记录的唯一标识,为每一份数据赋予了独特的身份,使得数据的处理和管理更加......
  • Django实战项目-学习任务系统-配置定时调度任务
    接着上期代码内容,继续完善优化系统功能。 本次增加配置定时调度任务功能,学习任务系统定时任务管理添加的定时学习任务,需要通过配置调度任务,定时发布周期性的学习任务。以及每天定时发送学生用户属性值,积分值等信息到学生用户知晓。以及其他需要定时调度的任务都可以配置到定时......
  • linux 进程的管理和调度 --- __schedule() 函数分析
    运行队列Linux采用的是每个CPU都有自己的运行队列,这样做的好处:(1)每个CPU在自己的运行队列上选择任务降低了竞争;(2)某个任务位于一个CPU的运行队列上,经过多次调度后,内核趋于选择相同的CPU执行该任务,那么上次任务运行的变量很可能仍然在这个CPU缓存上,提高运行效率。 __schedule() ......
  • 1816_ChibiOS中的RT调度器
    GreyZhang/g_ChibiOS:IfoundanewRTOScalledChibiOSanditseemsinteresting!(github.com)1.ChibiOS的调度是一个严格根据优先级来的调度器。2.有一个与此功能相关的参数配置,用来设置时间片。如果这个数值设置为0,那么调度将会认为所有的线程优先级一样,线程之间的协同调......
  • FreeRTOS任务调度
    FreeRTOS任务调度器有哪些功能?FreeRTOS任务调度器具有以下功能:实现并发性和时间确定性:FreeRTOS的任务调度器是实现并发性和时间确定性的核心组件,它使用抢占式调度算法,通过分配优先级来确保高优先级的任务能够在低优先级任务之前执行。动态优先级调整:任务的优先级可以动态地......
  • FreeRTOS深入教程(任务创建的深入和任务调度机制分析)
    (文章目录)前言本篇文章将带大家深入学习任务的创建和分析任务调度的机制。一、深入理解任务的创建创建任务函数原型:BaseType_txTaskCreate(TaskFunction_tpxTaskCode,constchar*constpcName,/*lint!e971Unqualifiedchartypes......
  • 00-分布式任务调度技术之Quartz
    1Quartz任务调度整体流程:1.1组件调度器:工厂类创建Scheduler,根据触发器定义的时间规则调度任务任务:Job表示被调度的任务触发器:Trigger定义调度时间的元素,按啥时间规则执行任务。一个Job可被多个Trigger关联,但是一个Trigger只能关联一个Jobimportorg.quartz.*;import......
  • 05_LED流水灯Plus
    LED流水灯Plus修改延迟函数voidDelayXms(unsignedintxms) //@12.000MHz{ unsignedchari,j; while(xms--) { i=2; j=239; do { while(--j); }while(--i); }}修改代码#include<REGX52.H>voidDelayXms(unsignedintxms) //@12.000MHz......
  • 04_LED流水灯
    LED流水灯代码#include<REGX52.H>#include<intrins.h>voidDelay500ms() //@12.000MHz{ unsignedchari,j,k; _nop_(); i=4; j=205; k=187; do { do { while(--k); }while(--j); }while(--i);}voidmain(){ while(1) {......
  • POW(工作量证明)共识机制
    POW(工作量证明)共识机制POW(ProofofWork)是一种区块链共识机制技术,它是最早被使用的共识机制之一。POW机制的核心思想是通过计算来验证交易和生成新的区块。在POW机制中,区块链网络的参与者需要通过完成一定的难题,证明自己对于生成新区块的贡献,并获得一定的奖励。这个难题通常是......