




免费预览已结束,剩余2页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
商人过河问题一、三名商人各带一名随从的情况1 问题(略)2 模型假设 当一边岸满足随从数大于商人数,但商人数为0时仍为一种安全状态; 小船至多可容纳2人,且渡河时由随从(或者商人)来划船。3 分析与建模商人过河需要一步一步实现,比如第一步:两个仆人过河,第二步:一个仆人驾船回来,第三步:又是两个仆人过河,第四步:其中每一步都使当前状态发生变化,而且是从一种安全状态变为另一种安全状态。如果我们把每一种安全状态看成一个点,又如果存在某种过河方式使状态变到状态,则在点和点之间连一条边,这样我们把商人过河问题和图联系起来,有可能用图论方法来解决商人过河问题。建模步骤:首先要确定过河过程中的所有安全状态,我们用二元数组表示一个安全状态(不管此岸还是彼岸),其中x表示留在此岸的主人数,表示留在此岸的随从数。两岸各有十种安全状态:在两岸的安全状态之间,如存在一种渡河方法能使一种状态变为另一种安全状态,则在这两种状态之间连一条边。这样,得到如下一个二部图(图1),其中下方顶点表示此岸状态,上方顶点表示彼岸状态。我们的目的是要找出一条从此岸到彼岸的最短路。观察发现此岸的状态,和彼岸的状态,都是孤立点,在求最短路的过程中不涉及这些点,把它们删去。两岸的点用1,2,,16重新标号。(3,3) (3,2) (3,1) (3,0) (1,1) (2,2) (0,3) (0,2) (0,3) (0,0) (3,3) (3,2) (3,1) (3,0) (1,1) (2,2) (0,3) (0,2) (0,3) (0,0)(图1)4 模型求解求最短路程的matlab程序sroute.m如下:function route=sroute(G,opt)%求图的最短路的Dijkstra算法程序,规定起点为1,顶点连续编号%G是给定图的邻接矩阵或弧表矩阵,程序能够自动识别%当opt=0(或缺省)时求无向图的最短路,当opt=1时求有向图的最短路%d标记最短距离%route是一个矩阵,第一行标记顶点,第二行标记1到该点的最短路,第三行标记最短路上该点的先驱顶点while 1 %此循环自动识别或由弧表矩阵生成邻接矩阵 if G(1,1)=0 A=G;break else e=G n=max(e(:,1);e(:,2); %顶点数 m=size(e,1); %边数 M=sum(e(:,3); %代表无穷大 A=M*ones(n,n); for k=1:m A(e(k,1),e(k,2)=e(k,3); if opt=0 A(e(k,2),e(k,1)=e(k,3); %形成无向图的邻接矩阵 end end A=A-M*eye(n) %形成图的邻接矩阵 end breakendpb(1:length(A)=0;pb(1)=1;index1=1;index2=ones(1,length(A);d(1:length(A)=M;d(1)=0; %标记距离temp=1;while sum(pb)=2 index=index(1); end index2(temp)=index; %记录前驱顶点endroute=1:n;d;index2;在matlab的命令窗口输入图(1)的弧表矩阵e:e=1 2;1 4;1 10;3 4;3 6;3 10;5 6;5 8;7 14;7 16;9 8;9 12;11 12;11 14;13 14;13 16;15 16;e=e,ones(17,1); %边权都设为1调用程序sroute.m:route=sroute(e,0)运行结果:e = 1 2 1 1 4 1 1 10 1 3 4 1 3 6 1 3 10 1 5 6 1 5 8 1 7 14 1 7 16 1 9 8 1 9 12 1 11 12 1 11 14 1 13 14 1 13 16 1 15 16 1route =1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 160 1 2 1 4 3 10 5 6 1 8 7 10 9 12 111 1 4 1 6 3 14 5 8 1 12 9 14 11 16 7 这表示存在一条从1到16的长度为11的路:1 4 3 6 5 8 9 12 11 14 7 16,此路对应商人成功渡河的一个方案:(3,3)变为(3,1)变为(3,2)变为(3,0)变为(3,1)变为(1,1)变为(2,2)变为(0,2)变为(0,3)变为(0,1)变为(1,1)变为(0,0)即:两个仆人过河,一个仆人回来;有两个仆人过河,一个仆人回来;两个主人过河,一主一仆回来;有两个主人过河,一个仆人回来;两个仆人过河,一个仆人回来;最后两个仆人过河。这样,商人安全过河。若把刚才的最短路上的边权全部改大,如取2或3,重新运行程序sroute.m,得到同样的结果,但实际上还有另外一种安全渡河状态:(3,3)变为(2,2)变为(3,2)变为(3,0)变为(3,1)变为(1,1)变为(2,2)变为(0,2)变为(0,3)变为(0,1)变为(0,2)变为(0,0)5 图解法将十种安全状态的点在直角坐标系中标出,如下图(0,0),(0,1),(0,2),(0,3),(2,2),(1,1),(3,0),(3,1),(3,2),(3,3)(实线表示才此岸开往彼岸,虚线表示才彼岸开往此岸)xy3322110s1sn+1d1d11图中给出了商人安全渡河的一条路径。二、四名商人各带一名随从1.问题:四名商人各带一名随从时,就附加说明条件才能实现安全渡河。2.原模型求解改编程序sroute.m重新运行,或用递归的方法程序运行,结果运行出现错误或死机,这说明模型无解,即四名商人各带一名随从在原条件下无安全状态渡河。所以我们需附加一定的条件,使模型有解。由第一问中的条件可知:商人渡河的限制条件是在任何一边岸商人数一定要比随从数多且小船最多只能载2人,而安全状态(即商人数比随从数多)是最其本的前提条件,因此我们考虑更改小船的容量来实现安全渡河。3.新模型及求解当小船的容量为5或大于5时,显然一种安全渡河方式为:先4名随从渡河,1名随从回来;随后4名商人与回来的那名随从一起渡河。当小船容量为4时,一种渡河方案为:先4名随从渡河,1名随从回来;再3名商人渡河,1名商人和1名随从回来;最后2名商人和2名随从一起渡河。现在我们考虑小船容量为3时的情况:(在这我们用图解法来完成)9步渡河方案(如图所示):032112344yx 图即:第一步先三名随从过河,一名随从回来;再两名商人过河,一名商人和一名随从回来;再三名商人过河,一名随从回来;再三名随从过河,一名随从回来;最后两名随从过河。11步度河方案(如图所示):032112344yx 图即:第一步先一名商人和一名随从过河,一名商人回来;再三名随从过河,一名随从回来;再三名商人过河,一名商人和一名随从回来;再两名商人过河,一名随从回来;最后三名
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高速养护施工方案(3篇)
- 新店开业当天活动策划方案(3篇)
- 信号总线施工方案(3篇)
- 高级执法考试题库及答案
- 征兵工作教学课件
- 北京市门头沟区2023-2024学年八年级下学期期末质量监测物理题目及答案
- 写高三数学题目及答案
- 小学智力测试题目及答案
- 高二物理《浮力原理的应用:高中物理实验教程》
- 市场资源置换合作合同
- JB∕T 13977-2020 液化天然气(LNG)低温潜液泵
- 年度设备维护保养计划表
- 110kV企业变电站短路电流计算及继电保护整定计算
- 口咽通气道的使用方法
- 2022年晋能控股煤业集团有限公司招聘笔试题库及答案解析
- 福建师范大学各学生组织部门简介
- CAMDS操作方法及使用技巧
- (新版)铁路防洪知识题库(含答案)
- 山西省太原市小升初语文试卷(含答案)
- 飞行区基础知识
- 器械清洗质量抽查记录表
评论
0/150
提交评论