過河問題(貪心算法)


從數學角度來研究過河問題

一、問題描述

  在漆黑的夜里,甲乙丙丁共四位旅行者來到了一座狹窄而且沒有護欄的橋邊。如果不借助手電筒的話,大家是無論如何也不敢過橋的。不幸的是,四個人一共只帶了一只手電筒,而橋窄得只夠讓兩個人同時過。如果各自單獨過橋的話,四人所需要的時間分別是1、2、5、8分鍾;而如果兩人同時過橋,所需要的時間就是走得比較慢的那個人單獨行動時所需的時間。問題:如何設計一個方案,讓這四人盡快過橋。

二、問題答案     

  兩人過橋后,需要把手電筒送回,最容易想到的是讓最快的人擔任來回送電筒。因此,第一種辦法:先讓甲乙過去(2分鍾),甲回來(1分鍾),甲丙過去(5分鍾),甲回來(1分鍾),甲丁再過去(8分鍾),總共需要17分鍾就可以讓四個人都過去。

  而正確答案是第二種辦法:先讓甲乙過去(2分鍾),甲回來(1分鍾),丙丁過去(8分鍾),乙回來(2分鍾),甲乙再過去(2分鍾),總共需要15分鍾就可以讓四個人都過去。這種方法的關鍵點,讓兩個最慢的人同時過橋。

三、擴展 

  把四人所需要的時間,改變一下分別,是1、4、5、8分鍾。

  第一種方法:先甲乙過去(4分鍾),甲回來(1分鍾),甲丙過去(5分鍾),甲回來(1分鍾),甲丁再過去(8分鍾),總共需要19分鍾就可以讓四個人都過去。

  第二種方法:先讓甲乙過去(4分鍾),甲回來(1分鍾),丙丁過去(8分鍾),乙回來(4分鍾),甲乙再過去(4分鍾),總共需要21分鍾就可以讓四個人都過去。

  這一次,兩個最慢的人一起過去反而更慢了。

  這兩次方案的差異:次快的人要不要也傳遞一次手電筒。

  假定四個人過河時間是T1,T2,T3,T4且T1<T2<T3<T4,如何選擇過橋方案。

  第一種過河方法的總時間為:T2+T1+T3+T1+T4

  第二種過河方法的總時間為:T2+T1+T4+T2+T2

  二者之差為:(T1+T3)-2T2。

  結論:如果(T1+T3)大於2T2,第二種方法優;如果(T1+T3)小於2T2,第一種方法優;如果(T1+T3)等於2T2,兩種方法無差異。

四、問題推廣

  現在我們把這個問題推廣:如果有N(N大於等於4)個旅行者,假設他們有各自所需的過橋時間有快有慢,各不相同。在只有一只手電筒的情況下,要過上述的一條橋,怎樣才能找到最快的過橋方案?

  現在我們假定,N個人單獨過橋的時間分別是T1,T2,T3,……,Tn,且滿足T1<T2<T3<…… <Tn。

  經過分析,要滿足最快過橋,合理的安排包括以下幾點:

  1)讓最快的送手電筒的次數盡可能多些。

  2)某些方案中,次快的也送電筒也可能會電筒。

  3)讓慢的過橋次數盡可能少些;

  4)最快的兩個先過橋,以保證此二人是能來回送電筒的人;

  借助上述結論,來逐步分析多人情形。

  當N=5人時,第一次先T1、T2兩人過橋,T1把電筒送回,沒過橋的又變成了T1、T3、T4、T5的4人情形。這個時候,需要比較T1+T4與2T3的大小嗎?

  第一種方案,還是選擇T1來回送電筒,過橋總時間:為T2+T3+T1+T4+T1+T5

  第二種方案,讓慢的一起走,但因為送回電筒的不是T3,而是更快一點的T2,總過橋時間:T2+T5+T2+T3+T1+T2。

  兩種方案兩者之差為T1+T4-2T2,這里與T3沒有關系。

  當N=6人時,第一次先T1、T2兩人過橋,T1把電筒送回,沒過橋的又變成了T1、T3、T4、T5、T6 的5人情形。按照剛才的分析,要比較T1+T5-2T2的大小。

  以此類推,兩種方案的差異,只與最快的人、次快的人和次慢的人的單獨過橋時間有關,而與其他人的快慢無關。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM