问题一,一个典型过桥问题:
小明一家5口人在夜晚过一座桥,小明过桥要1分钟,小明的弟弟过桥要3分钟,小明的爸爸过桥要6分钟,小明的妈妈过桥要8分钟,小明的爷爷过桥要12分钟;这座桥每次只能过2个人,因是夜晚,过桥时必须提着灯,小明有一只灯,点燃后30分钟会熄灭,问怎么样安排,才能保证小明一家在灯熄灭前过桥。
答案:
小明和弟弟过去,小明回来,4分钟
妈妈和爷爷过去,弟弟回来,15分钟
爸爸和小明过去,小明回来,7分钟
小明和弟弟过桥,3分钟
合计4+15+7+3=29分钟
问题二:如果有n个人过桥,一次只能过2个人,过桥必须提着灯,并且只有一只灯(这里不会熄灭);求过桥所要的最少时间是?
现在我们把2(n>2)个人过桥的过程称为“过桥”,1个人提灯回来叫做“送灯”。
为了使整个过程耗时最少,那么就要尽量做到两点。一是送灯是1个人完成。那么这个人一定要最快。
二是过桥是2个人,因为是取两者耗时最多的,那么另一个人被吃掉的时间要尽量大。
如果两点能同时做到,那这样得到的耗时很有可能(未经证明不敢说一定)是最小的。
当n=1、2时,只有一次过桥,耗时为一固定值。
当n=3时,记3人分别为,,。这里耗时<=<=,
最佳方案为 操作 状态 耗时 过桥 ---- 送灯 ---- 过桥 ---- 总耗时 ++
当n=4时,记4人耗时分别为,,,。这里耗时<=<=<=,
第一种方案,送灯要最快方案为 操作 状态 耗时 过桥 ---- 送灯 ---- 过桥 ---- 送灯 ---- 过桥 ---- 总耗时 2+++ 第二种,要吃掉时间最长方案为 操作 状态 耗时 过桥 ---- 送灯 ---- 过桥 ---- 送灯 ---- 过桥 ---- 总耗时 +3+
两种方案耗时差为(2+++)-(+3+)=+-2, 所以当+>2时方案二更优,当+