商人过河Matlab程序2.docVIP

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
商人过河Matlab程序2.doc

3名(或多名)商人各带一名随从乘船渡河,只有一条小船,且此船只能容纳2人,由他们自己划行,随从们密约,在河的任意岸,一旦随从人数比商人多,就杀商人,此密约被商人知道,如何乘船渡河的大权掌握在商人们手中,那么商人们应怎样安排每次乘船方案,才能安全渡河呢? function?foot=merchant ??%%%%%%%%%%%%%%%%%%%%%%????程序开始需要知道商人数,仆人数,船的最大容量 n=input(输入商人数目:); nn=input(输入仆人数目:); nnn=input(输入船的最大容量:); ??if?nnn n=input(输入商人数目:); nn=input(输入仆人数目:); nnn=input(输入船的最大容量:);? ??end? %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%????决策生成 ???jc=1;????%?决策向量存放在矩阵“d”中,jc为插入新元素的行标初始为1 ?for?i=0:nnn????????????????????? ?????? ??????for?j=0:nnn?????????????????????? ????????if?(i+j=nnn)(i+j0)?????%?满足条件??D={(u,v)|1=u+v=nnn,u,v=0,1,2}? ??????????d(jc,1:3)=[i,j?1];???%生成一个决策向量后立刻将他扩充为三维(再末尾加“1”) ??????????d(jc+1,1:3)=[-i,-j,-1];??????%??同时生成他的负向量 ?????????????jc=jc+2;?????????%??由于一气生成两个决策向量,jc指标需要往下移动两个单位 ?????????end ??????end ?????????j=0;???????????????????????????????????? ????? end ? %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%?????状态数组生成 ??kx=1;??????????????%?状态数组存放在矩阵“A”中,生成方法同决策生成 for??i=n:-1:0 ??? ????for?j=nn:-1:0 ??????? ??????? ????????if??((i=j)((n-i)=(nn-j)))|((i==0)|(i==n))?? ???????????%???(i=j)((n-i)=(nn-j)))|((i==0)|(i==n))为可以存在的状态的约束条件 ??????????? ????????????A(kx,1:3)=[i,j,1];??????????????????????????%?生成状态数组集合D` ????????????A(kx+1,1:3)=[i,j,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); ??????????? ???? ???? ??for?i=1:2*k??????????????????????????????? ????????for?j=1:a ???????????? ???????????????c=A(i,:)+d(j,:)?;????????????????? ???????????????x=find((A(:,1)==c(1))(A(:,2)==c(2))(A(:,3)==c(3)))?; ??????????????? ???????????????v(i,x)=1;??????????%?x为空不会改变v的值 ?????????????? ????????end????????????????????????????????????????????? ??end ?? %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%?dijstra方法 x=1;?y=size(A,1); m=size(v,1); T=zeros(m,1);???? T=T.^-1; lmd=T;???????????? P=T;??

文档评论(0)

zsmfjh + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档