算法设计动态规划.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《算法设计与剖析》课程报告 课题名称:动向规划——编写距离问题 课题负责人名(学号): 同构成员名单(角色):无 指导教师:左劼 评阅成绩: 评阅建议: 提交报告时间:2010年6月23日 动向规划——编写距离问题 计算机科学与技术专业 学生指导老师左劼 [纲要]动向规划的基本思想与分治法近似,也是将待求解的问题分解成 若干份的子问题,先分别解决好子问题,而后从子问题中获得最后解。但动向规划中的子问题常常不是互相独立的,而是相互之间有影响,由于有些子问题可能要重复计算多次,因此利用动向规划使这些子问题只计算一次。将字符串 A变换为字符串所用的最少字符操作数称为字符串A到B的编写距离。 重点词:动向规划矩阵字符串操作数编写距离 一、问题描绘 1、基本观点:设A和B是2个字符串。要用最少的字符操作将 字符串A变换为字符串B。字符串操作包含: 删除一个字符; 插入一个字符; 将一个字符改为另一个字符。 将字符串A变换为字符串B所用的最少字符操作数称为字符串A 到B的编写距离,记为d(A,B)。 2、算法设计:设计一个有效算法,关于给定的随意两个字符串A 和B,计算其编写距离d(A,B)。 3、数据输入:输入数据由文件名为的文本文件供给。文件的第1 行为字符串A,第二行为字符串B。 4、结果输出:将编写距离d(A,B)输出到文件的第一行。 输入文件示例输出文件示例 fxpimu5 xwrs 二、剖析 关于本问题,大概思路为:把求解编写距离分为字符串A从0个 字符渐渐增添到所有字符分别想要变成字符串B该怎样变化以及变化 的最短距离。 详细来说,第一采纳数组  a1  储存字符串  A(设长度为  n),a2储存 字符串  B(设长度为  m),d矩阵来进行详细的运算;这里有两个特别情 况比较简单能够独自考虑,  即A的长度为  0而  B不为  0还有  A不为  0B 为0,这两种状况最后的编写距离分别为  m和  n;议论一般状况,  d矩 阵为d[n][m],假设我们从d[0][0]开始向来进行以下操作到了d[i][j] 的地点,此中删除操作必定是  A比  B长,同理,插入字符操作必定是 A比  B短,改正字符操作说明同样长,我们所要做的是对 d[i-1][j]d[i-1][j-1]  所存数进行比较,此中最小的即为目前长度 和款式的字符串  A变成  B的编写距离,挨次这样计算到最后的  d[n][m] 中所存的数即为最后的编写距离。 三、证明 1、理论前提:动向规划的基本思想与分治法近似,也是将待求 解的问题分解成若干份的子问题,先分别解决好子问题,而后从子问 题中获得最后解。但动向规划中的子问题常常不是互相独立的,而是 相互之间有影响。该算法的有效性依靠于两个重要的性质:最优子结 构性质和问题重叠性质。 最有子结构性:以自底向上的方法递归地从子问题的最优解逐渐 结构出整个问题的最优解。 重叠子问题性:每次产生的子问题其实不老是新问题,利用动向规 划对每一个子问题只解一次,并将其存入表格中,下次用到该子问题 的解时,只需查找表格即可。 2、此题:此题第一切合最优子结构性,即让字符串A从1开始 递加到最后长度n,也就是从只有一个字符开始计算,每增添一个字符计算一次,切合自底向上的方法递归地解决子问题;其次切合重叠子问题性,每增添一个字符计算的时候总要用到前一状态时的编写距 离,而且此题我采纳了矩阵来储存旧子问题的数据,都只计算了一次, 因此也切合。 3、总结:综上两点,可知此题采纳了动向规划的思想来解决, 并能获得正确的答案。 四、代码及解说(说明) #include #includefstream #include #include usingnamespacestd; constintMAX=1000; intmin(inta,intb) { if(a=b) returnb; else returna; } intmain( ) { intd[MAX][MAX]; inti,j; chara1[MAX],a2[MAX]; FILE*fp; fp=fopen(,r); fscanf(fp,%s,a1); fscanf(fp,%s,a2); fclose(fp); intn=strlen(a1)-1;  算机算法设计与剖析(第  3版).  电子工业 第一版社,(第  8次印刷)  P48,P53-54,P89 [2]科曼(Cormen.)等著潘金贵等译  .算法导论  (第二版  ).  机械工业第一版社,  (第 9次印刷)P202-207

文档评论(0)

155****2478 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档