文档库 最新最全的文档下载
当前位置:文档库 › 人狼羊菜 带源程序

人狼羊菜 带源程序

人狼羊菜 带源程序
人狼羊菜 带源程序

人狼羊菜实验报告

————第一次作业

题目:一个摆渡人F希望用一条小船把一只狼W,一头羊G 和一篮白菜C 从一条河的左岸渡到右岸去,而船小只能容纳F、W、G、C 中的两个,决不能在无人看守的情况下,留下狼和羊在一起,羊和白菜在一起,应怎样渡河才能将狼、羊、白菜都运过去?

模型构成:用状态转移解决。

构造四维向量,表示人狼羊菜分别的位置。用0表示不在此岸,1表示在此岸。

则允许状态集合A包含:(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)。

船上元素即运载状态允许的集合B为:(1,1,0,0), (1,0,1,0),

(1,0,0,1), (1,0,0,0)。

在上述规定下,问题转化为:从初始状态(1,1,1,1)经过多少次可取运算才能转化为化为(0,0,0,0)并且在过程中状态总在允许状态集合A中。

注:集合A、B中的两状态相加时按2进制进行。

用Matlab进行编程,主文件

1、xduhe.m文件

clear;clc;

A=[1,1,1,1];

B=[1,0,1,0;1,1,0,0;1,0,0,1;1,0,0,0];

M=[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];

duhe(A,B,M,1);

将可取状态及可取运载分别编成矩阵,调用duhe(L,B,M,s)函数

将起始矩阵A分别与可取运载相加(使用二进制法则),判断相加后的矩阵C是否是【0,0,0,0】,如果是,则渡河成功。

function duhe(L,B,M,s);

[h,l]=size(L);

for k=s:h

for i=1:4

C=mod(L(k,:)+B(i,:),2);

if C==[0,0,0,0]

print(B(i,:),C,s);

fprintf('渡河成功\n\n');

break;

else if fuhe(C,M)==1

print(B(i,:),C,s);

S=[L;C];

if Panduan(S)==1

duhe(S,B,M,s+1);

else

fprintf('此渡河方案不可行\n\n');

end

end

end

end

end

否则,用fuhe(C,M) 函数(判断和矩阵C是否属于矩阵M,如果是,则返回1,否则返回0).判断C是否是可取状态,如果是,则打印并将C与初始矩阵合并成新矩阵,继续调用duhe.m 函数。

function y=fuhe(C,M)

y=0;

for i=1:8

if(C==M(i,:))

y=1;

break;

end

end

再调用Panduan(S)函数(判断S矩阵中是否有两个相同的状态,即行向量。如果有,则返回0,否则返回1.)

function z=Panduan(S)

z=1;

[m,n]=size(S);

for p=1:m

for q=(p+1):m

if S(p,:)-S(q,:)==[0,0,0,0]

z=0;

break;

end

end

end

最后调用print(K,C,s)函数。打印相应的状态。

function print(K,C,s)

fprintf('第%d次渡河:',s);

if K(1)==1

fprintf('人, ');

end

if K(2)==1

fprintf('狼, ');

end

if K(3)==1

fprintf('羊, ');

end

if K(4)==1

fprintf('菜, ');

end

if C(1)==0

fprintf('从左岸到达右岸\n');

else

fprintf('从右岸回到左岸\n');

end

运行即可。

将上述五个程序分别保存为文件,分别命名为:xduhe.m

duhe.m

fuhe.m

panduan.m

print.m

狼羊过河模型

大学生数学建模 承诺书 我们仔细阅读了数学建模的规则. 我们完全明白,在竞赛开始后参赛队员不能以任何方式(包括电话、电子邮件、网上咨询等)与队外的任何人(包括指导教师)研究、讨论与赛题有关的问题。 我们知道,抄袭别人的成果是违反竞赛规则的, 如果引用别人的成果或其他公开的资料(包括网上查到的资料),必须按照规定的参考文献的表述方式在正文引用处和参考文献中明确列出。 我们郑重承诺,严格遵守竞赛规则,以保证竞赛的公正、公平性。如有违反竞赛规则的行为,我们将受到严肃处理。 所属班级(请填写完整的全名): 队员(打印并签名) :1. 2. 3. 4. 5. 小组负责人(打印并签名): 日期: 2012 年 3月 30日 教师评阅:

人、狼、羊、白菜过河模型 一人摆渡希望用一条船将一只狼,一只羊,一篮白菜从河岸一边带到河岸对面,由于船的限制,一次只能带一样东西过河,绝不能在无人看守的情况下将狼和羊放在一起;羊和白菜放在一起,怎样才能将它们安全的带到河对岸去? 一、问题分析: 在正常情况下,一般要求在渡河过程中不能损失任何物品,但在某些情况下,有时候会从时间和经济考虑,可能会舍弃一些对自己不重要的,现在我们只考虑正常情况下的。 人狼羊白菜安全渡河问题可以看做是一个多步决策过程。每一步要让船从此岸驶向彼岸或从彼岸返回此岸,都不能使得它们有损失,要对狼羊白菜作出决策,在保证安全的前提下,在有限步内全部安全通过,用图可以找出决策变化的规律,确定每一步的决策来达到安全渡河的目标。 二、模型构建: 用二维向量S k=(x,y) 定义为状态. ,k=1,2,3,4,5,6,7 设A,B,C,D分别为人带狼,人带羊,人带白菜,人不带任何。 安全渡河条件下的集合记为可行状态集合S, 记S k={ (x,y)|x =D,y=A,B,C,D } 其中当k为奇数的时候表示船从此岸驶向彼岸,偶数的时候表示船从彼岸驶向此岸,(x,y)表示x带着y. 第 1 页共6 页 1

实验:农夫狼羊和菜问题

实验:农夫狼羊和菜问题

————————————————————————————————作者:————————————————————————————————日期:

实验6:农夫、狼、羊和菜问题 一、实验目的: 1. 会定义图的抽象数据类型; 2. 熟悉图的基本结构,掌握程序中的用户头文件、实现文件和主文件之间的相互关系及各自的作用; 3. 熟悉对图的一些基本操作和具体的函数定义; 4.掌握在实际问题中运用所学知识解决实际问题的方法和步骤。 二、实验内容描述: 有一农夫带着一条狼、一只羊和一筐菜,想从河的左岸乘船到右岸。但由于船太小,农夫每次只能带一样东西过河,而且,如果没有农夫看管,则狼会吃羊,羊会吃菜。问农夫怎样过河才能把每样东西安全地送过河。 三、实验要求: 1. 将上述问题用图表示出来; 2. 选择图的一种存储结构,编写一个自动生成该图的算法; 3.在上述基础上编写求解该问题的算法程序,并用此程序上机运行、调试, 4.屏幕显示结果,能结合程序进行分析。 四、问题分析: 该问题从表面上看,并不是一个图的问题,但可以把它用图表示出来,从而转换为一个图的问题。在这个问题的解决过程中,农夫需要多次架船往返于两岸之间,每次可以带一样东西或者自己单独过河,每一次过河都会使农夫、狼、羊和菜所处的位置发生变化。如果用一个四元组(Farmer,Wolf,Sheep,Veget)表示当前农夫、狼、羊和菜所处的位置,其中每个元素可以是0或1,0表示在左岸,1表示在右岸。这样,对这四个元素的不同取值可以构成16种不同的状态,初始时的状态则为(0,0,0,0),最终要达到的目标为(1,1,1,1)。状态之间的转换可以有下面四种情况: (1)农夫不带任何东西过河,可表示为: (Farmer,Wolf,Sheep,Veget) (!Farmer,Wolf,Sheep,Veget) (2)当农夫和狼在相同位置时,表示农夫带狼过河,即当Farmer=Wolf时:(Farmer,Wolf,Sheep,Veget) (!Farmer,!Wolf,Sheep,Veget) (3)当农夫和羊在相同位置时,表示农夫带羊过河,即当Farmer=Sheep时:

人狼羊菜渡河问题

人、狼、羊、菜安全渡河问题 安全渡河问题又称作“人狼羊菜”问题,其具体描述为:一个人带着一条狼、一只羊、一筐白菜过河但由于船太小,人一次只能带一样东西乘船过河。狼和羊、羊和白菜不能单独留在同岸,否则羊或白菜会被吃掉。该问题可使用图论中的最短路算法进行求解。 问题分析 根据题意,人不在场时,狼要吃羊,羊要吃菜,因此,人不在场时,不能将狼与羊、羊与菜留在河的任一岸。可用四维向量v=(m,n,p,q)来表示状态,m表示人,n代表狼,p代表羊,q代表白菜,且m,n,p,q ∈{0,1},0代表在对岸,1代表在此岸。例如,状态(0,1,1,0)表示人和菜在对岸,而狼和羊在此岸,这时人不在场,狼要吃羊,因此,这个状态是不可行的。 通过穷举法将所有可行的状态列举出来,可行的状态有 (1,1,1,1),(1,1,1,0),(1,1,0,1),(1,0,1,1),(1,0,1,0),(0,1,0,1),(0,1,0,0),(0,0,1,0),(0,0,0,1),(0,0,0,0)。 可行状态共有十种。每一次的渡河行为改变现有的状态。现构造赋权图 G=(V,E,W),其中顶点集V={v 1,…, v 10 }中的顶点(按照上面的顺序编号)分别表 示上述10个可行状态,当且仅当对应的两个可行状态之间存在一个可行转移时两顶点之间才有边连接,并且对应的权重取为1,当两个顶点之间不存在可行转移时,可以把相应的权重取为∞。 因此问题变为在图G中寻找一条由初始状态(1,1,1,1)出发,经最小次数转移到达最终状态(0,0,0,0)的转移过程,即求从状态(1,1,1,1)到状态(0,0,0,0)的最短路径。 该问题难点在于计算邻接矩阵,由于摆渡一次就改变现有状态,为此再引入一个四维状态转移向量,用它来反映摆渡情况。用1表示过河,0表示未过河。例如,(1,1,0,0)表示人带狼过河。状态转移只有四种情况,用如下向量表示: (1,0,0,0),(1,1,0,0),(1,0,1,0),(1,0,0,1)现在规定状态向量与转移向量之间的运算为 0+0=0,1+0=1,0+1=1,1+1=0 通过上面的定义,如果某一个可行状态加上转移向量得到的新向量还属于可行状态,则这两个可行状态对应的顶点之间就存在一条边。用计算机编程时,可以利用普通向量的异或运算实现,具体的Matlab程序如下: clc,clear a=[1 1 1 1;1 1 1 0;1 1 0 1;1 0 1 1;1 0 1 0; 0 1 0 1;0 1 0 0;0 0 1 0;0 0 0 1;0 0 0 0];%每一行是一个可行状态 b=[1 0 0 0;1 1 0 0;1 0 1 0;1 0 0 1];%每一行是一个转移状态 w=zeros(10);%邻接矩阵初始化 for i=1:9 for j=i+1:10 for k=1:4 if findstr(xor(a(i,:),b(k,:)),a(j,:)) w(i,j) = 1;

狼羊过河问题

狼、羊、菜过河问题 1.模型建立 用0-1将人、狼、羊、菜河这边的所有状态表示出来(其中状态1代表在河这边,状态0代表在河对岸),共有16种状态。 由题设条件知,状态(0,1,1,0),(0,0,1,1)(0,1,1,1,)是不允许的,从而对应状态(1,0,0,1)(1,1,0,0)(1,0,0,0,)也是不允许的。 最后得到10种状态。将它们分别标号如下: 1(1 1 1 1)2(1 0 1 1)3(0 0 0 1)4(1 1 0 1)5(1 1 1 0)6(1 0 1 0)7(0 1 0 1)8(0 1 0 0)9(0 0 1 0)10(0 0 0 0)然后将各状态能够相互转移的状态用1表示,不能相互转移的状态用无穷大inf表示,得到关于这10种状态的一个10*10的邻接矩阵。利用Floyd算法,在matlab上运行,即可找出该过河问题的最佳答案。 所得的邻接矩阵如下: [inf inf inf inf inf inf 1 inf inf inf inf inf 1 inf inf inf inf inf 1 inf inf 1 inf 1 inf inf inf inf inf inf inf inf 1 inf inf inf 1 1 inf inf inf inf inf inf inf inf inf 1 1 inf inf inf inf inf inf inf inf inf 1 1 1 inf inf 1 inf inf inf inf inf inf inf inf inf 1 1 inf inf inf inf inf inf 1 inf inf 1 1 inf inf inf inf inf inf inf inf inf 1 inf inf inf inf ] 利用Floyd算法: function [D,path]=floyd(a) n=size(a,1); D=a; path=zeros(n,n); for i=1:n for j=1:n if D(i,j)~=inf path(i,j)=j; end end end for k=1:n for i=1:n for j=1:n if D(i,k)+D(k,j)

富人狼性穷人羊性

富人狼性穷人羊性(生意人必读) 富人的成功,穷人的平庸,二者之间究竟有什么秘诀和不同?学历不高,在学校成绩平平、且调皮捣蛋的学生,走上社会后当老板、发大财,这是为什么?以前成分高的人家的孩子尽管经受了历史的挫折,可一旦有了好的政策他们又很快的走在了别人的前面,又是为什么?看看这篇文章,你也许会明白些什么。 富人狼性穷人羊性 常人贪图安逸,富人喜欢挑战 择业观不同:普通人喜欢到大企业里面干事,工作环境较稳定。富翁教育自己儿女,别介意到小公司锻炼,甚至鼓励儿女自创一家小公司。 选择银行的理财产品有别:普通人通常会挑“保本”计划,年回报有3%至5%就心满意足。富翁爱冒点风险,购买一定比例的股票型基金,回报多一点。“富翁思维”一定不会购买保本基金——“低风险,便是低回报”。 常人独自努力,富人借力搏杀 普通人也许比富翁干活更卖力,两者差异源于彼此对“努力工作”定义的不同演绎:普通人是自己努力干,从早到晚,任劳任怨。 富翁的’“努力工作”则包含三方面:第一、团队的努力工作。他们习惯带领团队冲,尤其是率领销售团队。擅长激励团队,大家朝着共同目标奋斗,共创佳绩,让大家分享提成。 第二,让钱努力工作。普通人因怕冒风险,让钱都趴在银行里“睡大觉’,他们的钱很“懒惰”,没有什么“产出”。富翁每年要求资本至少有10%的回报。他们善于经营,睡觉是也会钱生钱。如:借钱给朋友开店,要收取合理的借贷利息,还要有抵押品;或者投

资在房地产上,收租金,享受房地产升值的回报。 第三,富翁善于用他人的钱替自己赚钱。例如,富翁手中有70万元,他买一套房,肯定不会全额付清。他会买两套房,从银行借70万元到80万元,让银行的钱也替他生钱。普通人则习惯一次性付清房款,不喜欢借贷。 常人跟着称是,富人敢于说不 普通人人云亦云,有些是迷信,有些是父母的讹传,他们难免会“小钱精明,大钱糊涂”。如,购买便宜的房子,他们很计较物业管理费,以为越少越好。殊不知,物业管理费越便宜的小区,缺乏人员打理,常常住了五年就已破破烂烂,省了点物业管理费,房子未来的升值空间却被破坏掉了。 他们买保险是比较回报率,回报高才买。保险不是投资,购买保险是替家庭买下一个保障网,保单最关键的内涵是足够的保障,理赔信誉好,代理人服务到位。 常人羊群性格,富人狼性特征 身边的两位年轻人,知道他们20年后,哪一位能成为富翁吗?当然可以,看他们胆子大小便可以预测。 富翁从小胆子大,敢于尝试新鲜事物,别人不敢干的事情,他去干。公司准备开拓西部市场,要派职员去兰州、成都等地干上三四年,未来的富翁会毫不犹豫,甚至毛遂自荐。一般人却不愿意离开京、沪公司总部,考虑良久,仍迟迟不愿行动。胆子大,自然机会多;胆子小,机遇也会流失。你说,哪一位比较容易成功? 一般人羊群效应明显。大家随波逐流,不敢鹤立鸡群,不肯尝试任何新生事物,怕失败,怕被人家笑话,等到大家趋同才会去干,他的成就就有限。富翁狼性特征明显,他们在股票基金净值达到1.30元时已经购进;羊群性格的人最终等到2.30元时才会购进。“狼”赚钱时,“羊“买进的价位已较高,就算不亏也赚不多。 羊群性格的人典型表现是:等到周边朋友先行动,拥有成功经验后,才会跟随。

狼与羊的故事

狼与羊的故事 在这个世界上只有两种东西,一种是狼,一种是羊。 羊是狼的羊,狼是羊的狼,羊存在的意义就是让狼吃。猪是人的羊,人是猪的狼;猪草是猪的羊,猪是猪草的狼;猪草是氮磷钾的狼,氮磷钾是猪草的羊……这就是生物学里所谓的生态的金字塔结构,金字塔顶端的是剥夺者,是狼;金字塔顶端以下的是被剥削者,是羊。当然,人是上帝的羊,上帝是人的狼。 这个故事讲述的是一个“吃与被吃”的法则。这里的吃可以是吃,可以是利用,可以是学习,总之,是吃者从被吃者身上汲取了价值使吃者更为强大。 我是怎样感悟到这个法则的呢?一天我站在屋外看着屋前 的草草木木,我在想:橘子树为什么要长出这么好吃的果实呢?为了自己更好的繁衍?不对,没有很好吃的果实照样能很好的繁衍,例子数不胜数;给人吃?对!就是给人吃的,存在即有价值,这就是橘子树存在的价值之一。还有:猪、鸡、水稻、白菜、桃子等等,它们存在这世界上最大的价值就是让人吃。为什么要让人吃呢?因为人类是上帝最给力的奴隶。人类吃好了才能更好的为上帝干事,为上帝那个不可告人的目的好好地工作。对!“吃”是价值的吸收,狗尾草又何尝不是人类的羊呢?它保持水土、净化空气、是猪马牛羊的食物,人类又何尝没在它身上汲取价值呢?整个生物界都是吃与被吃的关系,都是狼与羊的关系,狼存在的使命是吃,羊存在的价值是被吃。

整个宇宙以及人类社会又何尝不是这样呢?不认可这个观点的人只不过是在自欺欺人的自我安慰罢了。在整个宇宙最大的狼便就是,规律的制定者——上帝,最大的羊便就是人类或者类人类(和人类类似的高智商生物)。 在人类社会中,弱者是强者的羊,强者是弱者的狼,弱者活在世上的意义就是做强者的养料,强者活在这世上的意义就是做上帝的给力奴隶。毛泽东是位伟人,是因为他汲取了许多羊的养分,他的父母兄弟家人是他的羊;他的同学朋友是他的羊;他的学校老师书本是他的羊;他的将军士兵是他的羊;他的小米步枪是他的羊;他的平民百姓是他的羊。他之所以能成为伟人是因为他知道“狼与羊的故事”,领悟了“吃与被吃”的法则,选择了成为狼并且采取了行动,还有就是得到的上帝的亲睐。 在这个还很初始化的人类社会,大多数人还不知道“狼与羊的故事”,更领悟不透“吃与被吃”的法则。如果你有幸看了这个故事领悟了这个法则,是做狼还是做羊就随便你自己啦。

人狼羊菜安全渡河问题

人、狼、羊、菜安全渡河问题 摘要 安全渡河问题又称作“人狼羊菜”问题,其具体描述为:一个人带着一条狼、一只羊、一筐白菜过河但由于船太小,人一次只能带一样东西乘船过河。狼和羊、羊和白菜不能单独留在同岸,否则羊或白菜会被吃掉。本文尝试应用运筹学中的图理论中的树知识来解决该问题。 问题分析 设图的顶点v=(m,n,p,q),m表示人,n代表狼,p代表羊,q代表白菜,且m,n,p,q ∈{-1,0,1},-1代表此岸,0代表船上,1代表彼岸。根据题意,问题变成了找出从顶点(-1,-1,-1,-1)到顶点(1,1,1,1)路径(即是一棵以(-1,-1,-1,-1)为根结点,(1,1,1,1,)为叶子结点的树)的问题。 通过分析问题知道: 顶点v必须满足以下条件: 1,当m≠0时,n,p,q≠0 因为乘船时必须有人在上面; 2,当m≠p时,n≠p,q≠p即当人与羊不在一起时,必羊和狼不在一起,羊和菜不在一起; 3, 当n、p、q中有一个为0时其余两个都不能为0. 设相邻顶点Vi=(m1,n1,p1,q1),Vj=(m2,n2,p2,q2) .设 Tm=m2-m1,Tn=n2-n1,Tp=p2-p1,Tq=q2-q1,易见T∈(-1,0,1),因为状态必须是渐变的,不能逾越中间一个状态。 路径应该满足以下条件: 1,|Tm|≠0,即人前后的状态必须改变; 2,|Tn|+|Tp|+|Tq|=0或=1,因为最多仅能有一个物品随人转移,可以为0是因为允许人一个物品都不带; 3,当|Tn|+|Tp|+|Tq|=1时设状态改变的物品为x,必有Tx=Tm,因为物体状态的改变必是人状态改变的结果,且与人的改变方向一致。

(状态机)狼羊菜过河的程序

过河问题大家都知道,不多说了. 解决这个问题的经典方法就是使用有限状态机. 根据人,狼,羊,菜,在不同河岸,可以抽象出N种不同的状态.某些状态之间可以转换. 这些转换就是运算了. 我们的目的就是找到一组这样的运算,可以从初始状态转换到终止状态. 其间的状态必需都是合法的. C++代码如下: /*------------------------------------- 农夫,狼,羊,菜,过河 --------------------------------------*/ #include #include enum PLACE { NO, // 没有过河的 YES, // 已经过河了 }; // 状态 typedef struct { PLACE man; // 人的状态 PLACE wolf; // 狼的状态 PLACE sheep; // 羊有状态 PLACE menu; // 菜的状态 } STATUS; const STATUS c_start = {NO,NO,NO,NO}; // 起始状态 const STATUS c_end = {YES,YES,YES,YES}; // 终止状态 // 结点(保存转换路径) typedef struct TURN{ STATUS status; TURN* p; }TURN; typedef std::list LIST_TURN; typedef std::list LIST_NODE; // 判断两个状态是否一致 bool operator == (const STATUS& sa, const STATUS& sb) { return sa.man == sb.man && sa.wolf == sb.wolf &&

狼和羊

教学目标: 1、学会本课“狼、溪、脏、怜、争、辩、扑”这7个生字和由这些字组成的词语。认识“碴、逼、嚷”这3个字。 2、分角色正确、流利、有感情地朗读课文。提高学生有感情地朗读课文的能力。 3、培养学生根据语言环境及生活实际理解词语的能力。 4、使学生明白对像狼一样蛮不讲理的坏人是没有道理可讲的,应该以智取胜。 5、通过学习,了解坏人的本性,增加学生对坏人坏事的憎恶之情。 重点难点: 1、学习生字词,朗读、理解课文。 2、理解狼的三次借口都是在“故意找碴儿”。 3、狼为什么不直接吃掉小羊而要故意找碴儿? 课时安排:2课时 教具学具准备: 生字卡片、词语卡片、课文朗读录音带、多媒体课件、狼和小羊的头饰。 教学过程 第一课时 教学目标:

1、学会“狼、弄、脏、惊、温、倒、经、争、扑”九个生字和由生字组成的词语。认识“爱、骂、怜、辩、蛋”这5个字。 2、能正确、流利地朗读课文,培养学生朗读课文的能力。 3、抓住关键词语、句子理解课文内容。 教学重难点: 1、学习生字词,朗读、理解课文。 2、初步把握课文主要内容。 3、理解狼的三次借口都是在“故意找碴儿”。 (一)谈话导入,揭示课题。 1、(出示插图)图上画着哪两个动物? 2、板书课题“狼和小羊”,共同读一遍。教学生字“狼”。 3、播放课文配乐,范读课文。引导提问:这篇课文主要写了一件什么事? (二)引导初读课文。 (1)轻声读课文,画出本课生字词。 (2)重点引导拼读需要掌握的字词。借助拼音读准字音,把生字多读几遍,把句子读通顺。 (三)检查初读情况 1、指名分段读课文,纠正字音。 2、出示字、词卡片,认读生字、新词。 3、说一说读了课文以后知道了什么。 (四)再读课文,读通句子,把课文课流利

关于羊和狼的歇后语

关于羊和狼的歇后语 关于羊的歇后语 1、马缰绳栓羊头——路子不对 2、羊群里跑个驴——大个的 3、瞎子吃羊肉——块块好 4、叫羊看菜园——越看越光 5、恶狼对羊笑——不怀好意 6、上供的羔羊——豁出去了 7、牵只羊全家动手——人浮于事 8、羊二庄的武故事——从打头儿来 9、山羊拉屎——稀稀拉拉 10、羊跟老虎做朋友——总有一天要吃亏 11、绵羊打哈欠——洋气;羊气 12、羊群里的大羊羔——宠儿 13、苏武牧羊——趴冰卧雪;北海边;被海扁 14、风中的羊毛——忽上忽下;不知下落;下落不明 15、迷途的羔羊——无家可归

16、羊屎落地——颗颗一样大 17、狼哭羊羔——假仁假义;虚情假意;假慈悲 18、卖羊肚儿的说梦话——哪里摆;哪块儿摆 19、当年的羊羔——一滚就熟 20、山羊拴在竹园里——乱缠;缠住了 21、羊不长角——狗相 22、羊粪蛋下山——滚蛋 23、羊圈里的驴粪蛋——数你大 24、绵羊绑在门扇上——任人摆弄 25、雇豹子掌羊——唔得渴 26、刀下的绵羊——任人宰割;随人宰割 27、绵羊的尾巴——油水多;翘不起来 28、在看羊的狗——一个比一个凶 29、挂羊头买狗肉——有名无实 30、六月里冻死羊——说来话长 31、牵着羊进照相馆——出洋(羊)相 32、狼窝里的羊——九死一生 33、羊角葱靠南墙——越发老辣;老辣已定;老辣

34、恶狼装羊——不存好心;居心不良 35、猢狲骑山羊——抖威风 36、山羊见了老虎皮——望而生畏 37、瞎子放羊——由它去;随它去关于狼的歇后语 1、豺狼请客——没安好心;居心不良 2、豺狼披羊皮——充好人 3、腊月里遇着狼——冷不防 4、狼吃东郭先生——恩将仇报;以怨报德 5、恶狼学狗叫——没怀好意 6、奸狼下了个贼狐狸——不是好种;孬(咖坏;不好)种 7、恶狼生个贼狐狸——不是好种 8、白眼狼戴眼镜——冒充好了 9、豺狼恨猎人——死对头 10、饿狼口里夺脆骨——好大的胆 11、鸡给黄鼠狼拜年——自投罗网 12、恶狼和疯狗做伴——坏到一块了 13、恶虎斗狼群——寡不敌众

狼性与羊性

狼性与羊性 我相信世界上大多数人不喜欢狼,对狼有误解,有偏见。不然不会有那么多关于狼的贬义词。如:“狼心狗肺”“如狼似虎”“狼狈为奸”“色狼”……之前,我对狼这种动物也不曾有过好感。它那双黑暗之中幽深冷厉还泛着绿光的眼让我不寒而栗。后来有位朋友建议我去看《狼性教育——让孩子成为主宰命运的强者(家庭教育新理念)》,后来我又看了《狼图腾》。尔后我逐渐明白,所有这些对狼的偏见就是我们千千万万受儒家文化民族的同胞弱性的表现。我也不知改为之自豪还是悲哀。 《狼图腾》是一本关于狼、关于蒙古草原的书。作者从狼的身上看到了华夏农耕民族和蒙古游牧民族最本质的差别,从而探究了农耕民族的性格弱点所在——羊性。狼吃羊的场面我没有亲眼目睹过,也不敢去目睹。不过,在动物世界中我看过一二,还是满含对狼的讨厌、憎恶。耻笑它们的凶残,还常常拿它们和老虎去比。不过今天当那段狼吃羊的描写再现在我的脑海中时,我的眼前忽然跳出了一个场面——1860年的10月,英法联军侵略中国,火烧圆明园的情景。一群强盗在肆意地烧杀抢掠,而我们的国人,我们的政府却麻木不仁。多么惊人的相似。同样的情形,同样的仇敌,一群雪白而肥硕的羊瞪着惊恐的眼珠,你说束手无策吧,它们会互相冲撞挤压成一团,然后轻易地就选出一只“牺牲品”。它们认为这样就可以确保自身安全,还静静地围成一圈去注视狼撕扯那只可怜的羊。当时的清政府多少次割地求和不正

是这样吗? 至此,我明白了,自誉为万物之灵长的聪明得不可一世的人类却与羊类动物有共同之处。 我不是说羊性不好,而是希望我们的民族该注入一点狼的刚强勇猛的新鲜血液。在人类主宰地球之前,狼绝对是地球上的统治者之一,但是在人类的枪口下,狼--用鲜血捍卫着生存的尊严。流血,倒下.生命的终结,只有在这种精灵的眼中,我们看不到乞求与哀怜,只有孤傲与冷漠..... 而今,因为父母一代将太多的精力与希望投注在孩子身上。它们就想把孩子变成自己实现理想的工具。孩子们就像被拔了牙试图饲养的小狼,去柔顺驯服地完成父母的意愿。可父母们从来没有想过这样的孩子如何在广袤的草原去生存,如何成为一匹阵阵的狼!

数学建模人狼羊菜问题学习资料

数学建模人狼羊菜问 题

一,论文题目人,狼,羊,菜渡河问题 二,摘要 将人狼羊菜依次用一个四维向量表示,对每一分量按二进制法则进行运算,将可行状态与转移状态表示出来,将这种运算方法设计为Matlab语言,进行计算机的计算,最终求得所得结果。 三,问题的重述 一个摆渡人希望用一条小船把一只狼,一只羊和一篮白菜从一条河的左岸渡到右岸去,而船小只能容纳人,狼,羊,菜中的两个,绝不能在无人看守的情况下,留下狼和羊或羊和白菜在一起,求应怎样渡河才能把狼羊白菜都运过去? 四,模型的假设、符号约定和名词解释 我们可以用四维向量来表示状态,其中第一分量表示人,第二分量表示狼,第三分量表示羊,第四分量表示菜;当人或物在此岸时相应分量取1,在对岸时则取0。 根据题意,人不在场时,狼要吃羊,羊要吃菜,因此,人不在场时,不能将狼与羊,羊与菜留在河的任一岸。例如,状态(0,1,1,0)表示人和菜在对岸,而狼和羊在此岸,这时人不在场的情况下狼要吃羊,因此,这个状态是不可行的。 我们通过穷举法将所有可行的状态列举出来,可行的状态有 (1,1,1,1),(1,1,1,0),(1,1,0,1),(1,0,1,1),(1,0,1,0)

(0,1,0,1),(0,1,0,0),(0,0,1,0),(0,0,0,1),(0,0,0,0) 可行状态共有十种。每一次的渡河行为改变现有的状态。 用1 表示过河,0 表示未过河。例如,(1,1,0,0)表示 人带狼过河。状态转移只有四种情况,用如下的向量表示。 (1,0,0,0),(1,1,0,0),(1,0,1,0),(1,0,0,1) 五,模型的建立、模型求解、模型的结果和检验 将可取状态及可取运载分别编成矩阵。共分为五个m文件,一个主文件xduhe.m数,分别为: 1、duhe(L,B,M,s)函数。 用来实现渡河总思路。思路为:将起始矩阵A分别与可取运载相加(使用二进制法则),判断相加后的矩阵C是否是【0,0,0,0】,如果是,则渡河成功。否则,用fuhe(C,M) 函数判断C是否是可取状态,如果是,则打印并将C与初始矩阵合并成新矩阵,继续调用duhe.m函数。 2、 fuhe(C,M)函数。 判断和矩阵C是否属于矩阵M,如果是,则返回1,否则返回0. 3、Panduan(S函数。 判断S矩阵中是否有两个相同的状态,即行向量。如果有,则返回0,否则返回1. 4、print(K,C,s)函数。

关于狼吃羊和人吃羊刍议

近日与朋友聊天,说到世界上其实人吃掉的羊要远比狼吃掉的羊多得多,可是关于吃羊的恶名却始终只有狼背着,人非但从来没有因吃羊而背上骂名,而且自古以来还不乏人与羊和睦相处、亲昵无间的美谈。 细细想来,狼之所以会如此倒霉,主要是狼吃起羊来从不知道要多少有所掩饰,要尽量用些漂亮的辞令,或者干脆先设法去和羊做朋友,而是每每食欲一来,便瞪着发绿的眼睛,直盯着羊群,结果吓得众羊儿惶恐不安,咩咩直叫,即使没被咬死,也早已被吓得个半死。如此一来,羊怎会对狼有好印象?!至于狼扑向羊群时的样子,更是贪婪之极,只要看准一只羊,便会猛扑上去,不等将其扑倒便张口咬断对方的颈脖,令羊儿鲜血四溅而不顾。接着,在羊的阵阵惨叫声中,狼又会迫不及待地撕咬开羊的肚腹,任凭后者怎样挣扎与痉挛,依然美美地大口吞食其被鲜血浸红的筋肉与还在冒着热气的脏腑。此情此景,谁见了不会痛斥狼的残忍与十恶不赦呢?! 而人则不然。人要吃羊,从来不会直截了当地长驱直入,而总是会设法迂回,总是善于绕圈子,绕来绕去,甚至把圈子绕到了小羊身上。每当母羊临产,人总会象守护神一般守在边上,有时还会几天几夜不合眼。若遇难产,人一定会苦苦相救,力保其母子平安。至于母羊产后若没有奶水,人往往会从家里拿来婴儿用的奶瓶,灌上牛乳或米汤之类的营养品,然后把羊羔抱在怀里,用无限的温情悉心地喂养羊羔。至此,哪只羊不会因人所表现出的那般博大的爱而感激零涕?!当羊羔渐渐长大,人又总会把羊群带到草肥水美的地方,让它们尽情地饱餐一顿,有时还会放开歌喉,用悠扬婉转的歌声与草原上白云般的羊群为伴。长年累月,人在羊的眼里便成了恩人,成了救星乃至最好的朋友。以至于当羊儿终于长到膘肥体壮,当人终于偷偷地接过贩羊人递过来的大把钞票,又用羊儿们熟悉的吆喝声将它们成群结队地赶上运羊车送往屠宰公司时,羊儿们依旧浑然不觉,它们依然是那样顺从,甚至还有些抑制不住的兴奋,以为这次人又会带它们进城去过上一段好日子呢! 诚然,人宰羊也会流血,但干得绝对比狼漂亮。过去,人们往往会在不经意间猛地用绳子捆住羊的四只蹄子,当羊还以为是宽厚的人又在和自己玩耍时,紧握在人手中的一把尖刀便会猛地直刺进羊的胸膛,捣破羊的心脏,还没等羊真正弄明白眼前发生的一切,就已经软瘫在地,一命呜呼了。当然,如今这一切变得更加干净利索了。在现代化的屠宰公司里,那儿的人们都是那样的彬彬有礼和教养有素,那里的环境更是那样整洁卫生和幽美,绝少血腥与恐怖之气。更让人匪夷所思的是,只消一支烟的功夫,成百上千头“咩咩”欢叫的羊儿便会转瞬间身首两处,赤条条地被剥去了皮,硬邦邦地叠放在冷冻车间,等待着去成为人们餐桌上的美味佳肴。 可怜的羊儿至死都没想到,那个把自己抱在怀里用奶瓶精心喂养自己的人,竟会从一开始就想着好在哪一天早上把自己变成人们餐桌上的美味佳肴;更没有想到,那个与自己朝夕相处甚至不惜在风雪夜冒死救助自己的人,其内心深处其实想到的还是在日后能让自己的腰包鼓起来,而不至于因羊的死去而瘪下去。 诚然,关于狼吃羊和人吃羊的话题,恐怕还得这样一代代地演绎下去。而狼的粗暴与鲁莽,落下个千古骂名,自然也罪有应得。只是我想,如若有一天羊终于识破了人的把戏,那么羊还会象今天这般驯顺么?这倒是很值得人好好琢磨的。■

数学建模人狼羊菜问题

一,论文题目人,狼,羊,菜渡河问题 二,摘要 将人狼羊菜依次用一个四维向量表示,对每一分量按二进制法则进行运算,将可行状态与转移状态表示出来,将这种运算方法设计为Matlab语言,进行计算机的计算,最终求得所得结果。 三,问题的重述 一个摆渡人希望用一条小船把一只狼,一只羊和一篮白菜从一条河的左岸渡到右岸去,而船小只能容纳人,狼,羊,菜中的两个,绝不能在无人看守的情况下,留下狼和羊或羊和白菜在一起,求应怎样渡河才能把狼羊白菜都运过去? 四,模型的假设、符号约定和名词解释 我们可以用四维向量来表示状态,其中第一分量表示人,第二分量表示狼,第三分量表示羊,第四分量表示菜;当人或物在此岸时相应分量取1,在对岸时则取0。 根据题意,人不在场时,狼要吃羊,羊要吃菜,因此,人不在场时,不能将狼与羊,羊与菜留在河的任一岸。例如,状态(0,1,1,0)表示人和菜在对岸,而狼和羊在此岸,这时人不在场的情况下狼要吃羊,因此,这个状态是不可行的。 我们通过穷举法将所有可行的状态列举出来,可行的状态有 (1,1,1,1),(1,1,1,0),(1,1,0,1),(1,0,1,1),(1,0,1,0) (0,1,0,1),(0,1,0,0),(0,0,1,0),(0,0,0,1),(0,

0,0,0) 可行状态共有十种。每一次的渡河行为改变现有的状态。 用1 表示过河,0 表示未过河。例如,(1,1,0,0)表示 人带狼过河。状态转移只有四种情况,用如下的向量表示。 (1,0,0,0),(1,1,0,0),(1,0,1,0),(1,0,0,1) 五,模型的建立、模型求解、模型的结果和检验 将可取状态及可取运载分别编成矩阵。共分为五个m文件,一个主文件xduhe.m数,分别为: 1、duhe(L,B,M,s)函数。 用来实现渡河总思路。思路为:将起始矩阵A分别与可取运载相加(使用二进制法则),判断相加后的矩阵C是否是【0,0,0,0】,如果是,则渡河成功。否则,用fuhe(C,M) 函数判断C是否是可取状态,如果是,则打印并将C与初始矩阵合并成新矩阵,继续调用duhe.m函数。 2、 fuhe(C,M)函数。 判断和矩阵C是否属于矩阵M,如果是,则返回1,否则返回0. 3、Panduan(S函数。 判断S矩阵中是否有两个相同的状态,即行向量。如果有,则返回0,否则返回1. 4、print(K,C,s)函数。 打印相应的状态。 通过程序运行结果截图为:

实验6:农夫、狼、羊和菜问题

实验6:农夫、狼、羊和菜问题 一、实验目的: 1. 会定义图的抽象数据类型; 2. 熟悉图的基本结构,掌握程序中的用户头文件、实现文件和主文件之间的相互关系及各自的作用; 3. 熟悉对图的一些基本操作和具体的函数定义; 4.掌握在实际问题中运用所学知识解决实际问题的方法和步骤。 二、实验内容描述: 有一农夫带着一条狼、一只羊和一筐菜,想从河的左岸乘船到右岸。但由于船太小,农夫每次只能带一样东西过河,而且,如果没有农夫看管,则狼会吃羊,羊会吃菜。问农夫怎样过河才能把每样东西安全地送过河。 三、实验要求: 1. 将上述问题用图表示出来; 2. 选择图的一种存储结构,编写一个自动生成该图的算法; 3.在上述基础上编写求解该问题的算法程序,并用此程序上机运行、调试, 4.屏幕显示结果,能结合程序进行分析。 四、问题分析: 该问题从表面上看,并不是一个图的问题,但可以把它用图表示出来,从而转换为一个图的问题。在这个问题的解决过程中,农夫需要多次架船往返于两岸之间,每次可以带一样东西或者自己单独过河,每一次过河都会使农夫、狼、羊和菜所处的位置发生变化。如果用一个四元组(Farmer,Wolf,Sheep,Veget)表示当前农夫、狼、羊和菜所处的位置,其中每个元素可以是0或1,0表示在左岸,1表示在右岸。这样,对这四个元素的不同取值可以构成16种不同的状态,初始时的状态则为(0,0,0,0),最终要达到的目标为(1,1,1,1)。状态之间的转换可以有下面四种情况: (1)农夫不带任何东西过河,可表示为: (Farmer,Wolf,Sheep,Veget) (!Farmer,Wolf,Sheep,Veget) (2)当农夫和狼在相同位置时,表示农夫带狼过河,即当Farmer=Wolf时:(Farmer,Wolf,Sheep,Veget) (!Farmer,!Wolf,Sheep,Veget) (3)当农夫和羊在相同位置时,表示农夫带羊过河,即当Farmer=Sheep时:

狼吃羊的故事

傍晚,一只羊独自在山坡上玩。突然从树木中窜出一只狼来,要吃羊,羊跳起来,拼命用角抵抗,并大声向朋友们求救。 牛在树丛中向这个地方望了一眼,发现是狼,跑走了; 马低头一看,发现是狼,一溜烟跑了; 猪经过这里,发现是狼,冲下山坡; 兔子一听,更是一箭一般离去。 山下的狗听见羊的呼喊,急忙奔上坡来,从草丛中闪出,一下咬住了狼的脖子,狼疼得直叫唤,趁狗换气时,怆惶逃走了。 很短一个故事,却看穿了许多人! 回到家,朋友都来了。 牛说:你怎么不告诉我?我的角可以剜出狼的肠子。 马说:你怎么不告诉我?我的蹄子能踢碎狼的脑袋。 猪说:你怎么不告诉我?我用嘴一拱,就让它摔下山去 兔子说:你怎么不告诉我?我跑得快,可以传信呀。 在这闹嚷嚷的一群中,唯独没有狗。 生活中并不缺少美,缺少的是发现。学会欣赏每个瞬间,热爱生命,相信未来一定会更美好。有人压力一大就去算卦,算卦的目的是要算一个好的未来,万一算了一个差的怎么办?这其实不是你的未来差,而是你自己在把它变差。我们要相信通过努力,未来没有问题。 有这样一个故事,两个和尚下山化斋,回来的路上遇到了一条河,河边有一个靓丽女子,女子不敢过河。小和尚有心想去帮她,又怕别人说闲话,老和尚毫不犹豫地把女子背过河去。 到庙里,小和尚说:“出家人不近女色,你为什么要背那个女子?” 老和尚说:“我已经把她放在了河边,你怎么还‘背’着她啊?” 如今,跳槽已成为职场中平常得不能再平常的现象了。一些人在决定跳槽之时,都是交上辞职信就走人,要么是领了工资,第二天就“消失”了。这些人并不提前跟公司里的人透露辞职的事,也不会提前打好招呼。他们以为,这样能最好地保护自己。可是,世界很大也很小,更何况同在一个抬头不见低头见的职场混。因此,一个成熟的职场中人,应该在辞职之时多考虑一下自己的离开对原公司可能造成的冲击,更应该考虑降低自己的辞职成本。 当你决定辞职时,不仅对你自己有影响,对同事、对上司,甚至对部门都会有影响。所以,最好的做法是首先直接跟主管提交辞呈,诚实地说明辞职的原因,然后与主管商量,什么时候应该让同事们知道,以及如何将工作合理移交。有的公司有严谨的代理人制度,交接过程会容易一些。如果没有这样的制度,在你走人之前要做好移交工作。另外,有5件事是非做不可的。 1.如果你想把属于自己的档案带走,交辞职信前就应该处理好。不要离开前匆匆忙忙地准备,难逃“瓜田李下”之嫌。 2.任何资料要带走,先确认是否有知识产权问题,损害原公司利益的事情不要做。 3.若是进入原公司的竞争公司,尽量少谈原公司的竞争策略与业务机密。谈论这些虽然可能会暂时讨得新主的欢心,甚至可能因此提高自己的薪酬与职位,但更会因此落个背叛与出卖的恶名。 4.避免以负面方式谈论原公司,这会影响你在行业内的声誉。 5.不要积极挖原公司的人进新公司,否则新公司虽然短期获益,却会让新公司对你渐生防范之心,怕你再度离职时再挖墙角。

人狼羊草过河问题数学建模

数学建模 ——题目:过河问题一(人狼羊草)

摘要 (3) 一、问题的提出 (3) 二、问题分析及假设 (4) 三、模型的参数及符号 (5) 四、模型及解 (5) 五、计算机编程法(C语言) (10) 六、参考文献 (14)

摘要 在本次数学建模中,我们主要讨论的是人狼羊草问题:一位渔民带了狼、羊、草,准备过河。可是小船每次只能容下渔民和一件物品。渔民不在时,狼会吃羊、羊会吃草。要求我们设计一个方案,使农夫可以无损失的过河。此过河问题可以视为一个多步决策过程,确定每一步的决策,达到过河的目标。而且,我们假设人不在时,狼或羊在农夫不在时不会自己跑掉或被人牵走且农夫会划船。于是我们得到一下集中状态:狼羊草人/, /狼羊草人,狼羊人/草,草/狼羊人,狼草人/羊,羊/狼草人,羊草人/狼,狼/羊草人,羊人/狼草,狼草/羊人。题目要求找出“狼羊草人/”到“/狼羊草人”的路径,本论文根据题目要求而讨论了人、狼、羊、草怎样安全过河的模型。提出了算法和计算机编程法两种解决问题的方法,并且通过计算机编程法得出了一种方法。 一、问题的提出 人、狼、羊、草均需过河,船需要人划,最多载一物。人不在时,狼吃羊、羊吃草,问如何过河? 这个问题可以简单的解释为:一位渔民带了狼、羊、草,准备过河。可是小船每次只能容下渔民和一件物品。另有一条件为,渔民不在时,狼会吃羊、羊会吃草。也就是说,狼与羊、羊与草、或狼羊草不能单独在一起。现要求为过河人提出某种过河的方法,使人、狼、羊、草都安全度过河且方法最简单为宜

二、问题分析及假设 过河问题相当于状态的转移。初状态是人,狼,羊,草均在此岸,目标终状态是人,狼,羊,草均在对岸。 (此岸)状态向量:用四维向量(人,狼,羊,草)表示人,狼,羊,草各自的状态,记“在此岸”时各分量为“1”,否则记为“0”。例如:(1,1,1,1)表示人,狼,羊,草均在此岸,(0,0,0,0)表示人,狼,羊,草均在对岸。 允许状态向量:满足系统限定条件的状态向量。穷举所有允许状态向量如下:(1,1,1,1),(1,1,1,0),(1,1,0,1),(1,0,1,1),(1,0,1,0),(0,1,0,1),(0,0,0,1),(0,0,1,0)(0,1,0,0),(0,0,0,0)。 运载状态向量:用四维向量(人,狼,羊,草)表示他们各自被运载的情况,记“被运载”时各分量为“1”,否则记为“0”。例如:(1,1,0,0)表示被运载的是人和狼,又如(1,0,1,0)表示被运载的是人和羊。 允许运载向量:满足系统限定条件下的运载向量。穷举所有允许运载向量如下:(1,0,0,0),(1,1,0,0),(1,0,1,0),(1,0,0,1)。 转移:一允许状态向量逻辑加以允许运载向量。 状态转移方程:原状态⊕运载=现状态 运算规则:1+1=0,1+0=1,0+1=1,0+0=0。 允许运载方式:若可取状态向量 + 可取运载向量 = 可取状态向量,

狼羊过河问题程序报告

狼羊过河问题程序报告 ----护城小兵一、问题描述 一个人带着一只羊,一条狼和一棵白菜想过河,假设他每次只能带一只羊,或者一条狼,或者一颗白菜过河。 并限定人不在场时,狼和羊,或羊和白菜不能单独在一 起,试编写程序求出他带一只羊,一条狼和一颗白菜过 河办法。 二、结构图 狼羊过河问题 要 解 决 问 题 狼和羊不能单独在一起羊 和 菜 不 能 单 独 在 一 起 每 次 来 回 都 只 能 带 一 件 全 部 物 品 要 安 全 过 河 输 出 两 岸 情 况

三、数据结构设计 int check(int arr[]):是自定义的一个判断否有东西被吃的算法. prnstatus(int ar[], int br[], char str[][3]):是是自定义的一个判断两岸状况的算法ti,tj;定义为ti,tj 记录上次带的东西,值为-1表示没带东西 char str[3][3]:为定义的一个3*3的字符型数组. 四、处理流程图 人、羊、狼、白菜 到河边 人先带羊过河 人在菜过河 人在把羊带回来 人把狼带过去

人在把羊带过去 人,狼,羊,菜, 全部安全过河五、源程序 #include #include int check(int arr[]) { if ( (arr[0]==1 && arr[1]==1 && arr[2]==0) || (arr[0]==0 && arr[1]==1 && arr[2]==1) ) return 0; else return 1; } void prnstatus(int ar[], int br[], char str[][3]) { int i; printf(" ( a岸现有:"); for (i=0;i<3;i++) if (ar[i]) printf("%s ",str[i]); printf(". b岸现有:"); for (i=0;i<3;i++) if (br[i]) printf("%s ",str[i]); printf(")\n"); }

人狼羊过河问题

在河的一岸,人、狼、羊、草、均要过河,船需人划,而且最多载一物,当人不在时,狼会吃羊,羊会吃草;试安排人狼羊草安全渡河。 一、分析问题 人带着狼、羊和草,身处河的一岸。他要把这些东西全部运到彼岸。问题是他面前只有一条小船,船小到只能容下他和一件物品,另外船必须有人划。而且,因为狼能吃羊,而羊爱吃草,所以人不能留下羊和草或者狼和羊单独在河的一边。以下是解决方案:整个过程中我们把该过程分为两种状态A和B,在各状态中,将人羊狼草用一个四维向量表示,A状态表示人羊狼草在河的左右岸的状态,当一物在左岸时,用分量0表示,当一物在右岸时,用分量1表示,例如状态A1(1,1,0,1)表示人羊草在河的右岸,狼崽河左岸,根据题中的要求,有些状态时允许的,有些状态是不允许的,这就牵涉到该方案的安全性,于是我们规定由条件允许存在的状态我们称之为可取状态,比如A1(0,1,0,1)是一个可取状态,而A2(0,0,1,1)则是一个不可取状态,因为他表示羊草在河的右岸,是不可取的; 人然后是B状态,B状态表示用船渡河过程中表示船内运载的状况,当一物在船上时用1表示,不再船上则用0表示,当满足问题条件的运载称为可取运载,当不满足条件的运载则是不可取运载,如B1(1,1,0,0)表示人狼崽船上,但它不是可取状态,同样B2(1,0,1,1)也不是可取状态,应为船不能载三物。 我们可以通过穷举法得到可取状态向量: ①人不在时:三个全不在的(1,1,1,1) 两个不在的(1,1,1,0)、(1,1,0,1)、(1,0,1,1) 一个不在的(1,0,1,0) ②人在时:三个全在的(0,0,0,0) 一个不在的(0,0,0,1)、(0,0,1,0)、(0,1,0,0) 两个不在的(0,1,0,1) 一共有10种状态。 状态转移方程:原状态㈩运载=现状态 一可取状态向量㈩可取运载向量,称之为过河。 其中㈩运算方式为“1+1=0,1+0=1,0+1=1,0+0=0”。 二、建立模型 在规则“1+1=0,1+0=1,0+1=1,0+0=0”下, 试求从最初可取状态向量(0,0,0,0)经过N步到最终状态向量(1,1,1,1)的可取转移方式。 三、解法

相关文档
相关文档 最新文档