问题:1架飞机,加满油可以跑1的距离,问N架飞机最多能跑多远,要确保除了最远的飞机外,其他飞机都能安全返航?
昨天同学出了这个问题,晚上仔细想了想这个问题还挺有趣的。
首先题目的意思允许我们在不同的飞机之间交换油,也就是一家飞机可以把一部分油分给其他飞机,然后自己再继续飞或者返航
下面分两种情况来考虑
1.假设每架飞机只能加一次油,答案是:N趋向无穷大时为2
(1)首先我们证明不可能超过2
假设飞的最远的飞机A飞了2+x的距离,其中x>0
那么必然有其他飞机在半途上给A加油,并且最后一次加油的地点离出发点>=1+x ,因为A最多只能装下跑1距离的油
现在的问题是给A加油的飞机不可能飞回出发点,因为它给A加油后,自己的油不够跑1的距离,而他离出发点>=1+x。
所以我们证明了不可能超过2,我们以F1,F2,...来表示这些飞机,跑的最远的飞机是F1
(2)我们研究一下一般情况
当N=2时,我们让两架飞机一起跑到1/3这个地方,然后F2把1/3的油给F1,自己还剩下1/3,然后返航,F1这时候有1的油,继续向前跑1,总共距离是1+1/3
当N=3时,在1/4这个地方,我们让F3把油分给F1,F2,自己还剩下1/4,F1和F2满油继续向前跑,到了1/2的地方,F2给1/4的油给F1,自己还有1/2,F2返航,F1继续向前跑1的距离,总共的距离是1+1/2
当N=n时,在1/(n+1)的地方,我们让Fn把(n-1)/(n+1)的油均分给其他的n-1架飞机,然后自己返航,这是其他n-1架飞机满油继续向前飞,到了2/(n+1)的地方,Fn-1把油分给其他的n-2架飞机,然后自己还有2/(n+1)油,可以安全返航
......最终F2在(n-1)/n+1这个地方,给1/(n+1)的油给F1,然后自己刚好能顺利返航,而F1还能继续飞行1的距离,总共是1+(n-1)/(n+1)
(3)结论
所以当N趋向于无穷大的时候,F1最远能飞2的距离
2.假设每架飞机可以加多次油,答案是:N趋向无穷大是为无穷远
(1)首先每架飞机可以加多次油,所以某些飞机可以在某个区段里面来回跑来接应其他飞机,也就是说我们不用担心这些飞机飞不回来,因为我们可以让其他飞机过来接应他们。有了这个认识,可能已经觉察到F1能飞到无穷远的距离,但这个无穷远到底有多大?
(2)刚才我们从起点推导到最远距离,这次我们换种思维方式,从最远点推导到终点,我们假设最远点离出发点是D
首先看F1,F1跑到了D,那么在D-1的地方有其他飞机给它加满油,让F1继续前进,而他们自己返航。我们假设有两架飞机F2,F3在D-1这个地方给F1加了1的油,然后自己返航到D-1-x的地方刚好没有油,并且在之前的航行中这三架飞机在D-1-x的地方是满油的。
那么有1+2*2*x+1*x=3 则x=2/5
然后在D-1-x这个地方有三架飞机F4,F5,F6给F1,F2,F3加满油,然后自己返航回到D-1-x-y的地方刚好没有油,并且在之前的航行中所有的六架飞机在D-1-x-y这个地方都是满油的
那么有3+2*3*y+3*y=6 则y=2/6
一般情况下我们假设有1+2+3+..+n=(n+1)n/2架飞机在 Dn这个地方都是满油的 到了Dn-1这个地方让1+2+3+...+n-1=(n-1)n/2架飞机都是满油的而剩下的n架飞机则返航到Dn这个地方刚好没有油,这Dn-1到Dn这段距离是d那么有
(n-1)n/2+2*n*d+(n-1)n/2*d=(n+1)n/2 则d=2/(n+3)
(3)由2的推理得知,当有n(n+1)/2架飞机的时候,我们可以跑1+2/5+2/6+...+2/(n+3)的距离
并且所有的飞机都是可以返航的,因为加油次数没有限制我们可以让从起点出发的n架飞机不停的在Dn-1和Dn之间跑来接应其他飞机,同时n-1架飞机在Dn-1到Dn-2之间跑来接应其他飞机.....
我们注意到数列1+1/2+1/3+...+1/n是发散的,所以当N趋向无穷大的时候F1可以跑无穷远