人猫鸡米渡河问题的matlab求解法

合集下载

人猫鸡米渡河问题的数学模型

人猫鸡米渡河问题的数学模型

重庆大学本科生数学模型作业报告人猫鸡米渡河问题的数学模型组员:唐新赵广志<指导教师:黄光辉人猫鸡米渡河问题的数学模型一、摘要:本文主要对数学建模基础模型跟“商人过河”类似简单问题:人带着猫、鸡、米过河,船除需要人划之外,至多能载猫、鸡、米三者之一,而当人不在场时猫要吃鸡、鸡要吃米。

试设计一个安全过河方案,建立数学模型,并使渡河次数尽量地少。

模仿“商人过河”的模型设计出新的数学模型。

二、问题的重述人带着猫、鸡、米过河,船除需要人划之外,至多能载猫、鸡、米三者之一,而当人不在场时猫要吃鸡、鸡要吃米。

试设计一个安全过河方案,并使渡河次数尽量地少。

关键词:人不在场时猫要吃鸡、鸡要吃米,船需人划,穷举法三、模型假设不考虑外界其他影响,只考虑问题所述的条件:1、船除需要人划之外,至多能载猫、鸡、米三者之一2、当人不在场时猫要吃鸡、鸡要吃米四、符号说明五、问题分析安全过河问题可以看着是一个多部决策的过程。

每作出一步决策,都必须保证船、人、猫、鸡、米能满足题设条件。

否则,不仅难以实现过河的最优化,而且还容易出现事物的不安全性。

因此,在保证安全的前提下,即猫、鸡在一起时,人要在场,鸡、米在一起时,人也要在场,用状态变量s 表示某一岸的状况,决策变量d 表示是乘车方案,我们容易得到s 和d 的关系,其中问题的转化要在允许变化范围内,确定每一步的决策关系,从而达到渡河的最优目标。

六、模型建立与求解Ⅰ. 模型的建立:人、猫、鸡、米分别记为4,3,2,1=i ,当i 在此岸时记1=i x ,否则记0=i x ,则此岸的状态可用()4321,,,x x x x s =表示。

记s 的反状态为()4321'1,1,1,1x x x x s ----=,允许状态集合为()()()()(){}0,1,0,1,1,1,0,1,1,0,1,1,0,1,1,1,1,1,1,1=S (1) 以及他们的5个反状态。

决策为乘船方案,记作()4321,,,u u u u d =,当i 在船上时记1=i u ,否则记0=i u ,允许决策集合为()()()(){}0,0,0,1,1,0,0,1,0,1,0,1,0,0,1,1=D (2)记第k 次渡河前此岸的状态为k s ,第k 次渡河的决策为k d ,则状态转移律为()kd k k s k s 11-+=+, (3)设计安全过河方案归结为求决策序列,,,,21D d d d n ∈ ,使状态S s k ∈按状态转移律由初始状态()1,1,1,11=s 经n 步达到()0,0,0,01=+n s 。

求解夫妻过河问题

求解夫妻过河问题

求解夫妻过河问题曲靖师范学院本科生毕业论文论文题目: matlab求解夫妻过河问题作者、学号:郭彩虹2010111212学院、年级:数学与信息科学学院2010级学科、专业:数学数学与应用数学指导教师:郭昀完成日期:2013年12月27日曲靖师范学院教务处摘要渡河问题.[]1始于公元8 世纪,至今它仍是一个逻辑难题,许多数学建模教材上已经提到.这个问题指的是:有不同的对象或生物,他们其中一些相互不共存,逐步地让一小群体从河的一岸到另一岸,经过有限步后,该群体全部从一岸达到另一岸,并且要求没有任何损失.在渡河问题的夫妻过河问题中我们发现状态转移问题有时不一定有解,有时的解又不一定有规律,本文对于夫妻过河问题利用图解法和matlab编写程序求解5对、6对夫妻过河是否有解,并推广到n对夫妻与船的运载能力m对于能否安全渡河时它们之间的关系。

关键词:多步决策 matlab 数学模型渡河问题Problem of couples across the riverAbstract: the problem of crossing the river. In the 8th century, it still is a logical problem, many mathematical modeling teaching material has been mentioned. The question is: have different objects or creatures, they lack some mutual coexistence, gradually to a small group from one bank to another bank of the river, after finite steps, the group all from one side to the other shore, and requires no losses. In crossing the river problem of couples across the river, we found that state transition problem sometimes does not necessarily have a solution, sometimes the solution is not necessarily regular, in this paper, using the graphical method for the problem of couples across the river and the matlab program to solve the 5, 6 for couple across a river if there is a solution,And derived to n couple with the ability to run m to safe crossing the river when the relationship between them.Keywords: Multistep decision Matlab Mathematical model Problem of crossing the river目录1 引言 (1)2 文献综述 (1)2.1 国内外研究现状 (1)2.2 国内外研究现状评价 (2)2.3 问题提出 (2)3 模型假设 (2)4 符号说明 (2)5 重述3、4对夫妻过河问题的解 (3)5.1 3对夫妻过河的解 (3)5.2 4对夫妻过河的解 (3)6 五对夫妻过河模型 (4)6.1 模型构成 (4)6.2 模型建立 (4)6.3 模型求解 (4)6.31 Matlab编程求解 (4)6.32 图解法 (7)7 六对夫妻过河模型 (8)7.1 模型构成 (8)7.2 模型求解 (9)8 n对夫妻过河情况 (10)8.1 求解 (10)8.2 验证 (11)9 总结与展望 (12)9.1 总结 (12)9.2后续研究工作展望 (13)参考文献 (14)附录 (15)1 引言这是一个古老的阿拉伯数学问题。

模型解析及Matlab程序 抢渡长江

模型解析及Matlab程序 抢渡长江

抢渡长江问题提出:“渡江”是武汉城市的一张名片。

1934年9月9日,武汉警备旅官兵与体育界人士联手,在武汉第一次举办横渡长江游泳竞赛活动,起点为武昌汉阳门码头,终点设在汉口三北码头,全程约5000米。

有44人参加横渡,40人达到终点,张学良将军特意向冠军获得者赠送了一块银盾,上书“力挽狂澜”。

2001年,“武汉抢渡长江挑战赛”重现江城。

2002年正式命名为“武汉国际抢渡长江挑战赛”,定于每年的5月1日进行。

由于水情、水性的不可预测性,这种竞赛更富有挑战性和观赏性。

2002年5月1日,抢渡的起点设在武昌汉阳门码头,终点设在汉阳南岸咀,江面宽约 1160米。

当日的平均水温16.8℃,江水的平均流速为1.89米/秒。

参赛的国内外选手共186人(其中专业人员将近一半),仅34人到达终点,第一名的成绩为14分8秒。

除了气象条件外,大部分选手由于路线选择错误,被滚滚的江水冲到下游,而未能准确到达终点。

假设在竞渡区域两岸为平行直线, 两岸的垂直距离为 1160 米, 从武昌汉阳门的正对岸到汉阳南岸咀的距离为 1000米,见图1。

下面借助数学模型解决如下问题: (1)假定在竞渡过程中游泳者的速度大小和方向不变,且竞渡区域每点的流速均为 1.89 米/秒。

如果2002年第一名是按最优路径游泳的,试说明她是沿着怎样的路线前进的,求她游泳速度的大小和方向。

(2)在(1)的假设前提下,试为一个速度能保持在1.5米/秒的人选择最佳的游泳方向,并估计他的成绩。

(3)在(1)的假设下,如果游泳者始终以和岸边垂直的方向游, 他(她)们能否到达终点?并说明为什么 1934年和2002 年能游到终点的人数的百分比有如此大的差别;给出能够成功到达终点的选手的条件。

(4)流速沿离岸边距离的分布为 (设从武昌汉阳门垂直向上为 y 轴正向):⎪⎩⎪⎨⎧=≤≤<<≤≤米米秒,米米米秒,米米米秒,米1160960/47.1960200/11.22000/47.1)(y y y y v (1) 游泳者的速度大小(1.5米/秒)仍全程保持不变,试为他选择游泳方向和路线,估计他的成绩。

渡河问题的Hamming算法的Matlab求解

渡河问题的Hamming算法的Matlab求解

渡河问题的Hamming算法的Matlab求解
谢朋;梁西腾;王娜
【期刊名称】《鲁东大学学报(自然科学版)》
【年(卷),期】2007(023)004
【摘要】借助于Matlab软件对渡河问题进行了研究,通过对渡河问题的解析解和数值解进行图像和理论分析,说明了Hamming算法对求解此类数学建模问题的有效性和实用性.
【总页数】5页(P301-305)
【作者】谢朋;梁西腾;王娜
【作者单位】鲁东大学数学与信息学院,山东,烟台,264025;鲁东大学数学与信息学院,山东,烟台,264025;烟台第一职业中专,山东,烟台,264001
【正文语种】中文
【中图分类】O175.1
【相关文献】
1.基于MATLAB的工程项目管理多目标优化问题的解析求解及算法研究 [J], 薛亚宏;王加毅
2.渡河问题阿当姆斯法的Matlab求解 [J], 陈磊
3.求解Hamming距离下单位型单发点树型网络最短路改进问题的算法 [J], 张斌武;王勤
4.求解Hamming距离下的最短路改进问题的一个近似算法 [J], 张斌武;王勤;余
维燕
5.求解信赖域子问题的Milne-Hamming预报校正算法 [J], 范晓宇;王希云
因版权原因,仅展示原文概要,查看原文内容请购买。

商人们怎样安全过河-(附MATLAB程序完整)

商人们怎样安全过河-(附MATLAB程序完整)

商人们怎样安全过河随从们密约, 在河的任一岸, 一旦随从的人数比商人多, 就杀人越货.但是乘船渡河的方案由商人决定.商人们怎样才能安全过河?问题分析:决策~ 每一步(此岸到彼岸或彼岸到此岸)船上的人员要求~在安全的前提下(两岸的随从数不比商人多),经有限步使全体人员过河. 建立模型xk~第k次渡河前此岸的商人数 xk, yk=0,1,2,3;yk~第k次渡河前此岸的随从数 k=1,2,|....sk=(xk , yk)~过程的状态 S ~ 允许状态集合S={(x , y) x=0, y=0,1,2,3; x=3, y=0,1,2,3; x=y=1,2}uk~第k次渡船上的商人数 uk, vk=0,1,2;vk~第k次渡船上的随从数 k=1,2,.....dk=(uk , vk)~决策 D={(u , v) u+v=1, 2} ~允许决策集合~状态转移律多步决策问题求dk D(k=1,2, n), 使sk S, 并按转移律由s1=(3,3)到达 sn+1=(0,0).模型求解穷举法~ 编程上机S={(x , y) x=0, y=0,1,2,3;x=3, y=0,1,2,3;x=y=1,2}图解法状态s=(x,y) ~ 16个格点允许状态~ 10个点允许决策 ~ 移动1或2格; k奇,左下移; k偶,右上移.d1,.......,d11给出安全渡河方案评注和思考规格化方法,易于推广考虑4名商人各带一随从的情况程序%%%%%%%%%%%%%%%% 开始 %%%%%%%%%%%%%%%%%%%%%%function jueche=guoheclear allclc%%%%%%%%%%程序开始需要知道商人和仆人数;%%%%%%%%%%%%%shangren=input('输入商人数目: ');puren=input('输入仆人数目: ');rongliang=input('输入船的最大容量: ');if puren>shangrenshangren=input('输入商人数目:');puren=input('输入仆人数目:');rongliang=input('输入船的最大容量:');end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 决策生成jc=1; %决策向量放在矩阵d中,jc为插入新元素的行标初始为1;for i=0:rongliangfor j=0:rongliangif (i+j<=rongliang)&(i+j>0) % 满足条D={(u,v)|1<=u+v<=rongliang,u,v=0,1,2}d(jc,1:3)=[i,j ,1]; %生成一个决策向量立刻扩充为三维;d(jc+1,1:3)=[-i,-j,-1]; % 同时生成他的负向量;jc=jc+2; % 由于生成两个决策向量,则jc要向下移动两个;endendj=0;end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 状态数组生成kx=1; % 状态向量放在A矩阵中,生成方法同矩阵生成;for i=shangren:-1:0for j=puren:-1:0if ((i>=j)&((shangren-i)>=(puren-j)))|((i==0)|(i==shangren))% (i>=j)&((shangren-i)>=(puren-j)))|((i==0)|(i==shangren))为可以存在的状态的约束条件 A(kx,1:3)=[i,j,1]; %生成状态数组集合D `A(kx+1,1:3)=[i,j,0];kx=kx+2;endj=puren;end;%%%%%%%%%%%%%%% 将状态向量生成抽象矩阵%%%%%%%%%%%%%%%%%%%k=(1/2)*size(A,1);CX=zeros(2*k,2*k);a=size(d,1);for i=1:2*kfor j=1:ac=A(i,:)+d(j,:) ;x=find((A(:,1)==c(1))&(A(:,2)==c(2))&(A(:,3)==c(3))) ; v(i,x)=1; %x为空不会改变v值endend%%%%%%%%%%%%%%%%%%%%%%dijstra算法%%%%%%%%%%%%%%%%%%%%%%%%%%x=1; y=size(A,1);m=size(v,1);T=zeros(m,1);T=T.^-1;lmd=T;P=T;S=zeros(m,1);S(x)=1;P(x)=0; lmd(x)=0;k=x;while(1)a=find(S==0);aa=find(S==1);if size(aa,1)==mbreak;endfor j=1:size(a,1)pp=a(j,1);if v(k,pp)~=0if T(pp)>(P(k)+v(k,pp))T(pp)=(P(k)+v(k,pp));lmd(pp)=k;endendendmi=min(T(a));if mi==infbreak;d=find(T==mi);d=d(1);P(d)=mi;T(d)=inf;k=d;S(d)=1;endendif lmd(y)==infjueche='can not reach(不能过河)';return;endjueche(1)=y;g=2; h=y;while(1)if h==xbreak;endjueche(g)=lmd(h);g=g+1;h=lmd(h);endjueche=A(jueche,:);jueche(:,3)=[]; %%%%%%%%%%%%%%%%%% 程序完 %%%%%%%%%%%%%%%%%%欢迎您的下载,资料仅供参考!致力为企业和个人提供合同协议,策划案计划书,学习资料等等打造全网一站式需求。

人猫鸡米过河问题[3]

人猫鸡米过河问题[3]

安全过河问题摘要:人带着猫、鸡、米过河,船除需要人划之外,至多能载猫、鸡、米三者之一,而当人不在场时猫要吃鸡、鸡要吃米。

做出怎样的决策才能安全渡河且渡河次数最少。

问题的重述:人带着猫、鸡、米过河,船除需要人划之外,至多能载猫、鸡、米三者之一,而当人不在场时猫要吃鸡、鸡要吃米。

试设计一个安全过河方案,并使渡河次数尽量地少。

模型假设:不考虑外界其他影响,只考虑问题所述的条件。

符号说明:i=1,2,3,4分别代表人,猫,鸡,米。

1=i x 在此岸,0=i x 在对岸,()4321,,,x x x x s =此岸状态,()4321'1,1,1,1x x x x s ----=对岸状态,()4321,,,u u u u d =乘船方案,1=i u 代表 i 在船上时,0=i u 代表i 不在船上问题分析:安全过河问题可以视为是一个多步决策过程。

每作出一步决策,都必须保证船、人、猫、鸡、米能满足题设条件。

否则,不仅难以实现过河的最优化,而且还容易出现事物的不安全性。

因此,在保证安全的前提下,即猫、鸡在一起时,人要在场,鸡、米在一起时,人也要在场,用状态变量s 表示某一岸的状况,决策变量d 表示是乘车方案,我们容易得到s 和d 的关系,其中问题的转化要在允许变化范围内,确定每一步的决策关系,从而达到渡河的最优目标。

模型建立与求解: 一. 模型的建立:人、猫、鸡、米分别记为4,3,2,1=i ,当i 在此岸时记1=i x ,否则记0=i x ,则此岸的状态可用()4321,,,x x x x s =表示。

记s 的反状态为()4321'1,1,1,1x x x x s ----=,允许状态集合为 ()()()()(){}0,1,0,1,1,1,0,1,1,0,1,1,0,1,1,1,1,1,1,1=S (1) 以及他们的5个反状态决策为乘船方案,记作()4321,,,u u u u d =,当i 在船上时记1=i u ,否则记0=i u ,允许决策集合为()()()(){}0,0,0,1,1,0,0,1,0,1,0,1,0,0,1,1=D (2)因为k 为奇数时船从此案驶向彼岸,k 为偶数时船由彼岸驶向此岸,所以状态ks随决策k d 变化的规律为()kd kk s k s11-+=+, (3) 设计安全过河方案归结为求决策,,,,21D d d d n ∈ ,使状态S s k ∈按转移律由初始状态()1,1,1,11=s 经有限步n 到达状态()0,0,0,01=+n s 。

2012-03-21-数学建模b实验题目人猫鸡米

2012-03-21-数学建模b实验题目人猫鸡米

人、猫、鸡、米安全过河问题摘要研究目的:本文主要对数学建模基础模型跟“商人过河”类似简单问题:人带着猫、鸡、米过河,船除需要人划之外,至多能载猫、鸡、米三者之一,而当人不在场时猫要吃鸡、鸡要吃米。

试设计一个过河方案,建立数学模型,并使渡河次数尽量地少?模仿“商人过河”的模型设计出新的数学模型。

方法:用穷举法算出,用图形表述出过程及结果。

一、问题的提出模仿”商人过河”模型,做下面游戏:人带着猫、鸡、米过河,船除需要人划之外,至多能载猫、鸡、米三者之一,而当人不在场时猫要吃鸡、鸡要吃米。

设计一个过河方案,建立数学模型,并使渡河次数尽量地少。

二、问题的分析因为这是个简单问题,研究对象少所以可以用穷举法,简单运算和图论即可解题。

从状态(1,1,1,1)经过奇数次运算变为状态(0,0,0,0)的状态转移过程为什么是奇数次?我们注意到过河有两种,奇数次的为从南岸到北岸,而偶数次的为北岸回到南岸,因此得到下述转移方程,所以最后应该是事件结束时状态转移数为奇数次。

三、基本假设:3,1假设船,划船的人外至多能载猫、鸡、米三者之一。

3,2当人不在场时,猫一定会吃鸡、鸡一定会吃米。

四、定义符号说明:我们将人,狗,鸡,米依次用四维向量中的分量表示,当一物在此岸时,相应分量记为1,在彼岸时记为0.如向量(1,0,1,0)表示人和鸡在此案,狗和米在彼岸,并将这些向量称为状态向量。

五、模型的建立:我们将人,狗,鸡,米依次用四维向量中的分量表示,!即(人,狗,鸡,米)。

5.1 状态向量:各分量取1表示南岸的状态,例如(1,1,1,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,0,0,0),(0,0,0,1),(0,0,1,0),(0,1,0,0),(0,1,0,1).5.2 运算向量:将船的一次运载也可用向量表示,即运算向量。

人狼羊菜渡河问题(含Matlab程序)

人狼羊菜渡河问题(含Matlab程序)

人、狼、羊、菜安全渡河问题安全渡河问题又称作“人狼羊菜”问题,其具体描述为:一个人带着一条狼、一只羊、一筐白菜过河但由于船太小,人一次只能带一样东西乘船过河。

狼和羊、羊和白菜不能单独留在同岸,否则羊或白菜会被吃掉。

该问题可使用图论中的最短路算法进行求解。

问题分析根据题意,人不在场时,狼要吃羊,羊要吃菜,因此,人不在场时,不能将狼与羊、羊与菜留在河的任一岸。

可用四维向量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={v1,…, v10}中的顶点(按照上面的顺序编号)分别表示上述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通过上面的定义,如果某一个可行状态加上转移向量得到的新向量还属于可行状态,则这两个可行状态对应的顶点之间就存在一条边。

人猫鸡米过河模型

人猫鸡米过河模型

人猫鸡米过河模型人、鸡、米、猫过河模型摘要研究目的:本文主要对数学建模基础模型跟“商人过河”类似简单问题:人带着猫、鸡、米过河,船除需要人划之外,至多能载猫、鸡、米三者之一,而当人不在场时猫要吃鸡、鸡要吃米。

试设计一个过河方案,建立数学模型,并使渡河次数尽量地少?模仿“商人过河”的模型设计出新的数学模型。

关键词:过河模型、模仿、商人过河一.问题的提出模仿“商人过河”模型,做下面游戏:人带着猫、鸡、米过河,船除需要人划之外,至多能载猫、鸡、米三者之一,而当人不在场时猫要吃鸡、鸡要吃米。

设计一个过河方案,建立数学模型,并使渡河次数尽量地少。

二.模型的假设与符号说明假设:1、假设船,划船的人外至多能载猫、鸡、米三者之一。

2、当人不在场时,猫一定会吃鸡,鸡一定会吃米。

3、不考虑外界其他影响。

符号说明三、问题分析考虑到猫不能和鸡在一起,鸡不能和米在一起这个因素人每次只能带一样过去,且还得开船。

四、模型建立与求解Ⅰ. 模型的建立:人、猫、鸡、米分别记为4,3,2,1=i ,当i 在此岸时记1=i x ,否则记0=i x ,则此岸的状态可用()4321,,,x x x x s =表示。

记s 的反状态为()4321'1,1,1,1x x x x s ----=,允许状态集合为:()()()()(){}0,1,0,1,1,1,0,1,1,,1,1,0,1,1,1,1,1,1,1=S (1) 以及他们的5个反状态。

决策为乘船方案,记作()4321,,,u u u u d =,当i 在船上时记1=i u ,否则记0=i u ,允许决策集合为人鸡米猫()()()(){}0,0,0,1,1,0,0,1,0,1,0,1,0,0,1,1=D (2)记第k 次渡河前此岸的状态为k s ,第k 次渡河的决策为k d ,则状态转移律为()kd k k s k s 11-+=+, (3) 设计安全过河方案归结为求决策序列,,,,21D d d d n ∈ ,使状态S s k ∈按状态转移律由初始状态()1,1,1,11=s 经n 步达到()0,0,0,01=+n s 。

人鬼渡河MatlabGUI界面设计-副本资料解读

人鬼渡河MatlabGUI界面设计-副本资料解读

课程设计(论文)题目人鬼渡河问题姓名学号指导老师指导教师职称教授年级专业班级所在学院理学院2014年 5月25 日目录目录 (I)摘要 (II)前言 (III)1课题背景 (1)1.1背景 (1)1.2需求分析 (1)1.3意义 (1)1.4 文献综述 (2)2设计方案的解题思路 (3)2.1人鬼渡河的任务与规则要点 (3)2.2人鬼渡河的安全性考虑 (3)2.3 安全状态的描述 (4)2.4 安全条件形式化 (6)3 详细设计 (12)3.1渡河策略的定义 (12)3.2初始状态的定义 (12)3.3 人鬼渡河的操作 (13)3.4 可视化的设计 (14)4设计结果及分析 (18)4.1测试结果 (18)4.2 问题解决 (22)5总结 (22)致谢 (25)参考文献 (26)附录程序代码 (27)摘要本课题主要是运用Matlab7.0的强大功能来解决多决策人鬼渡河问题。

本文较详细地介绍了这一程序的设计思想,功能结构以及可视化界面的设计。

本文还给出了对这一程序的测试情况以及对测试结果的分析。

关键词:person,ghost,Matlab前言本文详细介绍了多决策人鬼渡河问题的设计与开发。

全文共5章。

第1章介绍了多决策人鬼渡河问题的背景,以及它所要实现的基本功能。

并根据这些用户需求,进行了必要的需求分析,从而确定了该程序应实现了一些基本功能。

本章中,还简要地介绍了该程序开发的意义以及在整个开发过程中,我们所查阅并借用的一些参考文献的主要内容。

第2章主要介绍了多决策人鬼渡河问题程序中各功能模块的总体框图,这是全文的核心部分。

第3章是多决策人鬼渡河问题程序的详细设计,我们给出了主要的编程思路。

第4章是对所开发的人鬼渡河问题程序的运行测试。

通过我们所设计的最佳方案选择程序,检验程序是否达到了预定的设计要求。

第5章是对关于运用多决策解题思路解决人鬼渡河问题程序开发过程的总结。

总结了本次课程设计的意义,以及测试中所发现的一些问题,有待进一步改进的地方。

商人过河matlab程序以及解析

商人过河matlab程序以及解析

班级:数学131姓名:丁延辉学号:(二)商人过河Matlab代码三个商人三个随从z=zeros(30,3); %z为由(a,b,c)的列向量组成的3行30列数组,初始化为0矩阵,a,b,c代表此刻此岸的商人,仆人数量以及船的运行状态,c=1表示即将向彼岸运行m=zeros(1,20); %m为一维行向量,初始化为1矩阵,用于在后面的程序中判断第k次选择的乘船方案d=[0,1,1;0,2,1;1,0,1;1,1,1;2,0,1]; %共有5种可以选择的乘船方案,最后面一列全为1,即用于在后面表示使得z(k,3)的取值保持随着k的奇偶性保持着0-1变换.z(1,:)=[3,3,1]; %初始状态为[3,3,1]k=1;m(k)=1; %第一次默认的乘船方案为决策1——d(1)flag=1; %用于在后面判断是否成功找到方案answer=0; %用于在后面判断是否找到答案while k>0 %保持k>0if m(k)>5flag=0;break;endp=0;z(k+1,:)=z(k,:)+(-1)^k*d(m(k),:); %每一次的运算规则都是z(k+1)=z(k)-(-1)^k*d(m(k),:),d(m(k),:)表示决策方案a=z(k+1,1); %将当前情况的矩阵数值复制给a商人,b仆人b=z(k+1,2);c=z(k+1,3);if(a==3&&(b==0||b==1||b==2||b==3))||(a==1&&b==1)||(a==2&&b==2 )||(a==0&&(b==0||b==1||b==2||b==3)) %判断(a,b)是否符合限定情况for j=1:k %判断是否此岸a,b,c与之前有重复,如果是,结束此次循环,重新选择乘船方案if a==z(j,1)&&b==z(j,2)&&c==z(j,3)if m(k)~=5 %决策方案只有5种,所以m(k)<=5,m(k)=m(k)+1; %因为有重复,所以换下一种决策方案elsewhile (m(k)==5)&&(k>1)k=k-1; %回溯,这一步骤已经把所有决策取尽,无可用解法,于是将后退一步,同时换下一种决策方案end %while循环的目的是防止前面几步的决策都是5,导致k=k-1,m(k)=m(k)+1后数组越界,一直找到前面不是m(k)=5的步骤m(k)=m(k)+1;endp=1;break;elsep=0;endendif p==1 %程序在跳出内层for循环之后,因为要换成决策方案,所以同时跳出,直接进入下一次while循环,continue;endif a==0&&b==0 %判断是否达到目标情况answer=1;fprintf('Successfully found!\n每一次的此岸人员分布:商人仆人\n')for i=1:100fprintf(' 第%2d次 %d %d\n',i,z(i,1),z(i,2))if z(i,1)==0&&z(i,2)==0break;endend %如果不是,进入下一步骤,计算z(k+2) if m(k)~=5m(k)=m(k)+1; %这是正常的进入下一次,所以仍从d1乘船决策1开始elsewhile (m(k)==5)&&(k>1)k=k-1;end;m(k)=m(k)+1;endcontinue;elsek=k+1; %如果不是,进入下一步骤,计算z(k+2) m(k)=1; %这是正常的进入下一次,所以仍从d1乘船决策1开始continue;endelseif m(k)~=5m(k)=m(k)+1; %如果没有符合限定情况,结束该次循环,改变上一次的乘船方案elsewhile (m(k)==5)&&(k>1)k=k-1;endm(k)=m(k)+1; %回溯,这一步骤已经把所有决策取尽,无可用解法,于是将后退一步,同时换下一种决策方案continue;endendendif answer==0&&flag==0fprintf(' No Answer!\n')end。

商人过河的MATLAB程序

商人过河的MATLAB程序

商人过河的MATLAB程序n=4;m=4;h=2; %初始状态及数据m0=0;n0=0;ticLS=0; % 允许的状态集合S与个数LSLD=0; %允许的决策集合D与个数LDfor i=0:nfor j=0:mif i>=j&n-i>=m-j|i==n|i==0LS=LS+1;S(LS,:)=[i j];endif i+j>0&i+j<=h&(i>=j|i==0)LD=LD+1;D(LD,:)=[i j];endendend%用搜寻法找出符合条件的渡河方案N=18;Q1=inf*ones(2*N,2*N);Q2=inf*ones(2*N,2*N);t=1;le=1;q=[m n];f0=0; %判断循环终止标记while f0~=1&t<="" p="">k=1;sa=[];sb=[];for i0=1:le %第n次允许的策略集逐次搜索s0=q(i0,:);breakendfor i=1:LD %由s0搜索D后得到允许的状态s1=s0+(-1)^t*D(i,:); if s1==[m0,n0]sa=[m0,n0];sb=D(i,:);f0=1;breakendfor j=2:LS-1 %搜索对比S后允许状态if s1==S(j,:)if k==1sa(k,:)=s1;sb(k,:)=D(i,:);k=k+1;breakendif k>1 %对重复状态删除处理f1=0;for ii=1:k-1if s1==sa(ii,:)f1=1;breakendendend %……if f1==0sa(k,:)=s1;sb(k,:)=D(i,:);breakendendend %…………………end %………………………………end %……………………………………………q=sa; le=size(q,1);Q1(1:le,t*2-1:t*2)=q;Q2(1:le,t*2-1:t*2)=sb;t=t+1;endif length(q)==6tr=t-1;saa1=sa;SA=zeros(tr,2);SB=zeros(tr,2);for k=tr:-1:2k1=k-1;f0=0;sbb=Q2(:,k*2-1:k*2);saa=Q1(:,k1*2-1:k1*2);for i=1:2*Nsaa2=saa1-(-1)^k*sbb(i,:);for j=1:2*Nif saa2==saa(j,:)saa1=saa2;sbb1=sbb(i,:);f0=1;breakendendif f0==1endendSA(k1,:)=saa1;SB(k,:)=sbb1;endSA(tr,:)=[m0 n0];SB(1,:)=[m,n]-SA(1,:); %………………………………………………………………………………………………¥¥disp '初始状态:'X0=[m,n]disp '状态为:'SAdisp '决策为:'SBtocendif length(q)~=6disp '没有可行的方法过河'enddisp '可以走的状态为:';q。

渡河问题阿当姆斯法的Matlab求解

渡河问题阿当姆斯法的Matlab求解
Aut r’ addr s Xi we M i i I usr Emply e ’ ho S es n n nng nd ty o e s
【 — 2 oO = s c
又 因为船头始终指 向 曰点 , 以 tn=x , 所 aO 从而

、 + / 即

l 舞 (
f x V— 2 iO = 1 n s
关 键 词 显 式 公 式 隐 式公 式 四 阶预 报一 校 正 公 式
F rs h Qus o a e g e t W0 k A iF od te et n Arb L a u o i r s S a
M alb S lt n / h n L i ta o u o i /C e e Ab t a t T i r ce fr e e q e t n t i e t ep o e u e sr c h sat l d d t u si g v h r c d r i o h o o wh c n er s l t ef u h od r o e a t u d t g fr l ih a d t e u t h o r - r e r c s- p ai mu a h t f n o s le .’i meh d i t ee p i i f r l n h mp i i f r o v d 1 l to h x l t o mu a a d t ei l t o - }s s c c mu a u in u emu t s p , n e d h u t — r e r g n l n o s l — t s a d n e st e f r o d rd a o i e o h s n a d Kut t o o gv e e a k n au . t d r — t me h d t ie t mb r i g v l e a a h Ke wo d x l i f r u a mp i i f r u a o rh— r e y r s e pi t o c m l;i l t o c m l;f u t od r f r c s- p a i gf r u a o e a t u d t o n m l

数学模型程序代码-Matlab-姜启源-第一章-建立数学模型

数学模型程序代码-Matlab-姜启源-第一章-建立数学模型

数学模型程序代码-M a t l a b-姜启源-第一章-建立数学模型-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN第1章 建立数学模型1.(求解,编程)如何施救药物中毒p10~11人体胃肠道和血液系统中的药量随时间变化的规律(模型):d ,(0)1100d (,0)d ,(0)0d xx x ty x y y tλλμλμ⎧=-=⎪⎪>⎨⎪=-=⎪⎩ 其中,x (t )为t 时刻胃肠道中的药量,y (t )为t 时刻血液系统中的药量,t =0为服药时刻。

1.1(求解)模型求解p10~11要求:① 用MATLAB 求解微分方程函数dsolve 求解该微分方程(符号运算)。

② 用MATLAB 的化简函数simplify 化简所得结果。

③ 结果与教材P11上的内容比较。

提示:dsolve 和simplify 的用法可用help 查询。

建议在命令窗口中操作。

1.2(编程)结果分析p11已知λ=0.1386, μ=0.1155,将上题中得到x (t )和y (t )两条曲线画在同一个图形窗口内。

参考图形如下。

MATLAB命令plot, fplot, hold on/off, grid on/off, xlabel, ylabel, text 。

★ 编写的程序和运行结果:2.(编程,验证)商人们怎样安全过河p8~9三名商人各带一个随从乘船渡河,一只小船只能容纳二人,由他们自己划行。

随从们密约,在河的任一岸,一旦随从的人数比商人多,就杀人越货。

但是如何乘船的大权掌握在商人们手中。

商人们怎样才能安全渡河呢?[模型构成]决策:每一步(此岸到彼岸或彼岸到此岸)船上的人员。

要求:在安全的前提下(两岸的随从数不比商人多),经有限步使全体人员过河。

x k第k次渡河前此岸的商人数y k第k次渡河前此岸的随从数x k , y k=0,1,2,3; k=1,2,⋯过程的状态s k=(x k , y k)允许状态集合S={(x, y)|x=0, y=0,1,2,3; x=3, y=0,1,2,3; x=y=1,2}u k第k次渡船上的商人数v k第k次渡船上的随从数u k , v k=0,1,2; k=1,2,⋯决策d k=(u k , v k)允许决策集合D={(u , v)|u+v =1, 2}状态转移律s k+1=s k+(-1)k d k[多步决策问题]求d k∈D(k=1, 2, ⋯, n), 使s k∈S, 并按转移律由s1=(3,3) 到达s n+1=(0,0)。

人猫鸡米渡河问题地数学模型

人猫鸡米渡河问题地数学模型

人猫鸡米渡河问题的数学模型摘要:人带着猫、鸡、米过河,从左岸到右岸,船除了需要人划之外(船除了要载人外),只能载猫、鸡、米三者之一,而当人不在场时猫要吃鸡、鸡要吃米。

本文将设计一个安全过河方案,使渡河次数尽量地少。

模仿“商人过河”的模型设计出新的数学模型。

关键字:穷举法,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 则是不可取运载,依此规律类推。

商人过河问题matlab程序

商人过河问题matlab程序
break;
end
jueche(g)=lmd(h);
g=g+1;
h=lmd(h);
end
jueche=A(jueche,:);
jueche(:,3)=[];
d(jc,1:3)=[i,j,1];%生成一个决策向量立刻扩充为三维;
d(jc+1,1:3)=[-i,-j,-1];%同时生成他的负向量;
jc=jc+2;%由于生成两个决策向量,则jc要向下移动两个;end
end
j=0;
end%状态数组生成
kx=1;%状态向量放在A矩阵中,生成方法同矩阵生成;
fori=n:-1:0
kx=kx+2;
end
end
j=nn;
end;%将状态向量生成抽象矩阵
k=(1/2)*size(A,1);
CX=zeros(2*k,2*k);
a=size(d,1);
fori=1:2*k
forj=1:a
c=A(i,:)+d(j,:);
x=find((A(:,1)==c(1))&(A(:,2)==c(2))&(A(:,3)==c(3)));
ifnn>n
n=input(''输入商人数目:');
nn=input('输入仆人数目:');
nnn=input('输入船的最大容量:');
end
%决策生成
jc=1;%决策向量放在矩阵d中,jc为插入新元素的行标初始为1;
fori=0:nnn
forj=0:nnn
if(i+j<=nnn)&(i+j>0)%满足条D={(u,v)|1<=u+v<=现方式做保护处理对用户上传分享的文档内容本身不做任何修改或编辑并不能对任何下载内容负责

matlab求解夫妻过河问题毕业论文

matlab求解夫妻过河问题毕业论文

本科生毕业论文论文题目: matlab求解夫妻过河问题摘要渡河问题.[]1始于公元8 世纪,至今它仍是一个逻辑难题,许多数学建模教材上已经提到.这个问题指的是:有不同的对象或生物,他们其中一些相互不共存,逐步地让一小群体从河的一岸到另一岸,经过有限步后,该群体全部从一岸达到另一岸,并且要求没有任何损失.在渡河问题的夫妻过河问题中我们发现状态转移问题有时不一定有解,有时的解又不一定有规律,本文对于夫妻过河问题利用图解法和matlab编写程序求解5对、6对夫妻过河是否有解,并推广到n对夫妻与船的运载能力m对于能否安全渡河时它们之间的关系。

关键词:多步决策 matlab 数学模型渡河问题Problem of couples across the riverAbstract: the problem of crossing the river. In the 8th century, it stillis a logical problem, many mathematical modeling teaching material has been mentioned. The question is: have different objects or creatures, they lack some mutual coexistence, gradually to a small group from one bank to another bank of the river, after finite steps, the group all from one side to the other shore, and requires no losses. In crossing the river problem of couples across the river, we found that state transition problem sometimes does not necessarily have a solution, sometimes the solution is not necessarily regular, in this paper, using the graphical method for the problem of couples across the river and the matlab program to solve the 5, 6 for couple across a river if there is a solution,And derived to n couple with the ability to run m to safe crossing the river when the relationship between them.Keywords:Multistep decision Matlab Mathematical model Problem of crossing the river目录1 引言12 文献综述12.1 国外研究现状12.2 国外研究现状评价22.3问题提出23 模型假设24符号说明25重述3、4对夫妻过河问题的解35.1 3对夫妻过河的解35.2 4对夫妻过河的解46 五对夫妻过河模型46.1 模型构成46.2 模型建立46.3 模型求解56.31 Matlab编程求解56.32 图解法错误!未定义书签。

人狼羊菜渡河问题(含Matlab程序)

人狼羊菜渡河问题(含Matlab程序)

人、狼、羊、菜安全渡河问题安全渡河问题又称作“人狼羊菜”问题,其具体描述为:一个人带着一条狼、一只羊、一筐白菜过河但由于船太小,人一次只能带一样东西乘船过河。

狼和羊、羊和白菜不能单独留在同岸,否则羊或白菜会被吃掉。

该问题可使用图论中的最短路算法进行求解。

问题分析根据题意,人不在场时,狼要吃羊,羊要吃菜,因此,人不在场时,不能将狼与羊、羊与菜留在河的任一岸。

可用四维向量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={v1,…, v10}中的顶点(按照上面的顺序编号)分别表示上述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通过上面的定义,如果某一个可行状态加上转移向量得到的新向量还属于可行状态,则这两个可行状态对应的顶点之间就存在一条边。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

摘要:人带着猫、鸡、米过河,船除需要人划之外,至多能载猫、鸡、米三者之一,而当人不在场时猫要吃鸡、鸡要吃米,试通过数学建模,运用计算机给出一个安全渡河方案,并使渡河次数尽量少。

一、问题分析:
此问题是从状态向量A (1,1,1,1)经过奇数次运算向量B 变为状态向量A (0,0,0,0)的状态。

转移过程为什么是奇数次?我们注意到过河有两种,奇数次的为从左岸到右岸,而偶数的为右岸回到左岸,因此得到下述转移过程,所以最后应该是过河完成时状态转移数为奇数次。

二、模型假设:
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 则是不可取运载,依此规律类推。

三、模型建立:
由上可知,可取状态向量A共有10个,即:
()
0,0,0,0
1,1,1,1()
()
0,0,0,1
1,1,1,0()
()
0,0,1,0
1,1,0,1()
()
0,1,0,0
1,0,1,1()
()
1,0,1,0()
0,1,0,1
可取运载B有4个:
(1,1,0,0)、(1,0,1,0)、(1,0,0,1)、(1,0,0,0)。

四、算法设计:
1、规定A和B的每一分量相加时按二进制法则进行,这样一次渡河就是一个可取状态和一个可取运载相加,在判断和向量是否属于可取状态即可。

2、可以将可取状态及可取运载分别编成矩阵。

共分为五个m文件,一个主文件xduhe.m数,四个子文件分别为:
2.1、duhe(L,B,M,s)函数:
用来实现渡河总思路。

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

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

2.2、fuhe(C,M)函数:
判断和矩阵C是否属于矩阵M,如果是,则返回1,否则返回0.
2.3、Panduan(S)函数:
判断S矩阵中是否有两个相同的状态,即行向量。

如果有,则返回0,否则返回1.
2.4、print(K,C,s)函数:
打印相应的状态。

五、程序:
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);
2、duhe.m文件:
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
3、fuhe.m文件:
function y=fuhe(C,M)
y=0;
for i=1:8
if(C==M(i,:))
y=1;
break;
end
end
4、Panduan.m文件:
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
5、print.m文件:
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
六、计算结果:
在matlab中运行,结果如下:
七、结果分析:
从运行结果可以看出,共有两种运送方案:
人先带鸡过河,然后人再回来,把米带过河,然后把鸡运回河岸,人再把猫带过河,最后人回来把鸡带过去。

人先带鸡过河,然后人再回来,把猫带过河,然后把鸡运回河岸,人再把米带过河,最后人回来把鸡带过去。

八、结论:
1、人带鸡过河,然后人回来,把米带过河,把鸡运回河岸,人再把猫
带过河,最后人回来把鸡带过去。

2、人带鸡过河,然后人回来,把猫带过河,把鸡运回河岸,人再把米
带过河,最后人回来把鸡带过去。

相关文档
最新文档