泊松分酒 java课件_泊松分酒原理 - 我类个擦的个人空间 - OSCHINA - 中文开源技术交流社区...
有一個12品脫(pint)的酒瓶,里面裝滿葡萄酒,另有8品脫和5品脫的瓶子各一個。問如何從中分出6品脫的酒出來?
傳說泊松年輕時成功解決了該問題,勾起了他對數(shù)學的興趣而投身數(shù)學研究,因此該問題被稱為泊松分酒問題。另外這個問題又被稱為分油問題啦,分水問題啦等等。
小學的時候在一本《十萬個問什么——數(shù)學卷》中看到過這個問題,那本書直接給出了一個解答過程,又沒說原理,看得我糊里糊涂。
一 .? 解答過程
為了方便說明,將容量為12品脫,8品脫,5品脫瓶子分別稱為大瓶子,中瓶子,小瓶子。按照下面2種規(guī)則中的如何一種可以解決這個問題:
第一套規(guī)則:
1. 大瓶子只能倒入中瓶子
2. 中瓶子只能倒入小瓶子
3. 小瓶子只能倒入大瓶子
4. 小瓶子只有在已經(jīng)裝滿的情況下才能倒入大瓶子
5. 若小瓶子被倒空,則無論中瓶子是否滿,應馬上從中瓶子倒入小瓶子
之所以要規(guī)定倒酒的順序是為了防止狀態(tài)重復。而根據(jù)這5條規(guī)則,大瓶子每次倒入中瓶子的酒總是8品脫,小瓶子每次倒入大瓶子的酒總是5品脫。(請結(jié)合下面的表來理解這句話,理解這點很重要)
有了上面的規(guī)定后,倒酒的順序就確定下來了:
12品脫瓶子
8品脫瓶子
5品脫瓶子
12
0
0
初始狀態(tài)
4
8(倒進)
0
4
3
5(倒出)
9
3
0
9
0
3
1
8(倒進)
3
1
6
5(倒出)
搞到6品脫了
6
6
0
完成
第二套規(guī)則:
1. 大瓶子只能倒入小瓶子
2. 小瓶子只能倒入中瓶子
3. 中瓶子只能倒入大瓶子
4. 中瓶子只有在已經(jīng)裝滿的情況下才能倒入大瓶子
5. 若中瓶子被倒空,則無論小瓶子是否滿,應馬上將小瓶子倒入中瓶子
其實只是將第一套規(guī)則中的“中”和“小”兩個字對換了一下。
根據(jù)這個規(guī)則確定的倒酒的順序如下(注意,我將8品脫和5品脫的位置交換了一下):
12品脫瓶子
5品脫瓶子
8品脫瓶子
12
0
0
7
5(倒進)
0
7
0
5
2
5(倒進)
5
2
2
8(倒出)
10
2
0
10
2
2
5
5(倒進)
2
5
0
7
0
5(倒進)
7
0
4
8(倒出)
8
4
0
8
0
4
3
5(倒進)
4
3
1
8(倒出)
11
1
0
11
0
1
6
5(倒進)
1
搞到6品脫了
6
0
6
完成
好了試試用這兩種規(guī)則之一解決如下分酒問題吧:
大瓶子容量10,中瓶子容量7,小瓶子容量3,要分出來5
二.? 原理
設(shè)大,中,小三個瓶子容量分別是C1,C2,C3,需要倒出的容量是R
則實際上要是我們能將容量為R的酒倒到中瓶子和小瓶子中就可以啦(有點廢話)
設(shè)大瓶子倒?jié)M中瓶子X次,從小瓶子中倒入大瓶子Y次。
那么顯然由大瓶子累次倒入中瓶子和小瓶子總共C2*X的酒。而由小瓶子倒入大瓶子一共有C3*Y的酒。
那么最終,小瓶子和中瓶子剩余的酒顯然就是 C2*X - C3*Y
因此,泊松分酒問題實質(zhì)上轉(zhuǎn)化為下面的不定方程是否有正整數(shù)解的問題:
C2*X - C3*Y = R
對于我們的問題,
C1=12,C2=8,C3=5,R=6
第一種倒酒規(guī)則實質(zhì)上相當于解下面這個不定方程:
8X - 5Y = 6? ( 限定 X > 0 ,Y > 0 )
最小整數(shù)解是 X=2,Y= 2
表示倒?jié)M8品脫的瓶子2次,5品脫的瓶子倒空2次
那么8品脫的瓶子和5品脫的瓶子剩酒總量必然是 8 * 2 – 5 * 2 = 6
第二種倒酒規(guī)則實質(zhì)上相當于解下面的不定方程:
5X - 8Y = 6 ( 限定 X > 0 , Y > 0 )
最小整數(shù)解是 X = 6 ,Y= 3
表示倒進5品脫瓶子6次,從8品脫瓶子中倒出3次
那么最終5品脫和8品脫的瓶子剩酒總量必然是 5 * 6 – 8 * 3 = 6
好了,現(xiàn)在你明白為什么要規(guī)定倒酒的順序了吧。小瓶子和中瓶子是一個系統(tǒng),而大瓶子又是另外一個系統(tǒng),大瓶子的酒只能倒入中瓶子和小瓶子組成的系統(tǒng),小瓶子的酒只能倒出到大瓶子的系統(tǒng)。我們關(guān)注的是由中瓶子和小瓶子組成的系統(tǒng),這個系統(tǒng)每次增加都是8品脫(中瓶子容量),每次減少都是5品脫(小瓶子容量)。
另外,如果存在X和Y,使得下面的方程有解:
C2*X - C3*Y = 1
實質(zhì)上就是說能夠倒出1品脫的酒,那么任意品脫的酒都能倒出了。
因為:
(C2*X - C3*Y)*N = N
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的泊松分酒 java课件_泊松分酒原理 - 我类个擦的个人空间 - OSCHINA - 中文开源技术交流社区...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: rust(10)-函数指针
- 下一篇: rust(11)-函数作为返回值和mat