最新4商人过河问题
商人过河问题

商人过河问题一、三名商人各带一名随从的情况1.问题(略)2.模型假设①当一边岸满足随从数大于商人数,但商人数为0时仍为一种安全状态;②小船至多可容纳2人,且渡河时由随从(或者商人)来划船。
3.分析与建模商人过河需要一步一步实现,比如第一步:两个仆人过河,第二步:一个仆人驾船回来,第三步:又是两个仆人过河,第四步:……其中每一步都使当前状态发生变化,而且是从一种安全状态变为另一种安全状态。
如果我们把每一种安全状态看成一个点,又如果存在某种过河方式使状态a变到状态b,则在点a和点b之间连一条边,这样我们把商人过河问题和图联系起来,有可能用图论方法来解决商人过河问题。
建模步骤:⑴首先要确定过河过程中的所有安全状态,我们用二元数组(,)x y 表示一个安全状态(不管此岸还是彼岸),其中x表示留在此岸的主人数,y表示留在此岸的随从数。
两岸各有十种安全状态:(0,0),(0,1),(0,2),(0,3),(2,2),(1,1),(3,0),(3,1),(3,2),(3,3)⑵在两岸的安全状态之间,如存在一种渡河方法能使一种状态变为另一种安全状态,则在这两种状态之间连一条边。
这样,得到如下一个二部图(图1),其中下方顶点表示此岸状态,上方顶点表示彼岸状态。
我们的目的是要找出一条从此岸(3,3)到彼岸(0,0)的最短路。
⑶观察发现此岸的状态(0,0),(3,0)和彼岸的状态(0,3),(3,3)都是孤立点,在求最短路的过程中不涉及这些点,把它们删去。
两岸的点用1,2, (16)新标号。
(3,3)(3,2)(3,1)(3,0)(1,1)(2,2)(0,3)(0,2)(0,3)(0,0)○②④⑥⑧⑩○○12○14○16①③⑤○⑦⑨○11○13○15○(3,3)(3,2)(3,1)(3,0)(1,1)(2,2)(0,3)(0,2)(0,3)(0,0)(图1)4.模型求解求最短路程的matlab程序如下:function route=sroute(G,opt)%求图的最短路的Dijkstra算法程序,规定起点为1,顶点连续编号%G是给定图的邻接矩阵或弧表矩阵,程序能够自动识别%当opt=0(或缺省)时求无向图的最短路,当opt=1时求有向图的最短路%d——标记最短距离%route是一个矩阵,第一行标记顶点,第二行标记1到该点的最短路,第三行标记最短路上该点的先驱顶点while 1 %此循环自动识别或由弧表矩阵生成邻接矩阵if G(1,1)==0A=G;breakelsee=Gn=max([e(:,1);e(:,2)]); %顶点数m=size(e,1); %边数M=sum(e(:,3)); %代表无穷大A=M*ones(n,n);for k=1:mA(e(k,1),e(k,2))=e(k,3);if opt==0A(e(k,2),e(k,1))=e(k,3); %形成无向图的邻接矩阵endendA=A-M*eye(n) %形成图的邻接矩阵endbreakendpb(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)<length(A)tb=find(pb==0);d(tb)=min(d(tb),d(temp)+A(temp,tb)); %更新距离temp=find(d(tb)==min(d(tb))); %确定新最小距离点temp=tb(temp(1));pb(temp)=1;index1=[index1,temp];index=index1(find(d(index1)==d(temp)-A(temp,index1)));if length(index)>=2index=index(1);endindex2(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调用程序:route=sroute(e,0)运行结果:e =1 2 11 4 11 10 13 4 13 6 13 10 15 6 15 8 17 14 17 16 19 8 19 12 111 12 111 14 113 14 113 16 115 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 912 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)即:两个仆人过河,一个仆人回来;有两个仆人过河,一个仆人回来;两个主人过河,一主一仆回来;有两个主人过河,一个仆人回来;两个仆人过河,一个仆人回来;最后两个仆人过河。
数学建模案例精选知到章节答案智慧树2023年济南大学

数学建模案例精选知到章节测试答案智慧树2023年最新济南大学第一章测试1.在商人过河问题中,如果设彼岸的人数情况为案例中的变量,则状态转移函数变为()参考答案:s k+1=s k +(-1)k+1 d k2.下面哪一个不是商人过河允许的状态()参考答案:(2,1)3.关于商人过河问题,下面说法错误的是()参考答案:商人过河要保证每一岸的商人数和随从数一样多4.关于路障间距设计问题,说法不正确的()参考答案:不可以假设汽车做匀速运动5.关于机理分析说法不正确的是()参考答案:将研究对象看做一个黑箱第二章测试1.Lingo软件不可以直接求解哪一类优化模型().参考答案:多目标规划2.在露天矿生产的车辆安排问题中,已知铲位1到岩石漏距离为5.26km,车辆平均速度为28km/h,请问这条线路上运行一个周期平均所需时间Tij为()(请保留两位小数).参考答案:8.38;30.54;19.273.在露天矿生产的车辆安排问题中,基本假设不变,若某天线路上的T ij=19分钟,车辆开始工作的时间可以不同,工作后车辆不会发生等待,则该线路上最多可以安排()辆卡车?参考答案:44.在露天矿生产的车辆安排问题中,基本假设不变,若某天线路上的Tij=17分钟,安排3辆车在该线路上工作,开始工作的时间可以不同,开始工作后车辆不会发生等待,则三辆车在一个班次内的最大运算趟数是()?参考答案:28,27,275.在露天矿生产的车辆安排问题中,基本假设不变,车辆开始工作的时间可以不同,开始工作后车辆不会发生等待,若可以安排3辆车在同一条线路上工作,则三辆车在一个班次(8小时)内的工作时间(分钟)不可能是().参考答案:479,471,474第三章测试1.假设快速喝下1瓶啤酒,酒精从肠胃向体液的转移速度与胃肠中的酒精含量x成正比,比例系数为k,则得到的微分方程为?()。
参考答案:2.模型中有未知参数,给定了测试数据,确定参数的最佳方法为()。
商人们怎样安全过河

看谁答得快
1、某甲早8时从山下旅店出发沿一路径上山,下午5时到达山顶 并留宿。次日早8时沿同一路径下山,下午5时回到旅店。某 乙说,甲必在两天中的同一时刻经过路径中的同一地点,为 什么? 2、某人家住T市在他乡工作,每天下班后乘火车于6时抵达T市 车站,他的妻子驾车准时到车站接他回家。一日他提前下班 搭早一班火车于5时半抵T市车站,随即步行回家,他的妻子 像往常一样驾车前来,在路上遇到他接回家时,发现比往常 提前了10分钟,问他步行了多长时间? 3、两兄妹分别在离家2千米和1千米且方向相反的两所学校上学, 每天同时放学后分别以4千米/小时和2千米/小时的速度步行回 家,一小狗以6千米/小时的速度从哥哥处奔向妹妹,又从妹妹 处奔向哥哥,如此往返直至回家中,问小狗奔波了多少路程?
图 状态s=(x,y) ~ 16个格点 解 法 允许状态S ~ 10个 点 允许决策D ~ 移动1或2格; k奇,左下移; k偶,右上移.
s1
d1
d1, d11给出安全渡河方案
d11
评注和思考
sn+1
ቤተ መጻሕፍቲ ባይዱ
1
2
3
x
规格化方法, 易于推广 考虑4名商人各带一随从的情况
习题
• 模仿这一案例,作下面一题: 人带着猫、鸡、米过河,船除需要 人划之外,至多能载猫、鸡、米三者之 一,而当人不在场时猫要吃鸡、鸡要吃 米。试设计一安全过河方案,并使渡河 次数尽量地少。
建模示例
问题(智力游戏)
商人们怎样安全过河
河
小船(至多2人)
随从们密约, 在河的任一岸, 一旦随从的人数比商人多, 就杀人越货.
但是乘船渡河的方案由商人决定. 3名商人 3名随从 商人们怎样才能安全过河?
商人渡河问题实验心得

商人渡河问题实验心得
1、商人过河不用船,你说他傻吗?其实他是非常聪明的。
你想啊,这么多小木头要花几天才能做成一艘小木船,但假如把它们捆起来,就只需要半天时间,那样可以省下很大力气呀!
2、老板回来后问:“船哪儿去了?”大家抢着回答说被风吹走了……大家想:“既然没有船怎么渡河呢?于是大家合作开始造船,最终大功告成,但每个人都感觉好像少点什么似的,到底是什么呢?仔细观察,我发现所缺少的正是船上必备的——帆,有了帆,老板和工人们乘船出海也就变得方便了许多,再也不怕会遇见海啸啦!通过今天学习使我认识到:世界上无论干什么事情都要善于动脑筋,思考,才能取得进步;当遇到困难时,首先应该动脑筋想办法解决困难,千万不要鲁莽行事,否则将给自己带来危险。
3、在商店买东西,拿出100元钱交给售货员。
售货员拿过100元后,又将手伸向100元并放入盒子里,嘴巴还嘟囔着什么(此时同学看着她)。
接着售货员又从口袋中掏出另外两张百元钞票(她刚要把钱放回盒子内,同学注意了,由于速度太快,就在此刻同学迅速拿出胶带,粘住了她拿着的两张钞票。
而售货员因为站在凳子上,所以不幸摔倒,坐在地上)。
- 1 -。
商人过河问题数学建模c语言

商人过河问题数学建模c语言商人过河问题是一个经典的数学建模问题,通过建立数学模型,我们可以更深入地理解问题的本质,并找到最优的解决方案。
本文将通过C语言来实现这个问题的数学建模。
一、问题描述假设有n个商人要过河,每艘船只能承载一定数量的货物,而过河需要消耗一定的时间。
为了在最短的时间内完成过河任务,我们需要考虑商人的数量、船只的承载量以及过河的时间等因素,建立相应的数学模型。
二、数学建模1. 变量定义我们需要定义一些变量来描述过河过程中的各种因素,如商人的数量、船只的数量、船只的承载量、过河的时间等。
2. 算法设计算法的核心思想是利用贪心策略,尽可能多地利用船只,以减少过河的时间。
具体步骤如下:(1) 分配船只:根据船只的承载量,将商人分配到不同的船只上;(2) 计算过河时间:根据当前船只的位置和目标河岸的位置,计算每艘船只的过河时间;(3) 更新船只位置:根据过河时间,更新每艘船只的位置;(4) 重复以上步骤,直到所有商人过河。
3. C语言实现以下是一个简单的C语言程序,实现了上述算法:```c#include <stdio.h>#include <stdlib.h>int main() {int n, m, t, i, j, k;scanf("%d%d", &n, &m); // 输入商人数量和船只数量int cargo[n], time[n]; // 定义变量数组,用于存储商人和船只的信息scanf("%d%d", &cargo[0], &time[0]); // 输入第一个商人和他的过河时间for (i = 1; i < n; i++) { // 输入剩余商人和他们的过河时间scanf("%d%d", &cargo[i], &time[i]);}int boat[m]; // 定义船只数组,用于存储船只的承载量和位置信息for (j = 0; j < m; j++) { // 输入船只的承载量和位置信息scanf("%d", &boat[j]);}for (k = 0; k < n; k++) { // 模拟过河过程for (j = 0; j < m; j++) { // 遍历所有船只if (boat[j] >= cargo[k]) { // 如果船只承载量足够承载当前商人time[k] += time[k] / boat[j]; // 根据过河时间和船只速度计算剩余时间boat[j] += cargo[k]; // 将商人转移到指定位置的船只上break; // 如果找到了足够承载商人的船只,跳出当前循环继续下一轮操作}}}printf("%d\n", time[n - 1]); // 输出最后一个商人的过河时间return 0;}```三、总结通过上述C语言程序,我们可以实现商人过河问题的数学建模。
商人过河问题.

A (aij )nn 为 G 的邻接距阵,其中
1 aij 0
viv j E(G) viv j E(G)
i, j 1, 2, , n
定理 1:设 A(G) 为图 G 的邻接距阵,则 G 中从顶点 vi 到顶点 v j ,长度为 k 的道路的条
数为 Ak 中的 i 行 j 列元素.
证: 对 k 用数学归纳法 k 1 时,显然结论成立; 假设 k 时,定理成立, 考虑 k 1的情形.
其中 A 表示从南岸到北岸渡河的图的邻接距阵, B AT 表示从北岸到南岸渡河的图的
邻接距阵。
由定理 1、我们应考虑最小的 k ,s t ( AB)k A 中 1 行 10 列的元素不为 0,此时 2k 1
即为最少的渡河次数,而矩阵 ( AB)k A 中 1 行 10 列的元素为最佳的路径数目。
商人过河问题
三名商人各带一个随从乘船渡河,现有一只小船只能容纳两个人,由他们自己划行,若 在河的任一岸的随从人数多于商人,他们就可能抢劫财物。但如何乘船渡河由商人决定,试 给出一个商人安全渡河的方案。
首先介绍图论中的一个定理
G 是一个图,V(G)为 G 的顶点集,E(G)为 G 的边集。 设 G 中有 n 个顶点 v1, v2 , , vn ;
条,所以长为 k 1的从 vi 经 k 步到 vl 再一步到 v j 的道路共有 ai(lk) alj 条,故从 vi 经 k 1
n
步到 v j 的路径共有 ai(jk1)
a(k) il
alj
条.
l 1
下面分析及求解 假设渡河是从南岸到北岸,(m,n)表示南岸有 m 个商人,n 个随从,全部的允许状 态共有 10 个
v1 (3,3) v2 (3,2) v3 (3,1) v4 (3,(0,3) v8 (0,2) v9 (0,1) v10 (0,0)
商人们怎样安全过河的数学模型

商人们怎样安全过河的数学模型示例文章篇一:话说啊,商人们遇到了一个棘手的问题:他们得带着随从们一起过河,但随从们可不是省油的灯,一有机会就想着害商人抢货。
这河又不宽不窄,一只小船每次只能载两个人,怎么过河才能确保安全呢?咱们来聊聊这个问题吧。
首先,商人们得明白,随从们人多势众,要是他们比商人多了,那可就危险了。
所以,商人们得想个法子,让随从们没法儿耍花招。
其实啊,这个问题可以变成一个数学模型。
想象一下,我们把每次过河的人都看成是一个状态,就像打游戏一样,每过一次河就是进入了一个新的关卡。
在这个关卡里,商人们得保证自己的人数不能少于随从们。
那具体怎么做呢?咱们得先设定一些规则。
比如说,每次过河的人数只能是两个,这是小船的容量决定的。
然后,商人们得选择让哪些人过河,这就得靠他们的智慧和策略了。
想象一下这个场景:商人们先让两个随从过河,然后一个商人再带一个随从回来。
这样,河对岸的随从人数虽然多了,但商人这边还有足够的人手可以应对。
接下来,两个商人再过河,这样河对岸的商人数就比随从数多了,安全就得到了保障。
然后,再让一个商人带一个随从回来,这样河这边也有足够的商人保护随从不敢造次。
最后,两个随从再过河,问题就解决了。
这个数学模型虽然简单,但却非常实用。
它告诉我们,在面对困难和挑战时,只要我们善于运用智慧和策略,就一定能够找到解决问题的方法。
所以,商人们要想安全过河,就得靠他们的智慧和勇气了。
示例文章篇二:话说啊,有这么一个古老的谜题,叫做“商人过河”。
话说有三名聪明的商人,他们各自带着一个狡猾的随从,准备乘船过河。
这船啊,一次只能载两个人,问题就在于,这些随从们心里都有个小九九,他们密谋着,只要到了河的对岸,随从人数多于商人人数,就立马动手抢货。
这商人们也不是吃素的,他们知道随从们的阴谋,但他们毕竟都是聪明人,于是就想出了一个绝妙的策略。
咱们来想想啊,这过河其实就是一个多步决策的过程。
每次渡河,船上的人员选择都至关重要。
商人过河案例建模

商人过河设有三名商人,各带一个随从,欲乘一小船渡河,小船只能容纳两人,须由他们自己划行。
随从们密约,在河的任何一岸,一旦随从的人数比商人多,就杀人越货。
而如何乘船渡河的大权掌握在商人们的手中。
商人们怎样才能安全渡河呢?因这已经是一个相当清晰的理想化问题,所以直接讨论其模型描述以及模型求解。
这里将其描述为一个动态决策问题:记第k次渡河前此岸的商人数为,随从数为, k=1,…,n。
将二维向量定义为状态,安全渡河条件下的状态集合称为允许状态集合,记作S, 。
记第k次渡船上的商人数为,随从数为, k=1,…,n。
将二维向量定义为决策。
考虑小船载人数的限制,应满足,而称为允许决策集合。
因为k为奇数时,船从此岸驶向彼岸;k为偶数时,船从彼岸驶回此岸,所以状态随决策的变化规律是(状态转移规律)。
求决策,使状态按照状态转移规律,由初始状态经有限步n到达状态。
接下来讨论模型的求解,设是某个可行的渡河方案所对应的状态序列,若存在某,且同为奇数或同为偶数,满足,则称所对应的渡河方案是可约的。
这时也是某个可行的渡河方案所对应的状态序列。
显然,一个有效的渡河方案应当是不可约的。
设渡河已进行到第k步,为当前的状态,记,,为保证构造的渡河方案不可约,则当前的决策除了应满足:1),且当k为奇数时,,当k为偶数时,;还须满足:2)当k为奇数时,;当k为偶数时,。
通过作图,可以得到两种不可约的渡河方案,如下图:思考题:(1)四名商人各带一名随从的情况(小船同前)。
(2)n名商人各带n名随从的情况(小船同前)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4商人过河问题
分析
此类智力问题当然可以通过一番思考, 拼凑出一个可行方案来。
但是,我们现在希望能找到求解这类问 题的规律性、建立数学模型,用以解决更 为广泛的问题。
2
如图所示:
例如: d1:(3,3)-----(2,2) 1个商人1个随从过对岸 d1:(3,3)-----(3,1)2个随从过对岸
12
探索
(1) 夫妻过河问题 有三对夫妻要过河,船最多可载两人。 约束条件是根据法律,任一女子不得在其
丈夫不在场的情况下与另外男子在一起,问 此时这三对夫妻能否过河? 四对夫妻呢 (2) 人、狗、鸡、米过河问题
某人要带一条狗、一只鸡、一箩米过河, 但小船除需要人划外,最多只能载一物过河, 而当人不在场时,狗要咬鸡、鸡要吃米。问 此人应如何过河?
9
思考
(1) 若船的情况不变,则2名商人2个随从 如何安全渡河?
(2) m名商人m个随从(m≥4)能否安全渡 河?
10
(1) (2,2)→(1,1) or (2,0)→(2,1)→(0,1) → (1,1)→(0,0) 如下图:
11
(2) m名商人m个随从(m≥4)无法安全渡河,如m=4 时的图(如下图),d7就无法作不重复的转移。