人猫鸡米渡河问题的数学模型
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
人猫鸡米渡河问题的数学模型
摘要:人带着猫、鸡、米过河,从左岸到右岸,船除了需要人划之外(船除了要载人外),只能载猫、鸡、米三者之一,而当人不在场时猫要吃鸡、鸡要吃米。本文将设计一个安全过河方案,使渡河次数尽量地少。模仿“商人过河”的模型设计出新的数学模型。
关键字:穷举法,Matlab运算求解。
一、问题的提出
课本P19.T5:模仿“商人过河”模型,做下面游戏:人带着猫、鸡、米过河,船除需要人划之外,至多能载猫、鸡、米三者之一,而当人不在场时猫要吃鸡、鸡要吃米。设计一个过河方案,建立数学模型,并使渡河次数尽量地少。
二、问题的分析
因为这是个简单问题,研究对象少,所以可以用穷举法,简单运算即可解题。
此问题是从状态向量A(1,1,1,1)经过奇数次运算向量B变为状态向量A(0,0,0,0)的状态。转移过程为什么是奇数次?我们注意到过河有两种,奇数次的为从左岸到右岸,而偶数的为右岸回到左岸,因此得到下述转移过程,所以最后应该是过河完成时状态转移数为奇数次。
三、问题的假设
1.1:假设船除了载人之外,至多只能载猫、鸡、米三者之一。
1.2:当人不在场时,猫一定会吃鸡、鸡一定会吃米。
四、定义符号说明:
我们将人,猫,鸡,米依次用四维向量中的分量表示,当一物在左岸时,相应的分量
记为1,在右岸时记为0.如向量(1,0,1,0)表示人和鸡在左岸,猫和米在右岸,并将这些向量称为状态向量。例如(1,1,1,1)表示它们都在左岸,(0,1,1,0)表示猫,鸡在左岸,人,米在右岸;由于问题中的限制条件,有些状态是允许的,有些状态是不允许的。凡问题可以允许存在的状态称为可取状态。A 向量定义为状态变量。比如()11,0,1,0A 是一个可取状态向量,但()20,0,1,1A 是一个不可取状态向量。此外,B 向量定义为运载变量。把每运载一次也用一个四维向量来表示。如()11,1,0,0B 表示人和猫在船上,而鸡和米不在船上,这自然是可取的运载,因为船可载两物,而()21,0,1,1B 则是不可取运载,依此规律类推。
五、模型的建立
对于这个问题我们用穷举的方法来解决,首先将此问题化为状态转移问题来解决。对本问题来说:
5.1、 可取状态向量A 共有10个,可以用穷举法列出来:
()1,1,1,1 ()0,0,0,0
()1,1,1,0 ()0,0,0,1
()1,1,0,1 ()0,0,1,0
()1,0,1,1 ()0,1,0,0
()1,0,1,0 ()0,1,0,1
右边5个正好是左边5个的相反状态。
5.2、 可取运载B 共有4个:
()1,1,0,0 ()1,0,1,0
()1,0,0,1 ()1,0,0,0
5.3、可取运算:规定A 与B 相加时对每一分量按二进制法则(异或运算)进行
()000,10011,110+=+=+=+=。这样,一次渡河就是一个可取状态向量与一
个可取运载向量相加,可取状态经过加法运算仍是一个可取状态,这种运算称
为可取运算。
在上述规定下,问题转化为:从初始状态()1,1,1,1至少经过多少次(奇数次)可取运算才能转化为状态()0,0,0,0。
如果一个状态是可取的就打∨,否则就打⨯,虽然可取但已重复就打∧,于是问题可用穷举法解答如下:
1)()()()()()()()()()1,0,1,00,1,0,11,1,0,00,0,1,11,1,1,11,0,0,10,1,1,01,0,0,00,1,1,1∨⎧⎧⎪⎪⨯⎪⎪+→⎨⎨⨯⎪⎪⎪⎪⨯⎩⎩(2)()()()()()()()()()1,0,1,01,1,1,11,1,0,01,0,1,10,1,0,11,0,0,11,1,0,01,0,0,01,1,0,1∧⎧⎧⎪⎪⨯⎪⎪+→⎨⎨⨯
⎪⎪⎪⎪∨
⎩⎩
(3)()()()()()()()()()1,0,1,00,1,1,11,1,0,00,0,0,11,1,0,11,0,0,10,1,0,01,0,0,00,1,0,1⨯⎧⎧⎪⎪∨⎪⎪+→⎨⎨∨
⎪⎪⎪⎪∧
⎩⎩ (4)()()()()()()()()()11,0,1,01,0,1,11,1,0,01,1,0,10,0,0,11,0,0,11,0,0,01,0,0,01,0,0,1∨⎧⎧⎪⎪∧⎪⎪+→⎨⎨⨯⎪⎪⎪⎪⨯⎩⎩ (4)()()()()()()()()()21,0,1,01,1,1,01,1,0,01,0,0,00,1,0,01,0,0,11,1,0,11,0,0,01,1,0,0∨⎧⎧⎪⎪⨯⎪⎪+→⎨⎨∧
⎪⎪⎪⎪⨯
⎩⎩ (5) (5)
(6)()()()()()()()()()1,0,1,01,0,0,01,1,0,01,1,1,00,0,1,01,0,0,11,0,1,11,0,0,01,0,1,0⨯⎧⎧⎪⎪∧⎪⎪+→⎨⎨∧⎪⎪⎪⎪∨⎩⎩ (7)()()()()()()()()()1,0,1,00,0,0,01,1,0,00,1,1,01,0,1,01,0,0,10,0,1,11,0,0,00,0,1,0∨⎧⎧⎪⎪⨯⎪⎪+→⎨⎨⨯
⎪⎪⎪⎪∧
⎩⎩ 第7步已经出现了()0,0,0,0状态,说明经7次运载即可,其过程为:
()()()()()()(),,,,→→→→→→→去回去回去回去
人鸡人人猫(或米)
人,鸡人米(或猫)人人鸡 因此,该问题的最优方案有2种:
1、人先带鸡过河,然后人再回来,把米带过河,然后把鸡运回河岸,人再把猫带过河,最后人回来把鸡带过去。
2、人先带鸡过河,然后人再回来,把猫带过河,然后把鸡运回河岸,人再把米带过河,最后人回来把鸡带过去。