Score
0
Best
-
一台洗衣机、一台烘干机,还有一堆衣物。选出让最后一批最早离开烘干机的洗涤顺序。
每一批衣物都必须先洗后烘,而两种机器各只有一台。洗衣机一空出来就开始下一批,但烘干机只有在那批衣物洗完出来后才能开动——等待期间,烘干机就干站着。你能控制的只有顺序。
按你想洗的顺序点选衣物,两条带子就会被填满:上面一条是洗衣机,下面一条是烘干机,下面那条的空隙就是烘干机什么也没做的时间。大数字是最后一批终于出来的时刻。再点一次可以把它从队列里拿出来。
对顺序满意后按开机。与那一堆能达到的最短完成时刻完全一致,这一回合就算通过。错过则失去一颗心,并会给你看最优顺序,让你看清时间去了哪里。
每三个回合就多加一批衣物。错三次结束,时间走完也结束。分数就是你通过的回合数。
这是一个两台机器的流水作业问题,也是少数几个可以用手算出精确最优解的排程问题之一。这条规则叫约翰逊法则,出自1954年,短到足以背下来。把衣物分成两组:洗涤时间小于或等于烘干时间的,和洗涤时间更长的。先做第一组,按洗涤时间从短到长;再做第二组,按烘干时间从长到短——这样烘得最久的那批尽量靠后,而烘得最快的那批为一天收尾。
它为什么管用,用感觉理解比证明更容易。结束这一天的机器是烘干机,所以全部目标就是让它尽早有活干,并且让最后剩给它的活尽量少。洗得快、烘得慢的那批最适合开头:它几乎立刻腾空洗衣机,而洗衣机还在忙的时候烘干机就已经动起来了。洗得慢、烘得快的那批最适合收尾:后面没人等它,而它一进烘干机转眼就好。其余的自然会从这两端排定。
测量说明这条规则值多少。在数千个随机生成的衣物堆上,约翰逊顺序100%命中可能的最短完成时刻——这不是统计数据,而是定理。只学到一半、单纯按洗涤时间排序,大约命中48%;照着它们出现的顺序洗,大约10%,和随便打乱几乎没有差别。
值得点名的陷阱是贪心走法:每一步都挑那个让完成时刻最少推后的批次。它看起来最稳妥,却是这里测到的最差策略,命中率只有约4%,明显不如随机。它失败的原因是:开头几步几乎什么都不会改变完成时刻,于是它按一个毫无意义的并列规则来挑;等到选择真正开始起作用时,适合收尾的那几批早已用光。请按规则排序,而不是一步一步地试探。