泊松分酒

为了方便说明,将容量为12品脱,8品脱,5品脱瓶子分别称为大瓶子,中瓶子,小瓶子。按照下面2种规则中的如何一种可以解决这个问题:

规则:

1. 大瓶子只能倒入中瓶子

2. 中瓶子只能倒入小瓶子

3. 小瓶子只能倒入大瓶子

4. 小瓶子只有在已经装满的情况下才能倒入大瓶子

5. 若小瓶子被倒空,则无论中瓶子是否满,应马上从中瓶子倒入小瓶子

   

之所以要规定倒酒的顺序是为了防止状态重复。而根据这5条规则,大瓶子每次倒入中瓶子的酒总是8品脱,小瓶子每次倒入大瓶子的酒总是5品脱。(请结合下面的表来理解这句话,理解这点很重要)

   

有了上面的规定后,倒酒的顺序就确定下来了:

12品脱瓶子

8品脱瓶子

5品脱瓶子

  

12

0

0

初始状态

4

8(倒进)

0

  

4

3

5(倒出)

  

9

3

0

  

9

0

3

  

1

8(倒进)

3

  

1

6

5(倒出)

搞到6品脱了

6

6

0

完成

  

设大,中,小三个瓶子容量分别是C1,C2,C3,需要倒出的容量是R

则实际上要是我们能将容量为R的酒倒到中瓶子和小瓶子中就可以啦(有点废话)

   

设大瓶子倒满中瓶子X次,从小瓶子中倒入大瓶子Y次。

那么显然由大瓶子累次倒入中瓶子和小瓶子总共C2*X的酒。而由小瓶子倒入大瓶子一共有C3*Y的酒。

那么最终,小瓶子和中瓶子剩余的酒显然就是 C2*X - C3*Y

   

因此,泊松分酒问题实质上转化为下面的不定方程是否有正整数解的问题:

   

C2*X - C3*Y = R

   

对于我们的问题,

C1=12,C2=8,C3=5,R=6

   

倒酒规则实质上相当于解下面这个不定方程:

8X - 5Y = 6  ( 限定 X > 0 ,Y > 0 )

最小整数解是 X=2,Y= 2

   

表示倒满8品脱的瓶子2次,5品脱的瓶子倒空2次

那么8品脱的瓶子和5品脱的瓶子剩酒总量必然是 8 * 2 – 5 * 2 = 6

 

posted @ 2016-02-29 13:55  Vonnie_Jade  阅读(1699)  评论(0编辑  收藏  举报