过桥问题求解

来源:互联网 发布:擒妖股主图指标源码 编辑:程序博客网 时间:2024/04/29 04:56

  如果给定N个(速度不同)的旅行者,根据结论九我们知道有一个最佳方案,在最初的4步里用模式一或模式二把最慢的两个旅行者移动到彼岸,于是问题被约化成N-2个旅行者的形式。问题在于应该选择哪一种模式。继续假设A、B为走得最快和次快的旅行者,过桥所需时间分别为a、b;而Z、Y为走得最慢和次慢的旅行者,过桥所需时间分别为z、y。
  在第六节中我们发现使用模式一移动Z和Y到彼岸所需的时间为:
    z + a + y + a
使用模式二移动Z和Y到彼岸所需的时间为:
    b + a + z + b
所以,
    当2b>a+y时,应该使用模式一;
    当2b<a+y时,应该使用模式二;
    当2b=a+y时,使用模式一或二都可以。

 

  上面的讨论都是在N≥4时进行的,那时最快、次快、最慢和次慢是四个不同的人。所以我们还要稍微讨论一下N=1、2、3的情况。
  N=1、2是不用动脑子的,直接通通过桥就是了。
  N=3也很简单,用穷举法可以发现由最快的人往返一次把其他两人送过河是最快的方法。
  于是我们得到了最终结论:最佳方案构造法:以下是构造N个人(N≥1)过桥最佳方案的方法:
  1) 如果N=1、2,所有人直接过桥。
  2) 如果N=3,由最快的人往返一次把其他两人送过河。
  3) 如果N≥4,设A、B为走得最快和次快的旅行者,过桥所需时间分别为a、b;而Z、Y为走得最慢和次慢的旅行者,过桥所需时间分别为z、y。那么
    当2b>a+y时,使用模式一将Z和Y移动过桥;
    当2b<a+y时,使用模式二将Z和Y移动过桥;
    当2b=a+y时,使用模式一将Z和Y移动过桥。
这样就使问题转变为N-2个旅行者的情形,从而递归解决之。

 

  最后当然我们要举一个具体的例子:七个旅行者,所需过桥时间分别是1、4、5、5、5、8、9分钟。
  我们假设他们顺次为A、B、C、D、E、F、G,我们注意到C、D、E的速度一样,用第二节的方法太正规也太麻烦,我们可以人为规定C速度稍稍大于D,D速度又稍稍大于E。
采用结论十的方法,最快和次快的是A、B,时间为1和4;最慢和次慢的是G和F,时间为9和8。现在2*4<1+9,所以用模式二:
第1步:      A B →  4
第2步:       A ←  1
第3步:      F G →  9
第4步:       B ←  4
现在剩下A、B、C、D、E在此岸,最快和次快的是A、B,时间为1和4;最慢和次慢的是E和D,时间为5和5。现在2*4>1+5,所以用模式一:
第5步:      A E →  5
第6步:       A ←  1
第7步:      A D →  5
第8步:       A ←  1
现在剩下A、B、C在此岸,用N=3的办法结束:
第9步:      A C →  5
第10步:       A ←  1
第11步:      A B →  4
总的时间为
    4+1+9+4+5+1+5+1+5+1+4 = 40分钟

原创粉丝点击