论文题目:过河问题
- 格式:doc
- 大小:96.20 KB
- 文档页数:6
数学建模题目:商仆过河问题组员:班级:指导老师:目录1.摘要 (3)2.问题的提出 (3)3.问题的分析 (4)4.模型的假设 (5)5.模型的建立与解 (5)6.模型的符号 (6)7.模型的解 (6)8.模型的图解 (8)9.关于C语言的程序算法 (10)10.模型的优缺点 (14)11.参考文献 (15)摘要:本文针对商人安全渡河问题,采用多步决策的过程建立数学模型,求解得到了在随从没杀人越货的情况下的渡河方案。
对于本题而言,在3(15)对商仆、船最大容量为2(8)人的情况下,首先定义了渡河前此岸的状态,并设安全渡河条件下的状态集合定义为允许状态集合,接着得到渡河方案的允许决策集合,然后得到状态随从渡河方案变化的规律。
利用c软件编译运行程序得到了一种商人安全渡河的方案,并输出了允许的状态向量和允许的决策向量。
关键词:船载量、允许状态向量、允许决策向量一.问题的提出仆人们密约,在河的任何一边,只要仆人的数量超过商人的数量,仆人就会联合起来将商人杀死并抢夺其财物,三名商人各带一个随从乘船渡河,一只小船只能容纳两人,由他们自己划行。
在河的任意一岸,一旦随从的人数比商人多,商人就有危险.但是如何乘船渡河的大权掌握在商人们手中。
商人们怎样才能安全渡河呢?同时,推广到十五名商人带十五名随从又如何?二.问题的分析1.安全渡河问题可以看成一个多步决策过程,船由此岸驶向彼岸或从彼岸驶回此岸,都要对船上的人员(商人随从各几人)作出决策。
2.状态向量:用二维坐标向量表示(商,仆):0<=H<=3(11),0<=S<=3(11),例如:(3,3,)(5,0)(6,4)等均成立3.允许向量:由题意可知,仆人数少于商人数被选定为允许向量。
4.运载向量:利用二维向量(m,n)表示船只上的商仆数量。
5.可行的运载向量:满足二维向量(m,n),0<=n<=m<=3(15)。
枚举所有可能的算法:(1,0)(2,0)(3,0)(4,0)(5,0)(6,0)(7,0)(8,0)(1,1)(2,2)(3,3)(4,4)(2,1)(3,2)(4,3)6.可取用状态向量:利用穷举法表示状态,利用递归算法进行模型的建立与运算7.运载向量:使用二维向量进行表示(商,仆):0<=商<=3(11),0<=仆<=3(11)8.该模型使用逻辑运算法则进行数学模型的建立三.模型的假设(1)每个商人和他的随从均会划船(2)只有一条船,且船只的承载数量为8人(3)船在划行的状况下不受任何的外力干扰(4)不存在任意几人不能同时坐船的情况四.模型的建立与解由题目可知,3(15)对商仆过河,船载量为2(8)人,现记第K次渡河前的商人数为Xk,仆人数为Yk,k=1,2,…,(2)8,再记一组二维向量Ak=(Xk,Yk),Ak为给定时的状态量,可记做C的表达式为:C={(x,y)|x=0,y=0,1,…,(3)15=y=0,1,…,(3)15=y=0,1,…,(3)15再记第K次渡河时船上的商人数为uk,仆人数为vk,记二维向量Bk=(uk,vk),可知小船此时的运载为D,D的表达式为;D ={(u,v)|1<=u+v<=2(8),u,v=0,1,…,2(8)}由上题目中的题意可知第K+1次时的情况为E :E=Ak+(-1)^k*Dk最终直到3(15)对商仆全部过河时完成问题五.模型的符号A 表示起始状态下商仆所在一岸B 表示末状态商仆所在一岸S 表示商仆的对数K 表示船最多的载人数C 渡河时的一侧岸边的商仆数D 小船运载的商仆数量E 第k次渡河是的商仆数量Ak 河岸一边的商人数Bk 河岸一边的仆人数Ck 河岸另一边的商人数Dk 河岸另一边的仆人数六.模型的解(1)利用程序框图来解决过河问题根据题意状态转移必须满足以下规则;(1). Z从1变0或0变1交替进行。
求解夫妻过河问题曲靖师范学院本科生毕业论文论文题目: 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 引言这是一个古老的阿拉伯数学问题。
数学建模课程作业论文题目:对商人过河问题的研究指导教师:黄光辉小组成员:黄志宇(20156260)车辆工程04班牛凯春(20151927)电气工程05班文逸楚(20150382)工商管理02班一、问题重述3名商人带3名随从乘一条小船过河,小船每次只能承载至多两人。
随从们密约,在河的任一岸,一旦随从的人数比商人多,就杀人越货。
乘船渡河的方案由商人决定,商人们如何才能安全渡河呢?二、问题分析本题针对商人们能否安全过河问题,需要选择一种合理的过河方案。
对该问题可视为一个多步决策模型,通过对每一次过河的方案的筛选优化,最终得到商人们全部安全过到河对岸的最优决策方案。
对于每一次的过河过程都看成一个随机决策状态量,商人们能够安全到达彼岸或此岸我们可以看成目标决策允许的状态量,通过对允许的状态量的层层筛选,从而得到过河的目标。
三、模型假设1.过河途中不会出现不可抗力的自然因素。
2.当随从人数大于商人数时,随从们不会改变杀人的计划。
3.船的质量很好,在多次满载的情况下也能正常运作。
4.随从会听从商人的调度,所有人都到达河对岸。
四、符号说明第k次渡河前此岸的商人数第k次渡河前此岸的随从数过程的状态向量允许状态集合第k次渡船上的商人数第k次渡船上的随从数决策向量允许决策集合x y 3322110s 1s n +1d 1d 11五、模型建立本题为多步决策模型,每一次过河都是状态量的转移过程。
用二维向量表示过程的状态,其中分别表示对应时刻此岸的商人,仆人数以及船的行进方向,其中则允许状态集合:=又将二维向量定义为决策,则允许的决策合集为:因为k 为奇数时船从此岸驶向彼岸,k 为偶数时船从彼岸驶向此岸,所以状态随决策的变化规律是该式称为状态转移律。
求决策,使,并按照转移律,由经过有限步n 到达状态六、模型求解本模型使用MATLAB 软件编程,通过穷举法获得决策方案如下(完整matlab 程序详见附录):初始状态:可用图片表示为:X0=33状态为:S =3132303111220203010200决策为:D =0201020120112001020102七、模型推广该商人和随从过河模型可以完美解决此类商人过河的决策问题,并且该模型还可推广至解决m个商人和n个随从过河,以及小船的最大载重人数改变时的问题,只需适当地改变相关的语句即可轻松实现模型的转换。
第19卷第2期2003年4月德州学院学报Journal of Dezhou University Vol.19,No.2Apr.2003收稿日期:2002-12-24;修回日期:2002-03-11作者简介:潘东静(1970—),女,山东齐河人,硕士,德州学院计算机系副教授,主要从事面向对象、管理信息系统和数据库研究工作. 文章编号:1004-9444(2003)02-0076-03过河问题的改进算法潘东静,赵丽敏(德州学院计算机系,山东德州 253023) 摘 要:过河问题是操作系统中进程同步和互斥的一个重要问题,传统的解决方法虽然解决了进程死锁问题,但当一面的过河者源源不断的到来时,另一面要求过河者会发生“饿死”现象,本文对原有算法进行改进,给出了一种新的算法,避免了“饿死”现象.关键词:进程;同步与互斥;死锁;信号量;P 、V 操作中图分类号:TP316 文献标识码:A1 引言在操作系统的进程管理中,进程之间的同步与互斥是一个非常重要的问题,由于进程是并发执行的,这些进程之间存在着不同的相互制约关系,如果管理不恰当,就会产生结果不确定或者进入死锁,比较有效的方法是使用信号量机制,信号量机制是荷兰学者Dijkstra 提出的一种卓有成效的进程同步工具,它主要是通过P 、V 两个操作原语的使用,来保证进程之间的同步与互斥.过河问题是进程同步与互斥的一个典型问题,原有的算法虽然避免了死锁现象,但却有可能使某些进程长期得不到服务,这种现象叫做“饿死”现象,笔者对此作了改进,避免了“饿死”现象.2 过河问题的描述 过河问题是指:假设有一条南北走向的河,河中有N 块石块搭起的便桥(N ≥2),如图所示,石块编号依次为1,2,…,N ,两个相邻石块间距恰好为一步,每个石块上只允许站一人,东面过河者要依次经过石块N ,N -1,…,2,1到达西岸,西面过河者要依次经过1,2,…,N -1,N 到达东岸,当东面过河者踏上第N 块石头,西面过河者踏上第1块石块时,将发生死锁.为防止死锁发生,限制东西两侧过河者不同时过河.图 过河问题3 传统的解决方法及存在的问题我们以西面过河者为例,当西面来了一个过河者,他首先判断东面是否正有人过河,若没有,他就过河,若有,他就等待;但是当西面过河者等待东面过河者走过时,东面又来了一些要求过河者,按照传统的算法,只要东面正有人过河,其它东面要求过河者就可以直接过河,如果东面源源不断的到来一些请求过河者,这样会使西面过河者不停地等待,使西面过河者的要求很长时间得不到服务,此种现象叫作进程的“饿死”现象.4 改进的算法为了防止“饿死”现象的产生,对原先的算法进行了改进,对每面的过河进程,增加一个变量,表示每面连续通过的过河人数,当连续过河的人数超过M并且对面有等待过河者,第M+1个要求过河者就被阻塞,不再过河,这M个连续过河者全部过完河后,就把对面等待过河者唤醒.这样,对面等待过河者最多等待这M人过完河后就可以过河,例如:用left-has-crossed表示西面连续通过的过河人数,当西面到来一个请求过河者,首先判断东面是否正有过河者,若东面有过河者,此进程要等待,若东面没有过河者,此进程还要判断西面已连续通过了多少人,若left-has-crossed大于等于M并且东面正有人等待过河,此进程就阻塞,在西岸等待,西面的过河者过完河后,把东面等待过河者唤醒,这样就不会使东面的过河者无限等待.此算法的描述如下VAR left-wait-count,right-wait-count:inte2 ger;(初值为0,表示西面和东面等待过河的人数) Left-crossing,right-crossing:integer;(初值为0,表示西面和东面正在过河的人数) Left-has-crossed,right-has-crossed:interger; (初值为0,表示西面和东面已连续过河的人数) Left-queue,right-queue:semaphore;(初值为0,西面和东面等待队列信号量) Mutex:semaphore;(初值为1,互斥信号量) I,J,g1,g2:integer;西面过河进程的活动为 P(mutex)IF right-crossing<>0or(left-has-crossed>=M and right-wait-count<>0)THEN B EGIN Left-wait-count:=left-wait-cout+1; V(mutex); P(left-queue); End;EL SE Begin Left-crossing:=left-crossing+1; Left-has-crossed:=left-has-crossed+1; If left-has-crossed=1then right-has-crossed:= 0; V(mutex); End;过河P(mutex);Left-crossing:=left-crossing-1;If left-crossing=0thenbegin IF(right-wait-count>M and left-wait-count< >0) Then g1:=M else g1:=right-wait-count For I:=1to g1do Begin Right-wait-count:=right-wait-count-1; Right-crossing:=right-crossing+1; Right-has-crossed:=right-has-crossed+1; I f right-has-crossed=1then left-has-crossed:=0 V(right-queue); End;End V(mutex);东面过河者的进程为P(mutex)IF left-crossing<>0or(right-has-crossed>=M and left-wait-count<>0)THEN B EGIN right-wait-count:=right-wait-cout+1; V(mutex); P(right-queue); End;EL SE Begin right-crossing:=right-crossing+1; right-has-crossed:=right-has-crossed+1; I f right-has-crossed=1then left-has-crossed:=0; V(mutex); End; 过河77第2期 潘东静等:过河问题的改进算法 P (mutex );right -crossing :=right -crossing -1;If right -crossing =0then begin IF (left -wait-c ount >M and right -wait -c ount <>0) Then g2:=M else g2:=left -wait -count For J :=1to g2 do Begin left -wait -count :=left -wait -count -1; left -crossing :=left -crossing +1; left -has -crossed :=left -has -crossed +1; If left -has -crossed =1then right -has -crossed :=0 V (left -queue ); End ; End ; V (mutex ).5 结束语本文针对过河问题出现的“饿死”现象给出了一种改进的算法,在许多进程同步与互斥问题中,如果考虑不严密,都会出现“饿死”现象,例如读者—写者问题,多个读者和多个写者共享一个文件,要求是多个读者可以同时读这个文件,但读者读时写者不能写,一个写者写时,其他写者也不能写.一般的算法只是考虑了读者与写者的互斥问题,解决方法是这样的:当第一个读者到来时,首先判断是否有写者在写,若有,则等待,若没有,就可以读,当正有读者读此共享文件时,其他读者就可以直接读此文件,而不考虑是否有写者请求写.这种方法存在的问题是:如果读者源源不断地到来,就会使写者不停地等待,造成写者的“饿死”现象.针对这种现象,我们可以采用上面算法的思想,当正有读者在读此共享文件时,后面来的读者不会不加限制地直接读,而要判断是否有写者在请求写,如果正有写者请求写,后面来的读者就被阻塞,这样当前的这些读者读完后,写者就可以写,从而避免了写者的“饿死”现象.还有许多这类的问题,可以采用一些类似上面算法的解决方法.参考文献:[1] 周长林,左万历.计算机操作系统教程[M ].北京:高等教育出版社.[2] 汤子瀛,等.计算机操作系统[M ].西安:西安电子科技大学出版社.[3] 周梦醒,等.对生产者-消费者模型一个拓展需求的问题分析与解决[J ].计算机应用,2002,(8).The improved algorithm of passing riverPAN Dong -jing ,ZHAO Li -min(Department of Computer Dezhou University ,Dezhou Shandong 253023,China )Abstract :The problem of passing river is an important problem about synchronization and mutex of process in operating system.The traditional method has solved the deadlock of process ,but when the men in one side requesting to pass river come one by one ,the men in another side requesting to pass river can be starved to death.This paper gives out an new algorithm to improve the old algorithm ,the improved algorithm avoids the phenomenon of “starvation ”.K ey w ords :process ;synchronization and mutex ;deadlock ;semaphore ;P 、V operating87 德州学院学报(自然科学版) 第19卷 。
过河问题解题技巧和方法
过河问题是指在一定条件下,将若干对象从一岸运送到另一岸的问题。
这种问题通常涉及到一些限制条件,如运输工具的数量、容量,运输对象的数量、体积等。
解决过河问题通常需要一些技巧和方法,以下是一些常用的方法: 1. 分析限制条件:首先要了解问题中的限制条件,如运输工具
的数量和容量,运输对象的数量和体积等。
根据这些限制条件,可以确定一些基本的运输策略。
2. 利用递归思想:过河问题通常可以使用递归的思想来解决。
将问题分解为多个子问题,然后解决每个子问题。
通过递归的方式,可以逐步缩小问题的规模,从而得到解决方案。
3. 利用图形法:将问题转化为一个图形,可以更直观地理解问题。
例如,可以绘制一个河岸、船只和对象的图形,然后根据限制条件,将对象依次放入船只进行运输。
4. 利用迭代法:在解决过河问题时,有时需要多次尝试不同的
运输策略,才能找到最优的解决方案。
这时可以使用迭代法,逐步优化运输策略,直到找到最优解。
5. 利用编程工具:计算机编程可以快速地解决过河问题。
一些
编程工具可以实现递归、图形和迭代等方法,帮助解决问题。
同时,编程工具还可以自动化运输策略,使得解决过河问题更加高效。
以上是解决过河问题的一些常用技巧和方法。
在实际问题中,可以根据具体情况选择不同的方法,找到最优的解决方案。
学校代码: 10128学 号: 200820905016(二 〇一二 年 5月选修课结业论文题 目:人狗鸡米过河问题 学生姓名:武彩 学 院:理学院 系 别:数学系专 业:信息与计算科学 班 级:信计08-1人狗鸡米过河问题0一.摘要0本文主要对数学建模的基础模型跟“商人过河”类似简单问题的人狗鸡米过河问题,在图论和数学游戏问题中,有不少渡河问题。
渡河问题是在一定的限制条件下,要求给出最好解,反映在图论中就是求最短路线问题。
对于这类问题,有多种解决方法,其中Dijkstra递推算法是最常用的方法。
50年代中期,由于计算机科学技术迅猛发展,出现了一门新兴的学科,叫做“人工智能”。
人工智能研究的是如何使计算机具有人类的智能,使计算机像人类那样智能地工作,去完成那些需要人的智能才可以完成的工作。
从另一个角度来说,人工智能研究如何使人的智能用计算机来实现。
例如,本题中从初始状态(1,1,1,1)到目标状态(0,0,0,0)的搜索过程都可以用人工智能的方法——由计算机来实现。
利用人工智能的方法还能证明定理(例如,平面几何中的定理)。
机器证明定理就是把人证明定理的过程通过一套符号体系,变成一系列能在计算机上实现的符号运算过程,从而把人的推理演绎过程机械化。
这对我们所求的问题方便了很多。
0关键词:最短路问题 Dijkstra递推算法渡河问题0二问题重述0人、狗、鸡、米均要过河,船需要人划,另外至多还能载一物,而当人0不在时,狗要吃鸡,鸡要吃米。
请设计一个安全渡河方案,并使渡河次0数尽量少?0三模型假设0问题的初始状态是人、狗、鸡、米均在本岸,要求经过一系列的过河运载(每次运载只能一人一物,而且不能把狗和鸡留在一起,也不能把鸡和米留在一起),最后达到目标状态,即人、狗、鸡、米均在对岸。
为了将问题数学化,我们用四元数组(即由4个数所组成的数组来表示初始状态,目标状态以及中间的各种可取状态。
0假设一物在本岸时,用数字“1”表示;在对岸时,用数字“0”表示。
过河问题引言过河问题是一类经典的数学逻辑问题,涉及到河岸上有一群人/动物需要通过一条狭窄且危险的河流,但只有一艘小船。
这个问题涉及到一系列规则和条件,并要求找到一种最优的解决方案,使得所有人/动物都能够安全地通过河流。
这个问题可以被视为一种思维训练,有助于提高逻辑推理和问题解决能力。
问题描述在典型的过河问题中,通常会有一群人/动物(如农夫、狼、羊、菜)需要通过一条河流。
以下是一个典型的问题描述:- 河岸上有一个农夫、一只狼、一只羊和一颗菜。
- 这个小船只能够携带农夫以及一样其他物品。
- 如果农夫不在场,狼会吃掉羊,羊会吃掉菜。
- 目标是将所有的人/动物都安全地从一岸带到另一岸,而不违反上述条件。
解决方案为了解决这个过河问题,需要找到一个安全且合理的船运策略。
以下是一个可能的解决方案:1. 农夫将羊带到另一岸,然后返回原岸。
2. 农夫将菜带到另一岸,然后把羊带回原岸。
3. 农夫将狼带到另一岸,然后返回原岸。
4. 农夫将羊带到另一岸。
在这个解决方案中,农夫每次都会携带一只人/动物过河,并在返回时如果出现潜在的危险,则在另一岸留下该人/动物。
通过这种方式,可以确保没有任何一种组合会出现危险情况。
思考扩展过河问题可以被进一步扩展和改变,以增加难度和挑战性。
以下是一些可能的扩展:1. 添加更多的人物/动物:例如,增加一只狗和一个猫到过河问题中。
这样会增加更多的可能性和限制条件,使得解决方案更加复杂。
2. 调整规则和条件:可以根据需要调整问题的规则和条件,以提供更多的难度和挑战性。
例如,可以添加时间限制或改变特定物品之间的关系。
3. 使用不同的交通工具:除了小船之外,也可以考虑使用其他交通工具,如桥梁、绳索等。
这些不同的工具可能会改变问题的解决方案。
实际应用过河问题虽然是一个数学逻辑问题,但它可以反映现实生活中的许多情况。
例如,在项目管理中,团队需要合作解决一系列问题,每个问题都有特定的限制和条件。
通过训练逻辑思维和解决问题的能力,可以更好地应对实际挑战。
“过河”问题的解法陕西省西安市长安区第二中学杨西武【关键词】迪克斯特拉算法,图论,最短路径【内容提要】信息学奥林匹克竞赛,各类资料中都涉及“过河”一题,但都没有给出详解及程序。
历届考题也没有涉及到,原因是其测试数据不便给出多组。
但此题对考察学生的分析能力和解题能力却很有帮助。
本文旨在给出其详解。
【问题描述】某人m带一只羊s,一只狼w和一筐白菜v过河。
没有船,他每次游过河时只能带一件东西,当没有人管理时,狼和羊不能相处,羊和白菜不能相处。
在这些条件的约束下,他怎样才能将三件东西从左岸带往右岸?试编程给出一组过河次数最少的方案。
【问题分析】用无向图描述上述问题的解法路径用结点代表状态例如:初始状态v1可记为{}>Φ<,,,,vwsm(即,人、羊、狼、白菜皆在左岸,右岸为空,这是一种安全状态,即满足约束条件的状态)。
最终状态v10可记为{}>Φ<vwsm,,,,;当人和羊过河后的状态可记为{}{}><smvw,,,(即,狼和白菜在左岸,人和羊在右岸,这也是一种完全状态)。
可根据约束条件写出所有的安全状态:即:①{}>Φ<,,,,vwsm②{}{}><smvw,,,③{}{}> <svwm,,,④{}{}> <wvsm,,,⑤{}{}> <vwsm,,,⑥{}{}> <vwsm,,,⑦{}{}> <vwms,,,⑧{}{}> <vsmw,,,⑨{}{}><w s m v ,,,⑩{}>Φ<v w s m ,,,,将这些安全状态分别用结点v1v2……v10表示若结点vi 经过一次过河可以到达结点vj ,则可以认为vi 和vj 之间有一条边,于是可以得到如下无向图:从v1到v10的一条路径,即表示该题的一种解法求过河次数最少的的方案也就是该图的一条最短路径【算法】①模拟题意,找出所有安全状态(见过程starter )②模拟题意,找出各结点之间的关联,即建立图(见过程create )③用迪克斯特拉算法,求出最短路径并打印。
安全过河
一、问题提出
人带着猫、鸡、米过河,船除需要人划之外,至多能载猫、鸡、米三者之一,而当人不在场时猫要吃鸡、鸡要吃米。
试设计一个安全过河方案,并使渡河次数尽可能少。
二、模型假设
不考虑外界其他影响,只考虑问题所述的条件。
符号说明:
三、模型的建立
人、猫、鸡、米分别记为i=1,2,3,4,当i在此岸时记为x i=1,否则记x i=0,则此岸的状态可用S=(x,1x2,x3,x4)表示。
记s的反状态为s'=(1-x,11-x2,1-x3,1-x4),允许状态集合为D={(1,1,1,1),(1,1,1,0),(1,1,0,1),(1,0,1,1),(1,0,1,0)} (1)
以及他们的5个反状态决策为乘船方案,记作d=(u,1u2,u3,u4),当i在船上时记作u i=1,否则记为u i=0,允许决策集合为D={(1,1,0,0),(1,01,0),(1,0,0,1),(1,0,0,0)} (2)
记第k次渡河前的此岸的状态为s k,第k次渡河的决策为d k,则状态转移律为s k1+=s k+()1-k d k,(3)
设计安全过河方案归结为求决策序列d1,d2,···,d k∈D,使状态s k∈S按状态转移律由初始状态s1=(1,1,1,1)经n步达到s n1+=(0,0,0,0)。
四、模型的求解
从而我们得到一个可行的方案如下:
因此,该问题的最优方案是:1、人先带鸡过河,然后人再回来,把米带过河,然后把鸡运回河岸,人再把猫带过河,最后人回来把鸡带过去。
渡河问题的数学模型解决方法内容摘要:本文通过对1934年和2002年两次武汉抢渡长江挑战赛的资料分析,对在抢渡过程中涉及到的水流速度,人的游泳速度、方向和起终点路程的关系等因素建立了数学模型,并以此进行了几个问题的研究。
分析两次比赛路线的不同对选手到达终点成功率的影响,阐述了两次的成功人数百分比有很大差异的原因。
然后考虑诸多因素的复杂变化,包括水流速度的分段或线性变化等,对模型进一步优化,找出人的游速的大小和方向与水流的关系,并提出几种可行性方案。
最后将模型应用到实际问题中,通过对诸如空投、宇宙飞船对接等涉及到多个速度和位移关系的设想,将模型进一步验证和推广。
通过数学模型及相关数据,可算得:①2002年第一名的游泳路线为从起点到终点的直线路程,游泳速度的大小为v=1.54m/s ,方向为与平行河岸上游方向夹角︒6.62;一个游泳速度为1.5m/s 的人应选择的方向为与平行河岸上游方向夹角︒2.58,他的成绩大约为s 4.910;②如果游泳者始终以和岸边垂直的方向游,则他们无法到达终点。
由于1934年和2002年两次比赛在水平方向(即水流方向)上路程的差异,计算出1934年选手的理论成功概率为81.1%,实际概率为90.9%;2002年的理论成功概率为19.3%,实际概率为18.3%,从而说明了为何两次比赛能到达终点人数的百分比有如此大的差异。
最后得出能够成功到达终点的选手的条件为θθsin cos 0⋅≥⋅-v d v v s ③当水流速度沿离岸边距离分段变化时,游泳速度为 1.5m/s 的选手应选择的方向是与平行河岸上游方向夹角︒2.58 ,路线为从起点到终点的直线距离,预计时间为784.5s ④当水流速度沿离岸边距离呈线性变化时,人的游泳方向从垂直河岸开始逐渐向θ减小方向偏离,中间一段水流速度恒定是θ也恒定,最后一段θ逐渐增大,当到达对岸时︒90恰为 θ。
由此可最终求总共经历时间约为 810s一.基本模型建立设水速为v 0,垂直于岸边的距离为d,平行于岸边的位移为s ,人的速度为v,出发方向与河岸平行方向夹角为θ,整个运动时间为t ,起点至终点的直线距离为l ,如图所示:若人要恰好从起点到达终点,则有: θθsin cos 0⋅==⋅-v d t v v s 二.模型假设1.不考虑温度(气温、水温)及水中除水速外其他因素对选手速度的影响;2.由于在实际情况中,风力对人的影响比对水的影响要小得多,而风对水的影响在水速中已经体现,因此不考虑风力对人的直接影响;3.假设1934年和2002年两次比赛具有相同的外界条件,即具有相同的水流速度;4.开始人以某一初速度沿固定方向向对岸游,则只要满足人刚到达对岸的地点在终点的上游,就可以认为此人能够到达终点;5.θ的范围是]180,0[︒,在开始时所有选手向各个方向起跳的机率相同。
关于不解决桥和船的问题过河就等于空话作文
哎呀妈呀,这个题目可真是让我头疼啊!不过,既然是过河问题,那我就得好好说说了。
我们得明确一点,过河可不仅仅是一件简单的事情,它涉及到很多因素,比如桥、船、水流等等。
如果这些因素不解决好,那么过河就成了空话,白说一堆。
你说呢?其实,这个问题就像是我们生活中的一些难题一样。
有时候,我们面对的问题看似很简单,但实际上却有很多复杂的因素在里面。
这时候,我们就不能掉以轻心,一定要认真分析,找出问题的关键所在。
只有这样,我们才能解决问题,顺利过河。
当然啦,过河的问题也不是一成不变的。
有时候,我们需要借助一些工具来帮助我们过河。
比如说,我们可以找一座桥来过河;或者,我们可以找一艘船来渡过河流。
这些工具就像是我们在解决问题时所使用的策略和方法一样。
只要我们运用得当,就能轻松地解决问题。
咱们也不能总是依赖这些工具。
毕竟,它们只是辅助我们的手段,而不是万能的法宝。
有时候,我们还需要自己动脑筋,想出一些创新的方法来解决问题。
这就像是我们在生活中遇到困难时,不能总是等待别人的帮助,而要学会独立思考,勇敢面对。
过河的问题其实就是一个生活的缩影。
它告诉我们,在面对问题时,我们不能掉以轻心,要认真分析,找出问题的关键所在。
我们还要学会运用各种方法和策略来解决问题。
只有这样,我们才能顺利过河,走向成功的彼岸。
所以啊,同学们,以后遇到问题不要怕,要勇敢地去面对它。
记住,过河的问题解决了,你也就成功了一半!加油吧!。
过河原理与价值观(转载)
一个学者要过河,当小船来到河中央。
学者询问船夫到对岸的距离时,他发现船夫的语言有基本的语法错误,就很看不起船夫,说:“你这半辈子白活了!”船夫没说话。
船继续往前走,忽然狂风大作、波涛汹涌,船夫问学者:“你会游泳吗?掉在水里能辨别方向吗?”学者回答不会。
船夫说:“我的船就要翻了,你这辈子真是白活了!”
现在学校对学生的培养,注重的是“解答”问题的能力,而实践中,需要的是“解决”问题的能力。
可以设想,如果让那个学者坐在教室里设计游到对岸的方案,我想他能设计出十几个来,但这并不意味着能在实践中解决问题。
现在提多元智能论,我想各种智能本身没有优劣之分,好坏之差。
因此每个人都有可发展的潜力,只是表现的领域不同而已。
所以,我们不能说哪一个学生更聪明,而应该说,那个学生在哪一个领域里更聪明。
《数学建模与计算》问题摆渡人过河问题摘要:摆渡人过河问题属于状态转移问题。
所谓状态转移问题,是研究在一定条件下,系统由一个状态向另一个状态转移能否实现,如果可以转移的话,应如何具体实现?将人狼羊菜依次用一个四维向量表示,对每一分量按二进制法则进行运算,这种运算成为可取运算.将这种运算方法设计为Matlab语言,进行计算机的计算。
关键词:状态转移问题,思维向量一、问题的提出一摆渡人欲将一只狼,一头羊和一篮白菜渡过河,由于船小,摆渡人一次至多带一物过河,并且狼与羊,羊与白菜不能离开摆渡人时放在一起,请给摆渡人设计出度和方法模拟图。
二、问题的分析这个问题可以用递推方法解决,但我们可以将其转换成状态转移问题来解决。
可取状态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)。
可取运载B有4个(1,1,0,0)、(1,0,1,0)、(1,0,0,1)、(1,0,0,0)。
规定A和B的每一分量相加时按二进制进行,这样一次渡河就是一个可取状态和一个可取运载相加,在判断和向量是否属于可取状态即可。
三、定义符号说明Y:表示该状态是可取的;N:表示该状态不是可取的;V:表示该状态虽然可取但已重复。
四、模型的分析、建立将人、狼、羊、菜依次用一个四维向量表示,当一物在左岸时,记相应的分量为1,否则记为0,如表示人和羊在左岸,并称为一个状态,由问题中的限制条件,有些状态是允许的,有的是不允许的。
凡系统可以允许存在的状态称为可取状态,比如是一个可取状态,但是一个不可取状态,此外,把每运载一次也用一个四维向量来表示,如表示人和狼在船上,而羊和白菜不在船上,这自然是可取的运载,因为船可载两物,而出则是不可取运载,这样,利用穷举法可得到:(1)可取状态A共有10个上面5个正好是下面5个的相反状态。
⼈狼⽺草过河问题数学建模数学建模——题⽬:过河问题⼀(⼈狼⽺草)摘要 (3)⼀、问题的提出 (3)⼆、问题分析及假设 (4)三、模型的参数及符号 (5)四、模型及解 (5)五、计算机编程法(C语⾔) (10)六、参考⽂献 (14)摘要在本次数学建模中,我们主要讨论的是⼈狼⽺草问题:⼀位渔民带了狼、⽺、草,准备过河。
可是⼩船每次只能容下渔民和⼀件物品。
渔民不在时,狼会吃⽺、⽺会吃草。
要求我们设计⼀个⽅案,使农夫可以⽆损失的过河。
此过河问题可以视为⼀个多步决策过程,确定每⼀步的决策,达到过河的⽬标。
⽽且,我们假设⼈不在时,狼或⽺在农夫不在时不会⾃⼰跑掉或被⼈牵⾛且农夫会划船。
于是我们得到⼀下集中状态:狼⽺草⼈/, /狼⽺草⼈,狼⽺⼈/草,草/狼⽺⼈,狼草⼈/⽺,⽺/狼草⼈,⽺草⼈/狼,狼/⽺草⼈,⽺⼈/狼草,狼草/⽺⼈。
题⽬要求找出“狼⽺草⼈/”到“/狼⽺草⼈”的路径,本论⽂根据题⽬要求⽽讨论了⼈、狼、⽺、草怎样安全过河的模型。
提出了算法和计算机编程法两种解决问题的⽅法,并且通过计算机编程法得出了⼀种⽅法。
⼀、问题的提出⼈、狼、⽺、草均需过河,船需要⼈划,最多载⼀物。
⼈不在时,狼吃⽺、⽺吃草,问如何过河?这个问题可以简单的解释为:⼀位渔民带了狼、⽺、草,准备过河。
可是⼩船每次只能容下渔民和⼀件物品。
另有⼀条件为,渔民不在时,狼会吃⽺、⽺会吃草。
也就是说,狼与⽺、⽺与草、或狼⽺草不能单独在⼀起。
现要求为过河⼈提出某种过河的⽅法,使⼈、狼、⽺、草都安全度过河且⽅法最简单为宜⼆、问题分析及假设过河问题相当于状态的转移。
初状态是⼈,狼,⽺,草均在此岸,⽬标终状态是⼈,狼,⽺,草均在对岸。
(此岸)状态向量:⽤四维向量(⼈,狼,⽺,草)表⽰⼈,狼,⽺,草各⾃的状态,记“在此岸”时各分量为“1”,否则记为“0”。
例如:(1,1,1,1)表⽰⼈,狼,⽺,草均在此岸,(0,0,0,0)表⽰⼈,狼,⽺,草均在对岸。
允许状态向量:满⾜系统限定条件的状态向量。
求解夫妻过河问题83275933本科生毕业论文论文题目: 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 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 引言这是一个古老的阿拉伯数学问题。
论文题目:过河问题及其扩展姓名学号学院年级缺勤记录朱本超2009221104120031 数计学院09级陈凯2009221104120004 数计学院09级张安龙2009221104120016 数计学院09级课程论文自检报告请回答以下问题,并在每题后打√确认。
1.除作者外,是否请过同事(同学)对论文进行挑剔性阅读?2.“问题提出”或前言部分中的文献回顾是否完备?3.是否对照过提供的“论文格式”逐项检查论文的各个部分?4.文后参考文献与文中的文献引用是否一一对应?5.文后参考文献的书写格式是否符合国家标准?(尤其注意著录符号、外国人的姓和名、有无漏项等)6.参考文献是否以近5年的文献为主?7.作者信息是否完整?包括word文档属性中的作者与单位、学号等。
课程论文质量评价标准评阅点评分标准分值得分摘要基本写出论文大意且语言简练、文字组织合理20 基本写出论文大意且语言简练15 基本写出论文大意10 套话、虚话较多或字数不够或文不对题0-5正文论证严谨、思路清晰、逻辑性强、有较强说服力,引文准确25 论证较严谨、思路较清晰、符合逻辑、有一定说服力,引文准确20 思路较清晰、引文较恰当15 有一定的说服力但论文紊乱、自相矛盾、大段抄袭他人文章0-10结构结构严谨、逻辑严密、层次清晰20 结构合理、符合逻辑、层次分明18 结构基本合理、层次比较清楚、文理通顺15 有不合理部分,逻辑性不强0-10深度和广度见解独特,对问题分析透彻,且非常全面25 有自主的见解,对问题的分析比较深入全面20 能提出自己的见解,分析的深度、广度一般15 分析比较深入全面10 对问题的分析既无深度,又无广度0-5规范化格式完全符合规范,字数完全符合要求10 格式比较规范,字数偏少8格式基本符合规范,但有个别地方不合规,字数较少 5格式规范性尚可,但不足之处较多,字数太少0-3 备注:以上评分标准仅供参考。
总分过河问题[摘要][关键词] 过河允许状态决策1、问题的提出人狗鸡米过河问题。
人、狗、鸡、米乘船过河;人要划船,而船小,除人之外最多只能运一物,且没人时狗要吃鸡,鸡要吃米;试基于状态转移模型、图论方法或动态规划方法(至少采用两种不同方法)编制matlab程序,设计一个安全过河方案,并使渡河次数尽可能少。
进一步地,基于类似思想解决商人过河问题和夫妻过河问题。
(a)商人过河问题。
三名商人各带一名随从过河,而河边只有一只能容纳两人的小船,随从们密约,在河的任一岸,一旦随从人数比商人多,他们就杀人越货。
如何乘船渡河的权利掌握在商人手上。
试问商人的安全渡河策略。
进一步地,4名商人能否安全过河?(b)夫妻过河问题,三对夫妻过河,船最多载2人,任一女子不能在其丈夫不在时与其他男子在一起。
试求最佳安全渡河方案。
若船最多载三人,五对夫妻能否安全过河?2、问题分析安全渡河问题可以视为一个多步决策过程。
每一步,即船由此岸驶向彼岸或从彼岸驶回此岸,都要对船上的人和物做出决策,在保证安全的前提下,在有限布内使全部人和物过河。
用状态(变量)表示某一岸的人和物的状况,决策(变量)表示船上的人和物的状况,可以找出状态随决策变化的规律。
问题转化为在状态的允许变化范围内(即安全渡河条件),确定每一步的决策,达到渡河的目标。
3、模型假设1、人、狗、鸡、米乘船过河。
人要划船,而船小,除人之外对多只能运载一物,且没人时狗要吃鸡、鸡要吃米。
2、人、狗、鸡、米分别记为i=1,2,3,4,当i在此岸时记为x i=1,否则x i=0,则此岸的状态的状态可用s=(x1,x2,x3,x4)表示。
记s的反状态为s'=(1—x1,1—x2,1—x3,1—x4)。
决策为乘船方案,记为d=(u1,u2,u3,u4),当i在船上时记为u i=1,否则记u i=0。
则问题变为系统如何在满足上述条件下,实现从(1,1,1,1)到(0,0,0,0)的状态转移。
4、模型构造方案一:允许状态集合S={(1,1,1,1),(1,1,1,0),(1,1,0,1),(1,0,1,1),(1,0,1,0)及他们的5个反状态}。
允许决策集合D={(1,1,0,0),(1,0,1,0),(1,0,0,1),(1,0,0,0)}。
记地k次渡河前此岸的状态为s k,第k次渡河决策为d k,则状态转移方程为s k+1=s k+(-1)k d k5个允许状态及其反状态表示10个点,当且仅当某个允许状态经过一个允许决策后仍为允许状态时,这两个状态之间存在连线。
根据路径图很容易得到渡河方案。
状态转移图状态反状态(1,1,1,1)(0,0,0,0)1(1,1,1,0)(0,0,0,1)2(1,1,0,1)(0,0,1,0)(1,0,1,1) 3 (0,1,0,0)4(1,0,1,0)(0,1,0,1)由图可知,至少需要四次渡河(其中3个来回),才能成功。
方案二:建立(人、狗、鸡、米)的4维0/1向量;如(1010)——表示狗、米已过河,人、鸡没有等;可取状态:10种——(1111)(1110)(1101)(1011)(1010)(0000)(0001)(0010)(0100)(0101)。
可取过河方式:4种——(1100)(1010)(1001)(1000)。
按照计算机语言的位运算:异或运算(xor)等。
运算方式:例(1111)xor(1100)=(0011)。
(1100)(0011)X (判断是否为可取状态,下同)开始状态(1111)xor(1010)(4种过河方式)=(0101)O(1001)(0110)X(1000)(0111)X取上一步异或运算后的可取状态,再做异或。
(去掉上一种过河方式)(下同)(1100)(1001)X (1100) (0001)O ⑴(0101)xor(1001)=(1100)X (1101)xor(1010)=(0111)X(1000)(1101)O (1001) (0100)O ⑵(1010)(1011)O (1100)(0111)X⑴(0001)xor(1001)=(1000)X (1011)xor(1001)=(0010)O(1000)(1001)X (1000)(0011)X(1010)(1110)O (1100)(0010)O⑵ (0100) xor(1100)=(1000)X (1110) xor(1001)=(0111)X(1000)(1100)X (1000)(0110)X(1100)(1110)O ①(1100)(0110)X(0010)xor(1010)=(1000)X ②(1010)xor(1010)=(0000)O(1000)(1010)O ②(1001)(0011)X根据题目要求,最少步骤,有①继续下去,步骤明显多于②,所以过河方案即为上述所列。
两种:(1111)—(0101)—(1101) —(0001)—(1011)—(0010)—(1010)(1111)—(0101)—(1101) —(0100) —(1110) —(0010)—(1010)5、模型扩展(a)商人过河问题设第k次渡河前此岸的商人数为x k,随从数为y k。
将二维向量s k=(x k,y k)定义为系统的状态,则安全渡河的允许状态集合为S={(0,0)(0,1)(0,2)(0,3)(1,1)(2,2)(3,3)(3,0)(3,1)(3,2)}。
设第k次船上的商人数为u k,随从数为v k。
将二维向量d k=(u k,v k)定义为商人的决策,则相应的允许决策集合为D={(2,0)(0,2)(1,0)(1,1)(0,1)}由于当k为奇数时船从此岸驶向彼岸,当k为偶数时船由彼岸驶回此岸,故状态转移方程即为s k+1=s k+(-1)k d k。
Matlab程序见附件二。
进一步的,对4名商人能否安全过河。
思想与三人过河类似,所以类似Matlab程序见附件三。
所以,4名商人不能安全过河。
(b)夫妻过河问题。
AaBbCc分别表示三对夫妻,ABC表示丈夫,abc表示妻子。
决策方案如下:此岸船上(去)对岸船上(回)ABCabc ab ab bABCbc bc abc cABCc AB ABab BbBCbc BC ABCa aabc ab ABCab bbc bc ABCabc进一步扩展五对夫妻过河,船能载三人。
ABCDEabcde表示五对夫妻,ABCDE表示丈夫,abcde表示妻子。
决策方案如下:此岸船上(去)对岸船上(回)ABCDEabcde abc abc aABCDEade ad abcd aABCDEae BCD BCDbcd BbABEabe ABE ABCDEcd cabce abc ABCDEabcd aae ae ABCDEabcde附件清单1、附件一:人、狗、鸡、米过河问题。
2、附件二:3、附件三:附件二:clear all; clca=[0,0; 0,1; 0,2; 0,3; 1,1; 2,2; 3,3; 3,0; 3,1; 3,2; ];d=[2,0; 0,2; 1,0; 1,1; 0,1];s(1,:)=[3,3];i=1; j=1; k=1; disp(' 此岸-- 船上-- 对岸')for i=1:12for j=1:5u=0;r=mod(i,2); m=r;for k=1:10if s(i,:)+(-1)^i*d(j,:)==a(k,:) t=1; endendif i+1>=3for m=(1+r):2:(i-1)if s(i,:)+(-1)^i*d(j,:)==s(m,:) u=1;endendendif t==1if u==0s(i+1,:)=s(i,:)+(-1)^i*d(j,:);c(i+1,:)=d(j,:); breakelseif u==1 continueendelse continueendendif t==0 disp('No Result'); break; endb(i+1,:)=[3,3]-s(i+1,:);play=sprintf('{%d, %d}--{%d, %d}--{%d, %d}', ...s(i,1),s(i,2), ...c(i+1,1),c(i+1,2), ...b(i+1,1),b(i+1,2));disp(play)if s(i+1,:)==[0,0] breakendend运行结果为:此岸- 船上- 对岸{3, 3}--{0, 2}--{0, 2}{3, 1}--{0, 1}--{0, 1}{3, 2}--{0, 2}--{0, 3}{3, 0}--{0, 1}--{0, 2}{3, 1}--{2, 0}--{2, 2}{1, 1}--{1, 1}--{1, 1}{2, 2}--{2, 0}--{3, 1}{0, 2}--{0, 1}--{3, 0}{0, 3}--{0, 2}--{3, 2}{0, 1}--{1, 0}--{2, 2}{1, 1}--{1, 1}--{3, 3}附件三:clear all; clca=[0,0; 0,1; 0,2; 0,3; 0,4; 1,1; 2,2; 3,3; 4,0; 4,1; 4,2; 4,3; 4,4]; d=[2,0; 0,2; 1,0; 1,1; 0,1];s(1,:)=[4,4];i=1; j=1; k=1; disp(' 此岸-- 船上-- 对岸')for i=1:12for j=1:5t=0;u=0;r=mod(i,2); m=r;for k=1:13if s(i,:)+(-1)^i*d(j,:)==a(k,:) t=1; endendif i+1>=4for m=(1+r):2:(i-1)if s(i,:)+(-1)^i*d(j,:)==s(m,:) u=1;endendif t==1if u==0s(i+1,:)=s(i,:)+(-1)^i*d(j,:);c(i+1,:)=d(j,:); breakelseif u==1 continueendelse continueendendif t==0 disp('No Result'); break; endb(i+1,:)=[4,4]-s(i+1,:);play=sprintf('{%d, %d}--{%d, %d}--{%d, %d}', ...s(i,1),s(i,2), ...c(i+1,1),c(i+1,2), ...b(i+1,1),b(i+1,2));disp(play)if s(i+1,:)==[0,0] breakendend运行结果为:此岸-- 船上-- 对岸{4, 4}--{0, 2}--{0, 2}{4, 2}--{0, 2}--{0, 0}{4, 4}--{1, 1}--{1, 1}{3, 3}--{1, 0}--{0, 1}{4, 3}--{0, 2}--{0, 3}{4, 1}--{0, 1}--{0, 2}{4, 2}--{2, 0}--{2, 2}{2, 2}--{1, 1}--{1, 1}No Result。