關於飛機加油問題:
1.首先確定問題可以求解。
要使所有飛機安全飛回那麼,加油點之間的距離肯定不能超過1次加滿油飛行的距離。
可以肯定加油點除了 1/2處不能設定外,其餘各點都可以設定加油點。(理由見後面)
於是問題有解。
2.假設飛機從按照逆時針,從東飛到西。
有n架飛機同時起飛。
地球一圈長度為f
對逆時針飛行加油點。
第k架在x[k]處返回。
y[k]是從x[k-1]處開始飛行到有飛機折回的距離
如下關係如下:
x[1]= y[1];
x[2]= x[1]+y[2];
x[3]= x[2]+y[3];
x[k]= x[k-1] + y[k];(k=1,2,3...n-1);
x[k] < 0.5f;
k的最大取值是 n-1因為 2臺飛機只能一次油,3臺飛機最多可以加兩次油。
要保證飛機能飛最遠,就是使每一架飛機在折回後不折回的飛機的油是滿的。
所以有:
0.5f - 2*y[1] = (n-1)*y[1];
0.5f - 2*y[2] - x[1] = (n-2)*y[2];
0.5f - 2*y[3] - x[2] = (n-3)*y[3];
0.5f - 2*y[k] - x[k-1] = (n-k)*y[k];(k=1,2,3...n-1);
變形一下
0.5f = (n-1+2)*y[1];
0.5f = (n-2+2)*y[2] + x[1];
0.5f = (n-3+2)*y[3] + x[2];
0.5f = (n-k+2)*y[k] + x[k-1] ;
(k=1,2,3...n-1);
解出 x[k]的表示式:
x[1] = y[1] = 0.5f/(n+1) ;
x[2] = 0.5*2/(n+1);
x[3] = 0.5*3/(n+1);
....
x[k] = 0.5f*k/(n+1);
由於 x[k] 必須小於 0.5f 否則誰都不願意開那架飛機了。
就是說 k/(n+1) 只須小於 1即可(但不能等於1),
要想使x[k]盡量遠,那麼就要保證 k/(n+1)盡量大。
k和n都比必須使正數。而且k最大只能取 n-1
所以k=n時,k/(n+1) = (n-1)/(n+1)
這時可知,n趨向於無窮大時,(n-1)/(n+1) 趨向於1,
(而且也可以得知 n越大k才能越大)
因此加油點可以遍布整個右半球,但是1/2點處不能到達。
對順時針飛行加油點。
同樣的思考方式。同樣的結果。
同時還有結論:
根據 y[k] = x[k] - x[k-1] = 0.5f/(n+1)
可知:n越多,那麼加油站點之間的距離就會越小(得到加油站點之間距離表示式跟次數無關的無關的結論我也很詫異)。
由前面的推論:
x[k] = 0.5f*k/(n+1);
可知最遠的加油站是
x[k] = 0.5f*(n-1)/(n+1);
他也只和 n相關。
所以 x[k] 越遠他需要的 飛機數量越多。
由於飛機滿油能飛,0.5f所以要想達到最優化,
就要使飛機落在0.5f裡面的區域的每一點都比區域外面的點的需要的飛機數要少(假定在需要比較的點設定加油站的話)
由於兩邊都是對稱的,而且從出發點到地球的另一端點的過程種,各點(如果要設定加油站的話)需要的飛機數使遞增的。
所以,我們可以輕鬆的推定,0.5f 均勻的分布在地球另一端點的兩邊。(這部分也可以用證明,時間關係,暫略)
所以只需要在兩個方向安排同樣數量n的飛機布置最遠的加油點在離出發點 1/4 f的地方或更遠一點就可以了。
問題演變成
x[k] >= 1/4 f
x[k] < 0.5f
取 k的最小整數值
x[k] 的最遠點的表示式是 x[k] = 0.5f*(n-1)/(n+1);
也即0.5f*(n-1)/(n+1) >= 1/4 f
0.5f*(n-1)/(n+1) < 0.5fn>0
求最小的 n
解之得n >= 3
所以n得最小取值是3
也就是 需要 6架次。 但最少只需要3架飛機。
過程如下:
逆時針起飛第一次加油點在 x[1] = 1/8 f處。然後有一架飛機返回。
第二次加油在 x[2] = 1/4 f處,一架飛機返回。
在逆時針飛行的飛機飛過 0.5f 處時,順時針派出3架飛機,(可以重用以前的飛機,如果允許的話)
第一次加油處也是 1/8 f 一架飛機飛回
第二次在1/4f 同時 逆時針飛行的飛機也到達,將油均分後每個飛機一半的油。同時飛回來。
可以抵達出發點。
飛機加油問題
已知 每個飛機只有乙個油箱,飛機之間可以相互加油 注意是相互,沒有加油機 一箱油可供一架飛機繞地球飛半圈,問題 為使至少一架飛機繞地球一圈回到起飛時的飛機場,至少需要出動幾架飛機?所有飛機從同一機場起飛,而且必須安全返回機場,不允許中途降落,中間沒有飛機場 答案 最小需要5架飛機。思路 a 起飛點 ...
飛機加油問題
題目描述 一道關於飛機加油的問題,已知 每個飛機只有乙個油箱,飛機之間可以相互加油 注意是相互,沒有加油機 一箱油可供一架飛機繞地球飛半圈,問題 為使至少一架飛機繞地球一圈回到起飛時的飛機場,至少需要出動幾架飛機?所有飛機從同一機場起飛,而且必須安全返回機場,不允許中途降落,中間沒有飛機場 答案 共...
關於飛機加油問題
1.首先確定問題可以求解。要使所有飛機安全飛回那麼,加油點之間的距離肯定不能超過1次加滿油飛行的距離。可以肯定加油點除了 1 2處不能設定外,其餘各點都可以設定加油點。理由見後面 於是問題有解。2.假設飛機從按照逆時針,從東飛到西。有n架飛機同時起飛。地球一圈長度為f 對逆時針飛行加油點。第k架在x...