Jonhson算法解决简单的flowshop 2问题

呃。。上学期学的好多东西,又忘了好多。也就是这个最简单的小方法还记得

 

问题: 流水线生产,每一个生产过程需要在两台机子上先后执行(即,在第一台机子装内部件,在第二台机子上装外部件)。假设工厂收到了1000个客户订购的不同产品,他们需要生产这些产品。如何以最快的方式去生产完这个产品呢? 我们不考虑任何其他的因素,只考虑如何能让这1000个产品在工厂最快的生产,因为这样子的话工厂的工作效率提高,能做的东西也就多了。

 

我这里用一个小例子解释如何算法,

假设,有十个任务

 

任务在机器上1生产需要的时间:10,5,6,7,52,41,21,15,23,56

任务在机器上2生产需要的时间:15,50,61,27,12,41,22,16,25,30

 

 

解法:

 

我们将先找出,第一台机子生产时间比第2台机子生长时间短或者相等的任务拿出来,分别是

10,5  ,6  ,7  ,21,15,23,41

15,50,61,27,22,16,25,41

我们再根据第一台机子的从小到达排序,则是5,6,7,10,15,21,23这个顺序排列这些任务。我们按照这个顺序放在机器生产的前面

 

我们再找出,第一台机子上生产时间比第二台机子生产时间长的任务:

52,56

12,30

我们根据第2台机子的任务时间从大到校排序,则是(仍然根据第一台机子的任务时间给出结果)56,52

 

将上面的两个排序的结果合并在一起,就成了5,6,7,10,15,21,23,56,52这个顺序

 

这就是Johnson算法处理flowshop2简单问题的方法,当然这个解一定是最优解

 

 

时间复杂度 O(n*logn)  (可能是错的。。)

 

 

所以,计算机就是这么简单的在提高大家的劳动力的~吼吼!这个算法虽然用起来简答,不过我还是没想到他是怎么证明这就是最优算法的。我能臆断,但是没有科学的方法。我记得老师讲过。。忘了。。其实给我自己想,想一周也能出来,证明的话。。呃呃呃 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值