过桥问题

原创 2007年09月29日 14:57:00

问题:在漆黑的夜里,四位旅行者来到了一座狭窄而且没有护栏的桥边。如果不借助手电筒的话,大家是无论如何也不敢过桥去的。不幸的是,四个人一共只带了一只手电筒,而桥窄得只够让两个人同时过。如果各自单独过桥的话,四人所需要的时间分别是1、2、5、8分钟;而如果两人同时过桥,所需要的时间就是走得比较慢的那个人单独行动时所需的时间。问题是,如何设计一个方案,让这四人尽快过桥。

更加一般性的假设N个人过桥,所需时间不同。对于最优方案,有几个结论:
结论的得出过程: -COLOR: #ffcc99">http://oursci.org/magazine/200204/020411-04.htm
1.在这个方案里,每当出现手电筒在此岸的局面时,速度最快的那个人总是在此岸
2.所有从此岸到彼岸的移动都需两个人
3.每次从此岸到彼岸移动两人,要么这两人里有一个是所有人中最快的那个,要么这两人到达彼岸后都再也不回来
4.所有从彼岸到此岸的移动中,回来的这个人一定是当时在彼岸所有人中速度最快的,而且他只能是所有人中最快的或者次快的。换句话说,所有返回此岸的任务都可以只由跑得最快和跑得次快的人来担当,所有其他人一旦到达彼岸,就留在那里,再也不回来
如果给定N个(速度不同)的旅行者,假设A、B为走得最快和次快的旅行者,过桥所需时间分别为a、b;而Z、Y为走得最慢和次慢的旅行者,过桥所需时间分别为z、y。

两种模式:
由a护送 y z过桥       z + a + y + a
a和b 过桥,然后分别返回: b + a + z + b

所以,
    当2b>a+y时,应该使用模式一;
    当2b<a+y时,应该使用模式二;
    当2b=a+y时,使用模式一或二都可以。


上面的讨论都是在N≥4时进行的,那时最快、次快、最慢和次慢是四个不同的人。
N=1、2是不用动脑子的,直接通通过桥就是了
N=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个旅行者的情形,从而递归解决之

相关文章推荐

过桥问题分析 .doc

  • 2007年11月05日 18:20
  • 457KB
  • 下载

猴子过桥问题

  • 2015年07月24日 11:21
  • 2KB
  • 下载

Timus 1791 汽车过桥的问题

原题地址 http://acm.timus.ru/problem.aspx?space=1&num=1791 中文地址http://www.51nod.com/question/index.html...

过桥问题

一、问题   在漆黑的夜里,四位旅行者来到了一座狭窄而且没有护栏的桥边。如果不借助手电筒的话,大家是无论如何也不敢过桥去的。不幸的是,四个人一共只带了一只手电筒,而桥窄得只够让两个人同时过。如果各自...

杂题_POJ上的过桥问题

本文出自:http://blog.csdn.net/svitter 过桥问题解释:一条船可以坐两个人,但是有很多人要过河,所以送过一个人去,另一个人还要回来接。使所有人过河之后时间最短,如何求?...
  • svitter
  • svitter
  • 2014年07月18日 21:46
  • 1160

过桥问题求解

  如果给定N个(速度不同)的旅行者,根据结论九我们知道有一个最佳方案,在最初的4步里用模式一或模式二把最慢的两个旅行者移动到彼岸,于是问题被约化成N-2个旅行者的形式。问题在于应该选择哪一种模式。继...

趣味程序设计_过桥问题

题目描述 过桥问题。有N(N≥2)个人在晚上需要从X地到达Y地,中间要过一座桥,过桥需要手电筒(而他们只有1个手电筒),每次最多两个人一起过桥(否则桥会垮)。N个人的过桥时间依次存入数组t[N]...

POJ2573 Bridge 经典的过桥问题

以前遇到过类似的,纪念一下!这题同时也是  ZOJ1877,经典的过桥问题 是有个博客讲解的很好的 戳这里 挺久以前,遇到过一个基本一样的,那个题目只要求求出 最短时间即可,现在还有过桥的...

算法与数据结构-智力推广之过桥问题

一、问题   在漆黑的夜里,四位旅行者来到了一座狭窄而且没有护栏的桥边。如果不借助手电筒的话,大家是无论如何也不敢过桥去的。不幸的是,四个人一共只带了一只手电筒,而桥窄得只够让两个人同时过。如果各自...

UVA 10037贪心算法 过桥问题

题意:给了n个人过桥的时间,又因为过桥需要手电筒,且每次过桥最多两人,两人过桥时,时间按长的来算。 问过桥的最短时间,并输出过程。 解法:问题可以简化为小问题(4个人过桥,(最后解决三人及少于三人...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:过桥问题
举报原因:
原因补充:

(最多只允许输入30个字)