韓信分油問題的拓展分析


韓信分油問題:只借助兩個容量分別為7升和3升的不規則且無刻度的容器,如何讓兩人平分一桶10升的油?

解:用有序對/a,b/表示大容器的油量為a升,小容器的油量為b升。初始狀態為/0, 0/,即兩個容器都是空的。再用X、A、B分別代表油桶、大容器和小容器。並用變換MtoN表示從M往N中倒油(當N為X時即為倒空M;當N不為X時為倒滿N或倒空M,且二者必居其一)。於是一個可行的分油過程如下:

/0, 0/  XtoA  /7, 0/  AtoB  /4, 3/  BtoX  /4, 0/  AtoB  /1, 3/  BtoX  /1, 0/  AtoB  /0, 1/  XtoA  /7, 1/  AtoB  /5, 3/  BtoX  /5, 0/

最后大容器里以及油桶里的油量各占5升,達到了平分的目的。

來看一下大容器在上述過程中油量的變化情況:0,7,4,1,0,7,5

對應的等式分別為:7·0 = 0,7·1 = 7,7·1 - 3·1 = 4,7·1 - 3·2 = 1,7·0 = 0,7·1 = 7,7·1 - [3·1 - (7·1 - 3·2)] = 5

 

接下來,容易想到如下一個擴展的問題:

從一個無窮大的油桶里取油,只借助兩個容量分別為7升和3升的不規則且無刻度的容器,所能表示的整數升油量有哪些?

:由之前的題解,已經知道這兩個容器可以表示的整數升油量可以為0、1、3、4、5、7、8。

10是顯然可以的,對應把A和B都注滿的情形。

由以下變換可知2、6、9也都可以表示出來:

/5, 0/  AtoB  /2, 3/

/0, 3/  BtoA  /3, 0/  XtoB  /3, 3/

/2, 3/  BtoX  /2, 0/  AtoB  /0, 2/  XtoA  /7, 2/

因此,此題的解為0到10的全體整數。

 

換兩個數,再考察一下,比如:

從一個無窮大的油桶里取油,只借助兩個容量分別為7升和5升的不規則且無刻度的容器,所能表示的整數升油量有哪些?

:最小值0和最大值12是顯然可以的。5和7,以及它們的差,即2,也是顯然可以的。9(2+7)和10(5+5)也可以。

由以下變換過程:

/7, 2/  AtoB  /4, 5/  BtoX  /4, 0/  AtoB  /0, 4/  XtoA  /7, 4/  AtoB  /6, 5/  BtoX  /6, 0/  AtoB  /1, 5/  BtoX  /1, 0/  AtoB  /0, 1/  XtoA  /7, 1/  AtoB  /3, 5/

可知,4、11、6、1、8、3也都是可以表示的。

綜上,此題的解為0到12的全體整數。

 

由以上的分析,推測會有以下一般性的結論:

從一個無窮大的油桶里取油,只借助兩個不規則且無刻度的容器,容量分別為a升和b升,a和b均為正整數,且滿足(a, b) = 1。則所能取得的整數升油量為0到a+b范圍內的全體整數。

證明:a = b的情形只可能是 a = b = 1,命題顯然成立。以下考慮 a ≠ b 的情形,由結論的對稱性,不妨假設 a > b。

a升的容器記為A,b升的容器記為B,油桶記為X。先把容器A和B注滿,即XtoA, XtoB,得到a+b升油量;再把容器B倒空,並用容器A中的油注滿容器B,即BtoX, AtoB,得到a升油量;此時若A中油量不為0,則繼續重復做BtoX, AtoB操作。這一連串的過程可以得到:

a+b ≡ a ≡ a-b ≡ ... ≡ r1 (mod b) ①

其中 r1 滿足 a+b = q1·b + r1, q1 > 0, 0 ≤ r1 < b

當 b = 1 時,r1 = 0,由①知命題顯然成立。

當 b > 1時,由(a, b) = 1,可知 0 < r1 < b。上面的操作最后得到的狀態是 /0, r1/,再次注滿容器A,並用A中的油注滿B,即XtoA, AtoB,此時的狀態為 /a+r1-b, b/;接着再次重復上面的BtoX, AtoB操作,直到容器A中的油量為空為止。這一連串的過程可以得到:

a+r1 ≡ a+r1-b ≡ ... ≡ r2 (mod b) ②

其中 r2 滿足 a+r1 = q2·b + r2, q2 > 0, 0 ≤ r2 < b, r2 ≠ r1

這里對 r2 ≠ r說明一下,假如r1 = r2,則由①和②便有 a+b ≡ a+r1 (mod b),這與 0 < r1 < b 矛盾。

當 b = 2 時,由①知,r1 = 1,再結合②可知,r2 = 0,則①和②分別涵蓋了0到a+2的所有奇數和偶數,命題成立。

當 b > 2 時,必有 r2 ≠ 0,否則 a+r1 ≡ a+(a+b) ≡ 0 (mod b),即有 b | 2a,再由 (a, b) = 1,知 b | 2,這與 b > 2 矛盾。繼續上面的操作,會得到:

a+r2 ≡ a+r2-b ≡ ... ≡ r3 (mod b) ③

其中 r3 滿足 a+r2 = q3·b + r3, q3 > 0, 0 ≤ r3 < b, r3 ≠ r2, r3 ≠ r1

這里對 r3 ≠ r說明一下,假如r3 = r2,則 a+r2 ≡ a+r1 (mod b), 這與 r2 ≠ r1 矛盾。

當 b = 3 時,由①和②知,r1和r2必然是一個為1、一個為2,於是r3 = 0,則①、②和③一起涵蓋了0到a+3的全體整數,命題成立。

按照上面的操作,當 b = k (k > 3)時,會有以下 k 個同余關系:

a+k ≡ a ≡ a-k ≡ ... ≡ r1 (mod k)

a+r1 ≡ a+r1-k ≡ ... ≡ r2 (mod k)

a+r2 ≡ a+r2-k ≡ ... ≡ r3 (mod k)

...

a+rk-1 ≡ a+rk-1-k ≡ ... ≡ rk (mod k)

其中 r1 滿足 a+k = q1·k + r1, q1 > 0, 0 ≤ r1 < k;ri 滿足 a+ri-1 = qi·k + ri, qi > 0, 0 ≤ ri < k, (i = 2, 3, ..., k)。

下面來證明 r1, r2, ..., rk-1 都不能等於0:

假如 r1 = 0,則由 a+k ≡ a ≡ 0 (mod k),知 k | a,而 k > 3,這與(a, k) = 1矛盾,故 r1 ≠ 0;

假如 r2 = 0,則由  a+r1 ≡ a+a ≡ 0 (mod k),知 k | 2a,再由 (a, k) = 1,有 k | 2,這與 k > 3 矛盾,故 r2 ≠ 0;

假如 r3 = 0,則由  a+r2 ≡ a+(a+r1) ≡ a+a+a ≡ 0 (mod k),知 k | 3a,再由 (a, k) = 1,有 k | 3,這與 k > 3 矛盾,故 r3 ≠ 0;

...

假如 rk-1 = 0,則由  a+rk-2 ≡ a+(a+rk-3) ≡ ... ≡ (k-1)·a ≡ 0 (mod k),知 k | (k-1)·a,再由 (a, k) = 1,有 k | k-1,這與 k > k-1 矛盾,故 rk-1 ≠ 0。

接着證明 r1, r2, ..., rk-1, rk 兩兩互不相等:

假如 r2 = r1,則由同余關系有 a ≡ a+r1 (mod k),這與 0 < r1 < k 矛盾,故 r2 ≠ r1;同樣,可知 r3, ..., rk-1, r也都不等於 r1

假如 r3 = r2,則由同余關系有 a+r2 ≡ a+r1 (mod k),這與 r2 ≠ r1 且 0 < r1 < k, 0 < r2 < k 矛盾,故 r3 ≠ r2;同樣,可知 r4, ..., rk-1, r也都不等於 r2

...

假如 rk-1 = rk-2,則由同余關系有 a+rk-2 ≡ a+rk-3 (mod k),這與 rk-2 ≠ rk-3 且 0 < rk-3 < k, 0 < rk-2 < k 矛盾,故 rk-1 ≠ rk-2;同樣,可知 r也不等於 rk-2

假如 rk = rk-1,則由同余關系有 a+rk-1 ≡ a+rk-2 (mod k),這與 rk-1 ≠ rk-2 且 0 < rk-2 < k, 0 < rk-1 < k 矛盾,故 rk ≠ rk-1

綜上, r1, r2, ..., rk-1, rk 這 k 個整數兩兩不等,且  r1, r2, ..., rk-1 全都大於0且小於k,再由 0 ≤ rk < k,知 rk = 0(否則 rk 必然要和前面 k-1 個數之一相等)。

由以上分析,上面的 k 個同余關系就涵蓋了 0 到 a+k 范圍內的全體整數,因此對任意 b = k, k > 3 的情形命題成立。

綜上,命題得證。

 

由兩個容器還可以拓展到更一般的情形:

用 n (n > 1) 個不規則無刻度的容器從一個無窮大的油桶里取油,這些容器容量都為整數升,分別記為 a1, a2, ..., an ,且滿足(a1, a2, ..., an) = 1。則所能取得的整數升油量為0到s范圍內的全體整數,s = a1+a2+...+an

n = 2 的情形就是上述剛才已經證明過的那個命題。當 n > 2 時,要用到如下一個引理,利用這個引理,n > 2 的情形可以等價為 n = 2 的情形。

引理 若n個正整數滿足 (a1, a2, ..., an) = 1,並記 s為這n個數的和,則有 min{ (a1, s), (a2, s), ..., (an, s) } = 1。

比如,n = 3,3個容器的容量分別為3升、5升和7升,s = 3+5+7 = 15,(3,15) = 3, (5, 15) = 5, (7, 15) = 1,即有 (a3,s) = 1,即 (a3,s-a3) = 1

s-a3 = a1+a2,這時,把容量為a1和容量為a2的容器看成一個容器,其容量為 a1+a2=3+5=8,用這個復合容器和容量為a3=7的容器按前述的方法取油,所能取得的整數升油量必然為0到s范圍內的全體整數。

遺憾的是,這個引理,我還沒有找到方法證明。

 


免責聲明!

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



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