《算法设计与分析》平时作业.docVIP

  1. 1、本文档共6页,可阅读全部内容。
  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文档。上传文档
查看更多
《算法设计与分析》平时作业

《算法设计与分析》平时作业 第三次作业 给定M=20,(p1,p2,p3,p4,p5,p6)=(11,8,15,18,12,6), (w1,w2,w3,w4,w5,w6)=(5,3,2,10,4,2),利用贪心法找出背包问题的最佳解。并用分枝限界法求解,比较两种方法的结果。 写出一个求解河内塔问题的递归算法。 递归算法如下: void HN(int n, char s, char u, char d ) { if (n==1) couts”→”d else { Exercise2(n-1,s,d,u) couts”→”d Exercise2(n-1,u,s,d) } } 写出一个求解河内塔问题的非递归算法。 先定义一个STRCT类型的变量为temp,并定义堆栈S(其元素类型为STRCT) STRCT类型定义如下: Struct STRCT { Int height; Chr from,to using Chr* addr; } 非递归算法描述如下: void HN(height,from,to,using,addr); PUSH(temp) if (S[top].height==1) { cout S[top].from”→” S[top].to goto S[top].addr }else { height= S[top].height-1; from= S[top].from; to= S[top].using;using= S[top].to; addr=第(3)步; }; goto 第(1)步; POP(temp); cout S[top].from”→” S[top].to height= S[top].height-1; from= S[top].using; to= S[top].to; using= S[top].from; addr=第(5)步; goto第(1)步; POP( temp); goto S[top].addr; 其中函数中各参数初始值为n,f,t,u及程序结束地址。 用Strassen算法计算下列矩阵的乘积: 解:一般矩阵算法如下: = 其中,C11=A11*B11+A12*B21,C12=A11*B12+A12*B22 C21=A21*B11+A22*B21,C22=A21*B12+A22*B22 根据Strassen算法: p1=(A11+A22)(B11+B22)= = p2=(A21+A22)B11= p3=A11(B12-B22)= p4=A22(B21-B11)= p5=(A11+A12)B22= p6=(A21-A11)(B11+B12)= p7=(A12-A22)(B21-B22)= C11=p1+p4-p5+p7=,C12=p3+p5= C21=p2+p4=,C22=p1+p3-p2+p6= 用动态规划算法求通过图4-38所示网络的最长和最短路线。 解:先将顶点划分成以下三个子集: ① ② ③ cost(3,5)=5; cost(3,6)=4; cost(3,4)=min(8+5,9,9+4)=9 cost(2,2)=min(6+cost(3,5),6+cost(3,4)) =min(6+5,6+9)=11 cost(2,3)=min(5+cost(3,4); 7+cost(3,6)) =min(5+9,7+4)=11 cost(1,1)=min(4+cost(2,2),5+cost(2,3)) =min(4+11,5+11)=15 由此得到最短路线为1,2,5,7;长度为15 最长路线求法类似。 修改算法4-20,只要找到问题的一个解,算法便终止。 procedure BACKTRACK(n) begin k=1 while k0 do if 对于还没有试探过的值x(k),有 x(k)∈T(x(1),…,x(k-1))且Bk(x(1),…,x(k))的值为真 then begin if (x(1),…,x(k))是一个解 then write(x(1),…,x(k)); exit end else k=k-1 end 实验三   内容: 。  目的:

文档评论(0)

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

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

1亿VIP精品文档

相关文档