动态规划之独立任务最优调度

双机调度问题 最近算法作业布置了一道双机调度问题,要求要用动态规划来做,看了答案还是不太懂,花了很长时间终于勉强懂了,因此直接记下。 嗯,看的是这个的代码,看代码终于看懂的,附上代码链接: 双机调度问题代码参考链接 题目: 用2台处理机A和B处理n个作业。设第i个作业交给机器A处理时所需要的时间是a[i],若由机器B来处理,则所需要的时间是b[i]。现在要求每个作业只能由一台机器处理,每台机器都不能同时处理两个作业。设计一个动态规划算法,使得这两台机器处理完这n个作业的时间最短(从任何一台机器开工到最后一台机器停工的总的 阅读详情

问题概述

用 2 台处理机 A 和 B 处理 n 个作业。设第 i 个作业交给机器 A 处理时需要时间 i a ,若 由机器 B 来处理,则需要时间 i b 。由于各作业的特点和机器的性能关系,很可能对于某些 i, 有 i i a ³ b ,而对于某些 j,j≠i,有a j < bj 。既不能将一个作业分开由 2 台机器处理,也 没有一台机器能同时处理 2 个作业。设计一个动态规划算法,使得这 2 台机器处理完这 n 个作业的时间最短(从任何一台机器开工到最后一台机器停工的总时间)。

编程任务

对于给定的 2 台处理机 A 和 B 处理 n 个作业,找出一个最优调度方案,使 2 台机器处理 完这 n 个作业的时间最短。

数据输入

由文件 input.txt 提供输入数据。文件的第 1 行是 1 个正整数 n, 表示要处理 n 个作业。 接下来的 2 行中,每行有 n 个正整数,分别表示处理机 A 和 B 处理第 i 个作业需要的处理时 间。

输入

6

2 5 7 10 5 2

3 8 4 11 3 4

输出

15

 

分析:

(a1,a2,a3,a4,a5,a6)=(2,5,7,10,5,2);

(b1,b2,b3,b4,b5,b6)=(3,8,4,11,3,4);

用以下这张图来进行说明

(图片)

这里用p[i][k]来表示前k个任务a机器在i时间且b机器在p[i][k]时间内完成(即b机器完成k个任务的时间)

最优子结构:

第k个任务由哪个机器来完成所需时间最短

(1)使用a机器完成的时间最短:因为使用的是a机器,所以b机器的时间 是上一个任务的时间

 p[i][k]=p[i-a[k]][k-1]

(2)使用b机器 那么b机器就在上一个任务完成的基础上累加

 p[i][k]=p[i][k-1]+b[k]

#include<iostream>
using namespace std;
#define Max 1000
//p(i,k)表示前k个任务可由a在i时间内且b在p(i,k)时间内完成
int Min(int a,int b){
    return a<b?a:b;
}
int MAX(int a,int b){
    return a>b?a:b;
}
int main(){
    int n;
    cin>>n;
    int a[n+1]={};
    int b[n+1]={};
    int p[Max][n+1]={0};//p[i][j]用来表示在i这个时间下b机器完成j个任务的时间 
    int sum=0;
    for(int i=1;i<=n;i++){
        cin>>a[i];
      
    }
    for(int i=1;i<=n;i++){
        cin>>b[i];
    }
    for(int k=1;k<=n;k++){
         sum+=a[k];
         for(int i=0;i<=sum;i++){
             p[i][k]=p[i][k-1]+b[k];//初始为b完成第k个任务 
             if(i>=a[k])//当前时间可以满足a机器也可以完成的情况下 需要比较a b机器谁完成第k个任务时间更短(如果i比a[k]这个完成的任务时间还小 说明还没有到a机器完成这个任务的时间点 因为计算的i是根据a机器完成的时间和变化的 没到a机器需要完成的时间 相当于初始化b机器的时间以便后面作比较
             {
                p[i][k]=Min(p[i][k],p[i-a[k]][k-1]);//第二个式子表示当前选用a的话更小 所以因p存储的是b机器完成的时间 所以p机器完成第i个任务的时间是上一个任务的时间
             }
         }
    }
    int minT=100000;
    for(int i=0;i<=sum;i++){
        int t=MAX(p[i][n],i);//选择最长的
        if(minT>t)//在多个方案里面选择最小的
        minT=t;
    }
    cout<<minT<<endl;
}

 

 

 

 

 

 

 

 

 

 

动态规划-双机调度 在这里的实际含义是:x是代表完成前两个作业机器A的时间,a[1]是机器A完成第2个作业的时间,若x 阅读详情

相关推荐

动态规划——独立任务最优调度问题

独立任务最优调度问题

qq_43102225的博客 2563

独立任务的最优调度问题(动态规划)

关于独立任务的最优调度问题,搞懂本质会瞬间理解,建立动手画图理解

m0_62478418的博客 4014

独立任务最优调度问题 动态规划 含讲解

任务调度问题 题目:用2 台处理机A 和B 处理n 个作业。设第i 个作业交给机器A 处理时需要时间i a ,若由机器B 来处理,则需要时间i b 。由于各作业的特点和机器的性能关系,很可能对于某些i,有ai >=bi,而对于某些j,j≠i,有aj < bj 。既不能将一个作业分开由2 台机器处理,也没有一台机器能同时处理2 个作业。设计一个动态规划算法,使得这2 台机器处理完这n个作业的时间最短(从任何一台机器开工到最后一台机器停工的总时间)。研究一个实例: (a1,a2,a3,a4,a5,a

m0_46314516的博客 719

最佳调度(回溯法)

最佳调度问题 【问题描述】 假设有n个任务由k个可并行工作的机器完成。完成任务i需要的时间为ti。试设计一个算法找出完成这n个任务的最佳调度,使得完成全部任务的时间最早。 【编程任务】 对任意给定的整数n和k,以及完成任务i需要的时间为ti,i=1~n。编程计算完成这n个任务的最佳调度。 【输入样例】 7 3 2 14 4 16 6 5 3 【输出样例】 17 首先列个七乘三的二维数...

Amazing138的博客 3433

独立任务最优调度(动态规划)

题目: 用两台处理机A和B处理n个作业。设A和B处理第k个作业的时间分别为ak和bk。由于各个作业的特点和机器性能的关系,对某些作业,在A上的处理时间长;而对另一些作业,在B上的处理时间更长。一台处理机在某个时刻只能处理一个作业,而且作业处理是不可中断的,每个作业只能被处理一次。现在要找出一个最优调度方案,使得n个作业被这两台处理机处理完毕的时间和最少。 算法思路: 当完成k个作业时,设

qq_38010909的博客 2582

算法设计与分析——独立任务最优调度问题

文章目录问题描述问题分析算法设计——动态规划最优子结构性质:构造最优解算法复杂度分析代码 问题描述 独立任务最优调度问题 ★问题描述: 用2台处理机A和B处理n个作业。设第i个作业交给机器A处理时需要时间ai.若由机器B来处理,则需要时间bi。由于各作业的特点和机器的性能关系,很可能对于某些i,有ai≥bi,而对于某些j≠i,有aj< bj;。既不能将一个作业分开由2台机器处理,也没有一台机...

weixin_45523086的博客 8172

动态规划之独立任务最优调度问题

问题描述 给出了每个作业在A、B处理机上处理的时间,我们应该找出所有任务全部完成的调度时间。 题目分析 题目要求我们设计一个动态规划算法,计算出完成所有作业所用的最短时间。 根据我们动态规划的基本框架,先找到状态,然后选择,最终写出状态转移方程。 那我们先看一下状态,这里面的状态无非是作业处理时间以及哪个机器来处理作业。所以我们只需要对这几个状态来进行选择。然后写出状态转移方程即可。 这道题的状态转移方程有点难想,但是如果从选择的角度就没那么困难。 我们应该选择什么呢?这里面无非只有两个机器,所以我们只需

weixin_44755413的博客 6007

任务最优调度

已支持(Java & JS & Python & C & C++),考察:贪心思维

优快云 4971

独立任务最优调度问题 (动态规划dp)

参考:https://blog.youkuaiyun.com/LDUtyk/article/details/53995281 独立任务最优调度问题: 使用dp[i][j]数组表示的是第i个作业时,机器a花费不小于j时间的前提下,机器b完成作业i所需的最少时间。 当机器a在时间j的时候小于a[i]时,当然只能由b机器完成, 如果时间j大于a[i],那么考虑是由a还是b机器完成才好, 给a处理的话,b花费时间是dp[i-1][j-a[i]], 给b处理的话,b花费时间是dp[i-1][j]+b[i-1]; 从中取小值作为d

Changqing9的博客 1408

基于Hadoop的NBA篮球球员大数据分析与可视化系统大数据分析系统python的项目(源码+lw+部署文档+讲解等)

本系统以 Hadoop 为基础,致力于对 NBA 篮球球员的海量数据进行深入分析与可视化呈现。它能够收集来自多个数据源的丰富数据,包括球员比赛统计数据、身体素质数据、技术特点数据等。利用 Hadoop 的分布式存储和计算能力,对这些大规模数据进行高效处理。通过数据分析算法,挖掘球员的潜在价值和特点,如球员的得分能力趋势、篮板球效率变化、不同位置球员的技术差异等。同时,借助先进的可视化技术,将分析结果以直观的图表、图形等形式展示出来。教练和球队管理层可以通过可视化界面清晰地了解球员的综合表现和发展态势,从而制

QQ3359892174的博客 1314

GBase8a-GDCA认证考试-复习参考题

为提升产品服务水平定期举办GBase产品认证培训,培训更多GBase数据库专业人员,满足用户快速成长的业务需求,建设GBase产品生态。请注意甄别,根据所学知识综合判断,正确率97%(97分)。

weixin_41826637的博客 2374

独立任务最优调度问题-动态规划解决

问题描述: 用2台处理机A和B处理n个作业。设第i个作业交给机器A处理时需要时间ai,若由机器B来处理,则需要时间bi。由于各作业的特点和机器的性能关系,很可能对于某些i,有ai>bi,而对于某些j,j≠i,有aj>bj。既不能将一个作业分开由2台机器处理,也没有一台机器能同时处理2个作业。设计一个动态规划算法,使得这2台机器处理完这n个作业的时间最短(从任何一台机器开工到最后一台机器停工的总时间)。研究一个实例: (a1,a2,a3,a4,a5,a6)=(2,5,7,10,5,2);(b1,b

weixin_45745314的博客 2084

桌面运维工程师面试题详解(一)

桌面运维工程师面试题详解(一)

jks212454的博客 1425

【动态规划】独立任务最优调度问题

我认为做动态规划题的关键是找到一个合适的dp数组,确定它dp[i][j]的含义,用它和题目的最优子结构性质结合求解。具体思路如下:(笔记些许潦草hhh…)1.dp[i][j]表示第i个作业在第j(0-A,1-B)台机器上处理,两台机器处理完i个作业的最短总时间2.根据最优子结构性质貌似dp[i][0]=min(dp[i-1][0],dp[i-1][1])+a[i]dp[i][1]=min(dp[i-1][0],dp[i-1][1])+b[i]陷阱在这里,前面选择的不同会直接影响A、B机器的可用时刻,因此,直

Coco416的博客 1050

基于STM32L4XX、HAL库的ICP-10111压力传感器驱动程序设计

define ICP10111_CMD_MEAS_ULN 0x7866 // 超低噪声模式。#define ICP10111_CMD_MEAS_LP 0x609C // 低功耗模式。#define ICP10111_CMD_MEAS_LN 0x70DF // 低噪声模式。#define ICP10111_CMD_MEAS_N 0x6825 // 正常模式。ICP10111_MODE_LN, // 低噪声。// 等待测量完成(根据模式不同等待时间不同)

zhusl6688的博客 416

【论文汇总】Diffusion Models视频生成/视频编辑/可控视频生成/跨模态视频生成

本文总结了Diffusion Models视频生成领域相关的工作,目前共收录142篇,持续更新中。

沉迷单车的追风少年 1672

独立任务最优调度问题-动态规划

问题描述:用2台处理机A和B处理n个作业。设第i个作业交给机器A处理时需要时间ai,若由机器B来处理,则需要时间bi。由于各作业的特点和机器的性能关系,很可能对于某些i,有ai&gt;bi,而对于某些j,j≠i,有aj&gt;bj。既不能将一个作业分开由2台机器处理,也没有一台机器能同时处理2个作业。设计一个动态规划算法,使得这2台机器处理完这n个作业的时间最短(从任何一台机器开工到最后一台机器停...

HHHHHHep的博客 1万+

计算机视觉卷积神经网络(CNN)基础:从LeNet到ResNet

计算机视觉卷积神经网络(CNN)基础:从LeNet到ResNet,在计算机视觉领域,卷积神经网络(Convolutional Neural Network,CNN)已然成为推动众多任务发展的核心力量。从早期简单的图像识别,到如今复杂的目标检测、语义分割、图像生成等任务,CNN 都展现出了卓越的性能。CNN 的发展历程见证了一系列经典模型的诞生,其中 LeNet 作为开山之作,为 CNN 的发展奠定了基础,而 ResNet 则通过创新性的设计,突破了传统神经网络的限制,使得网络能够构建得更深、性能更优。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 14万+

独立任务最优调度 c语言,动态规划独立任务最优调度

用两台处理机A和B处理n个作业。设第i个作业交给A处理需要时间ai,交给B处理需要时间bi。由于各作业的特点和机器的性能关系,ai和bi之间没有明确的大小关系。既不能将一个作业分开由2台机器处理,也没有一台机器能同时处理2个作业。设计一个动态规划算法,使得这两台机器处理完这n个作业的时间最短。测试用例:6(任务数目)2 5 7 10 5 2(机器A处理这些任务的时间)3 8 4 11 3 4(机器...

weixin_36168447的博客 918

华为海思:大小海思的双轮驱动战略分析

大海思的定位清晰明确,即专注于为华为内部提供高性能、高集成度的芯片解决方案,以支持华为终端、服务器等业务的快速发展。小海思的产品线广泛,涵盖了广域物联、短距物联、手机穿戴、显示交互、智慧视觉、智慧媒体、MCU、模拟以及光模块等多个领域。通过提供多样化的芯片解决方案,小海思旨在满足外部客户的不同需求,拓展华为海思在芯片市场的份额和影响力。大海思的产品布局主要围绕华为的内部需求展开。在智能手机应用处理器方面,大海思的麒麟系列芯片已经成为华为手机的标志性产品,以其出色的性能和能效比赢得了市场的广泛认可。

dream it possible 2924

Python爬虫实战:Playwright 攻克京东图书新书榜(含动态价格与分页)!

我长期专注 Python 爬虫工程化实战,主理专栏 《Python爬虫实战》:从采集策略到反爬对抗,从数据清洗到分布式调度,持续输出可复用的方法论与可落地案例。内容主打一个“能跑、能用、能扩展”,让数据价值真正做到——抓得到、洗得净、用得上。

喵手的博客 593

suseoj 1209: 独立任务最优调度问题(动态规划)

1209: 独立任务最优调度问题 时间限制: 1 Sec内存限制: 128 MB提交: 3解决: 2[提交][状态][讨论版][命题人:liyuansong] 题目描述 用2台处理机A和B处理n个作业。设第i个作业交给机器A处理时需要时间ai,若由机器B来处理,则需要时间bi。由于各作业的特点和机器的性能关系,很可能对于某些i,有ai≥bi,而对于某些j,j≠...

devon2014的博客 277

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

独立最优任务调度(动态规划)

#include<bits/stdc++.h> #define n 6 #define suma 31 #define maxtime 10000 using namespace std; int a[n+1] = {-1,2,5,7,10,5,2}; int b[n+1] = {-1,3,8,4,11,3,4}; int f[n+1][suma+1]; int min(int a,int b){ if(a<b) return a; return b; } int max(int

yolojia的博客 442

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

【动态规划】独立任务最优调度

问题描述: 用2台处理机A和B处理n个作业。设第i个作业交给机器A处理时需要时间ai,若由机器B来处理,则需要时间bi。由于各作业的特点和机器的性能关系,很可能对于某些i,有ai>bi,而对于某些j,j≠i,有aj>bj。既不能将一个作业分开由2台机器处理,也没有一台机器能同时处理2个作业。设计一个动态规划算法,使得这2台机器处理完这n个作业的时间最短(从任何一台机器开工到最后一台机器停工的总时间)。研究一个实例: (a1,a2,a3,a4,a5,a6)=(2,5,7,10,5,2);(b1

WR的博客 566

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

上一篇: 数据库原理 第七章课后作业
下一篇: 动态规划之环形石子合并问题
柳小茶
博客等级 码龄7年 69粉丝 62原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值