收藏 分享(赏)

4名商人带4名随从安全过河.docx

上传人:HR专家 文档编号:5802378 上传时间:2019-03-18 格式:DOCX 页数:8 大小:113.37KB
下载 相关 举报
4名商人带4名随从安全过河.docx_第1页
第1页 / 共8页
4名商人带4名随从安全过河.docx_第2页
第2页 / 共8页
4名商人带4名随从安全过河.docx_第3页
第3页 / 共8页
4名商人带4名随从安全过河.docx_第4页
第4页 / 共8页
4名商人带4名随从安全过河.docx_第5页
第5页 / 共8页
点击查看更多>>
资源描述

1、4 名商人带 4 名随从安全过河一问题提出:4 名商人带 4 名随从乘一条小船过河,小船每次自能承载至多两人。随从们密约, 在河的任一岸, 一旦随从的人数比商人多, 就杀人越货.乘船渡河的方案由商人决定,商人们如何才能安全渡河呢?二模型假设:商人和随从都会划船。三问题分析:商随过河问题可以视为一个多步决策过程,通过多次优化,最后获取一个全局最优的决策方案。对于每一步,即船由此岸驶向彼岸或由彼岸驶向此岸,都要对船上的人员作出决策,在保证两岸的商人数不少于随从数的前提下,在有限步内使全部人员过河。用状态变量表示某一岸的人员状况,决策变量表示船上的人员状况,可以找出状态随决策变化的规律,问题转化为在

2、状态的允许变化范围内(即安全渡河条件),确定每一步的决策,达到安全渡河的目标。四模型构成:xk第 k 次渡河前此岸的商人数,yk第 k 次渡河前此岸的随从数xk, yk=0,1,2,3,4; k=1,2, Sk=(xk, yk)过程的状态,S允许状态集合,S=(x,y)| x=0, y=0,1,2,3,4; x=4 ,y=0,1,2,3,4; x=y=1,2,3 uk第 k 次渡船上的商人数vk第 k 次渡船上的随从数dk=(uk, vk)决策,D=(u , v)| 1=#define N 30int xN,yN,u6,v6,k;/* x,y:状态值,分别表示此岸商人、随从数*/*u,v:决策

3、值,分别表示船上商人、随从数*/* k:决策步数;k 的奇偶性标志着船在河的此岸或彼岸 */next(int k,int i)/*计算下一状态*/if(k%2) /* k+1 为偶数,船从此岸到彼岸 */xk+1=xk-ui;yk+1=yk-vi;else /* k+1 为奇数,船从彼岸到此岸 */xk+1=xk+ui;yk+1=yk+vi;return;allow(int p,int q)/* 判定状态是否允许,是否重复 */int ok,j; /* ok:标记状态是否允许,是否重复;j:循环变量 */if(px1|p!=0 /* 此时状态不属于允许集 */elsefor(j=k-1;j0;

4、j-=2) /* 是否重复与船在河的哪一岸有关 */if(p=xj /* 此时状态出现重复 */break;if(j=0)ok=1; /* 此时状态属于允许集,且不重复 */return ok;void main()int i,j,mN,flag=1;/* m:采用的决策序号,flag:回溯标记 */u1=2; v1=0; /* 给决策编号并赋值 */u2=0; v2=2;u3=1; v3=0;u4=0; v4=1;u5=1; v5=1;k=1; /* 从初始状态出发 */printf(“请输入商人和随从的初始状态:n 商人数=“);scanf(“%d“,printf(“随从数=“);scan

5、f(“%d“,while(flag)for(i=1;i6;i+) /* 遍历各种决策 */next(k,i); /* 计算下一状态 */if(allow(xk+1,yk+1) /* 若新状态允许且不重复 */ mk=i; /* 记录采用的决策序号 */if(xk+1=0 for(j=1;j=k;j+)printf(“ 第 %2d 次 %d %dn“,j,xj+1,yj+1); flag=0;break;else /* 若未到达目标状态 */k+; /* 生成下一步的步数值 */break; /* 遍历终止,进入下一步 */else /* 若新状态不允许或重复 */while(i=5) /* 本步决策已经遍历时 */if(k=1)printf(“本题无解!n“);flag=0;break;else /* 未到达初始状态 */k-; /* 回溯退回 1 步,寻找新路径 */i=mk;if(flag)continue; /* 本步决策尚未遍历时 */elsebreak; /* 本步决策遍历时 */当商人数和随从数分别取(2,2)(3,3)(4,4)时, 程序输出结果如下:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 经营企划

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报