最短时间过桥问题

 

最短时间过桥问题


       问题如下:四个女人过桥,夜间有一火把,每次最多过两个,必需带火把,过桥速度不一样,分别为

  • no.1 1min
  • no.2 2min
  • no3 5min
  • no.4 10min

        两个人过用最慢一个的速度,火把不能扔,如何在17min内四个女人都过桥?

 

    想了一下,算法可以描述如下:

    设桥两端分别为A,B,设对象Oi过桥时间记为Ti,过桥总时间记为Time。

     1. 从全部四个人的速度中选择两个时间最小(速度最快)的人,称为全局最快速度对象,分别记最小时间为Min(Ti),次小时间为SMin(Ti)。Time初始时间为0。
     2. A->B:A端速度最快的两个人过河。记为:O(Min(Ti)),O(SMin(Ti)) : A->B。Time += SMin(Ti)。
     3. B->A:B端检查全局最快速度对象,从中选择最快速度对象返回A。记为:O(Min(Ti)):B->A。Time += Min(Ti)。
     4. A->B:A端选择速度最慢的两个人过河。分别记为O(Max(Ti)A),O(SMax(Ti)A): A->B。Time += Max(Ti)A
     5. B->A:B端检查全局最快速度对象,从中选择最快速度对象返回A。记为:O(SMin(Ti)):B->A。Time += SMin(Ti)。
     6. 重复步骤2-5,直至所有人过河为止。

       

      posted @ 2009-07-21 22:58  wangyile  阅读(1877)  评论(0编辑  收藏  举报