题目
有n个作业要在两台机器M1和M2组成的流水线上完成加工。每个作业i都必须先花时间ai在M1上加工,然后花时间bi在M2上加工。
确定n个作业的加工顺序,使得从作业1在机器M1上加工开始到作业n在机器M2上加工为止的总时间最短。

思路
假设a1=1,b1=3,a2=2,b2=4;
如果先加工a1,b1,那么需要时间1+3+4,如果先加工a2,b2,那么需要时间2+4+3,这两者之间的差异来源于3-2=1,等待时间为1,4-1=3,等待时间为3,等待时间少的花费时间少,如何减少等待时间呢?不难看出b2-a1,与b1-a2的差异来,也就是说要用a1,b1较小的那个数来减a2,b2中较大的那个数,但是a1,与b1不能交换顺序,那么怎么实现呢?
可看成两部分,一部分是a1<b1的那部分,一部分是a1>b1的那部分,a1<b1的那部分按照a1的大小从小向大排,而a1>b1的那部分倒过来看,就是前小后大,那么就可以看成一个序列,从两头看向中间,都是ai,bi前小后大。
到这里实际上就可以了,但是,如何证明他的正确性呢?

数学归纳法。
数学归纳法(Mathematical Induction, MI)是一种数学证明方法,通常被用于证明某个给定命题在整个(或者局部)自然数范围内成立。除了自然数以外,广义上的数学归纳法也可以用于证明一般良基结构,例如:集合论中的树。这种广义的数学归纳法应用于数学逻辑和计算机科学领域,称作结构归纳法。
在数论中,数学归纳法是以一种不同的方式来证明任意一个给定的情形都是正确的(第一个,第二个,第三个,一直下去概不例外)的数学定理。 [1]
虽然数学归纳法名字中有“归纳”,但是数学归纳法并非不严谨的归纳推理法,它属于完全严谨的演绎推理法。事实上,所有数学证明都是演绎法。

最简单和常见的数学归纳法是证明当n等于任意一个自然数时某命题成立。证明分下面两步:
证明当n= 1时命题成立。
假设n=m时命题成立,那么可以推导出在n=m+1时命题也成立。(m代表任意自然数)
这种方法的原理在于:首先证明在某个起点值时命题成立,然后证明从一个值到下一个值的过程有效。当这两点都已经证明,那么任意值都可以通过反复使用这个方法推导出来。把这个方法想成多米诺效应也许更容易理解一些。

按照假设,由2个推向3个,也就是从n个推向n+1个,不难发现上述的解决问题办法是正确的,
数学归纳法最大的好处是可以由简单派生,2到3,3到4,只要符合数学归纳法这种证明方法的条件,那么他就是正确的,***dp问题,层层递进的问题***用数学归纳法来标尺一下所猜想的方法的正确性,很有效。
最好的一点在于从最简单的开始出发,使得看上去眼花缭乱的问题安静了下来,问题最开始的时候,往往是比较简洁的

johnson 算法 贪心相关推荐

  1. poj 2751 双机调度问题Johnson算法(贪心)

    题意: 2台机器,n件任务,每件任务必须先在S1上做,再在S2上做.任务之间先做后做任意.求最早的完工时间. 分析: 这是一个经典问题:2台机器的情况下有多项式算法(Johnson算法),3台或以上的 ...

  2. 【图论】Johnson算法(多源最短路优化)

    样例题的话随便找个Floyd算法自己测一下吧,下面上封装后的Johnson板子: (好啦-既然你们懒那我给你们找个吧..AcWing.854) 链接:https://www.acwing.com/pr ...

  3. 算法导论——所有点对最短路径:稀疏图Johnson算法

    2019独角兽企业重金招聘Python工程师标准>>> package org.loda.graph;import org.loda.structure.Stack; import ...

  4. 加工生产调度(Johnson算法 双机流水作业调度问题)

    加工生产调度 题目描述: 某工厂收到了n个产品的订单,这n个产品分别在A.B两个车间加工,并且必须先在A车间加工后才可以到B车间加工. 某个产品i在A.B两车间加工的时间分别为Ai.Bi.怎样安排这n ...

  5. 所有结点对的最短路径问题之Johnson算法

    Johnson算法可以在O(V*V lgV + VE)的时间内找到所有节点对之间的最短路径,对于稀疏图来说,算法的渐进表现要由于重复平方法和FloydWarshall算法,如果图没有权值为负值的环路, ...

  6. 稀疏图Johnson算法

    在前面的文章<所有节点对的最短路径问题>中,我们介绍了用于稀疏图的Johnson算法,由于代码比较长,我们将其单独放在一篇文章之中. Johnson算法的时间复杂度在使用二叉堆作为最小优先 ...

  7. 【技巧】浅谈Johnson算法

    简介 Johnson算法主要用于求稀疏图上的全源最短路径.其主体思想是利用重赋权值的方法把一个原问题带负权的图转化为权值非负的图.然后再使用N次Dijkstra算法以求出全源最短路. --姜碧野< ...

  8. 图的最短路径算法及matlab实现(Dijkstra算法、Floyd算法、Bellman-Ford算法、Johnson 算法)

    图的最短路径算法 Dijkstra算法 Dijkstra算法研究的是从初始点到其他任一结点的最短路径,即单源最短路径问题,其对图的要求是不存在负权值的边. Dijkstra算法主要特点是以起始点为中心 ...

  9. 算法——所有节点对的最短路径:Floyd-Warshall算法、Johnson算法

    前言 前面介绍了单源最短路径问题,本文是介绍所有节点对的最短路径问题,首先我们会想到用前面所介绍的知识来求解该问题,根据不同类型的图可以用一下几种方法求解: 若无权重的图,则可以使用次BFS,时间复杂 ...

  10. JavaScript 算法 -- 贪心算法

    文章目录 贪心算法 例题一:分饼干 例题二:买卖股票的最佳时机 II 贪心算法 贪心算法是算法设计的一种方法. 期盼通过每个阶段的局部最优选择,从而达到全局的最优,但最后的结果不一定最优. 例题一:分 ...

最新文章

  1. vmware 12.5.3 linux,vmware12如何安装linux|opensuse42.3系统安装教程
  2. angularjs1-5,class,
  3. java IoT物联网server 读取javascript协议配置文件
  4. ThinkPHP 数据库操作(一) : 连接数据库
  5. php arraymap 匿名函数,结合代码详细为你讲解,php中的array_map,array_walk以及匿名函数...
  6. h5带mysql数据库的留言板_html5实现留言板的代码实例分享
  7. python 爬虫 微博 github_GitHub - berluo/weiboSpider-1: 新浪微博爬虫,用python爬取新浪微博数据...
  8. SPSS Statistics 分位数回归 翻译文档
  9. 清华大学计算机2021研究生录取分数线,清华大学2021年研究生录取分数线多少分...
  10. 【响应式Web前端设计】i标签和em标签的区别
  11. 计算机系统概述学后感,计算机操作系统学习心得体会总结(2)
  12. Oracle学习——第二讲(函数)
  13. MATLAB plot 双纵轴颜色修改方法——适用于所有版本(不限于2019b及以上)
  14. 制作html版圣诞礼物,10个圣诞礼物制作灵感 创意圣诞卡片手工制作
  15. 一千度近视眼学计算机,【震惊了】你见过近视8百,1千,3千,5千度?你见过9000度吗?...
  16. Android之动画全讲-刘志远-专题视频课程
  17. 换工作记(二)----- 2008个人简历
  18. XX软件前端开发面试
  19. 通过身体跳跃和蹲伏玩chromes dino游戏
  20. 什么是google的Android操作系统?

热门文章

  1. 电脑窗口切换常用的快捷键有哪些
  2. ddwrt php,DD-WRT官方支持设备列表_ddwrt
  3. 终于讲透了,史上最详细的RS485串口通讯!
  4. java制作进度条_使用Java高速实现进度条
  5. 下载网页 TS视频并自动合成视频
  6. “Python小屋”1300篇历史文章分类速查表
  7. 清华大学829电磁场考研资料
  8. 开源的第二代旅游网站程序_旅游网站模板_旅游网站源码
  9. 使用VC2005编译静态应用程序的方法
  10. HTML5期末大作业:家乡网站设计——石家庄(10页) HTML+CSS+JavaScrip 旅游网页html 家乡介绍html网页设计 dw旅游景点网页设计 web课程设计网页规划与设计