问题描述
相信很多人都听说过泊松分酒的问题,泊松在一次闲暇时,提出过一个有趣的问题,后称为:“泊松分酒”。在我国古代也提出过类似问题,遗憾的是没有进行彻底探索,其中流传较多是:“韩信走马分油”问题。大致描述如下:
有3个容器,容量分别为12升,8升,5升。其中12升中装满酒,另外两个空着。要求你只用3个容器操作,最后使得某个容器中正好有6升酒。
解决方案
为了分出固定容积的酒,其实就是靠另外两个空瓶子来做一个酒的进出转移。但是由于三个容器都没有刻度,所以必须要让起始装满酒的瓶子每次倒出或者倒入的酒刚好是其他两个瓶子中某个瓶子的容积。对于这个问题数学家们很早就提出了解决方案,其中一套方案如下:
将12升的瓶子称为大瓶子,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 |
0 |
第七次操作 |
表1 泊松分酒操作步骤表
原理分析
很多初次接触这个问题的人可能不太懂为什么通过上述的规则之后就可以得到6升酒,这个问题还得分析这个规则中的数学知识。设大瓶子容量为X升,中瓶子容量为Y升,小瓶子容量为Z升,需要分出来的酒为W升,结合规则,可以发现两点:小瓶子每次倒入大瓶子的酒为Z升,大瓶子倒入中瓶子的酒为Y升,设中瓶子一共装满了a次,小瓶子一共装满了b次,那么从大瓶子中分出的酒的容量一共为a*Y-b*Z,只需要满足a*Y-b*Z=W这个有方程正整数a和b满足即可。将实际数据带入,即8*a-5*b=6,解得a=2,b=2。
问题推广
泊松分酒的问题其实是一个二元一次方程是否有正整数解的问题,如果存在一组正整数使得a*Y-b*Z=1这个方程成立,理论上是可以分出任意容积的酒。