最短时间过桥问题
最短时间过桥问题
问题如下:四个女人过桥,夜间有一火把,每次最多过两个,必需带火把,过桥速度不一样,分别为
- no.1 1min
- no.2 2min
- no3 5min
- no.4 10min
两个人过用最慢一个的速度,火把不能扔,如何在17min内四个女人都过桥?
想了一下,算法可以描述如下:
设桥两端分别为A,B,设对象Oi过桥时间记为Ti,过桥总时间记为Time。
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,直至所有人过河为止。