网站大量收购独家精品文档,联系QQ:2885784924

《利用动态规划算法求解最长公共子序列问题研究》6100字.docx

《利用动态规划算法求解最长公共子序列问题研究》6100字.docx

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

利用动态规划算法求解最长公共子序列问题研究

目录

TOC\o1-3\u摘要 1

引言 2

1.最长公共子序列 3

1.1基本概念 3

1.2蛮力法求解最长公共子序列问题 3

2.动态规划算法 6

2.1动态规划算法中的几个基本概念 6

2.2动态规划算法的基本思想 6

2.3动态规划算法的基本要素 7

2.4动态规划算法的适用条件和一般步骤 7

2.4.1适用条件 7

2.4.2一般步骤 7

3.利用动态规划算法求解最长公共子序列问题 8

3.1动态规划算法求解最长公共子序列问题 8

3.1.1最长公共子序列问题的特征分析 8

3.1.2递归定义最优值 9

3.1.3计算最长公共子序列的长度 10

3.1.4构造LCS 12

3.2蛮力法与动态规划算法比较分析 15

结束语 17

参考文献 18

PAGE6

摘要:动态规划算法通常应用于研究和解决那些在过程中具有特定的最优化和特殊性质的问题.它的基本设计思想是把要解决的问题分成许多的子问题,然后先对分出来的子问题求解,得到了这些子问题的解后就可以根据他们的解来找到原问题的解.并且这些分出来的子问题相互之间并不是独立的,通常要采用动态规划算法来求得.本文首先介绍最长公共子序列和动态规划算法的相关概念,包括最优化原理、重叠子问题等.然后结合具体例子了解如何运用动态规划算法来求解最长公共子序列问题,并从中发现利用动态规划算法的优势,包括有效地解决冗余、节省时间等.

关键词:动态规划算法;子问题;最长公共子序列;重叠子问题

引言

动态规划是一种用于设计算法的方法,可用于优化决策过程.它也是使求解决策过程中实现最优化的一种数学方法.在20世纪中叶,数学家们提出了有名的最优化原理,以多方面深入地研究多阶段决策问题.最优化原理就是将一个多步骤的过程一步一步变成一系列独特的问题,并一步一步地解决它们,从而创立了针对解决过程优化问题的动态规划算法这一新方法.动态规划算法在现代数学、经济学和计算机科学中已经有着广泛的研究和应用,也普遍在最优控制、生产调度、机器学习等领域得到了广泛的应用,如最短路线问题、图像数据压缩、资源分配问题、背包问题、库存管理问题、信息检索,以及本文中将要探讨的最长公共子序列问题.

目前关于动态规划算法与最长公共子序列的相关研究成果有很多,文献[1]-[3]主要介绍了动态规划算法的基本思想和基本概念原理等;文献[4]主要介绍子序列、公共子序列、最长公共子序列等相关概念;文献[5]-[6]主要介绍求解最长公共子序列的具体方法,如蛮力法、动态规划算法等;文献[7]-[12]主要介绍了运用动态规划算法的求解步骤以及相对于其他算法所具备的优势;文献[13]-[14]主要介绍了动态规划的算法实现.

本文阐述了动态规划算法的基本思想、相关的几个基本概念和基本要素以及适用条件,了解运用动态规划算法求解问题的一般步骤.接着介绍了与最长公共子序列相关的一些概念,然后结合具体的最长公共子序列问题,应用动态规划算法巧妙地解决问题.在利用动态规划算法求解最长公共子序列问题的过程中,先对问题进行特征分析,然后根据递归公式创建DP数组,通过数组确定最长公共子序列的长度从而获得最长公共子序列,并给出了C++语言算法的实现.

1.最长公共子序列

1.1基本概念

定义1[1]子序列:给定一个序列和一个序列,如果存在序列是的下标序列,且严格递增,并且对所有的,都满足,那么就是的子序列.

定义2[1]公共子序列:给定一个序列和一个序列,如果序列既是的子序列,也是的子序列,那么称是和的公共子序列.

定义3[1]最长公共子序列(LCS):在序列和序列的所有公共子序列中,如果是其中长度最长的,那么序列就是和的最长公共子序列.

一组序列的最长公共子序列问题是用来查找所有序列中最长子序列的问题.最长公共子串与最长公共子序列的有以下差异:在原字符串中最长公共子序列不需要是连续的,但最长公共子串必须是连续的,只要相对顺序保持一致即可.

最长公共子序列问题具有最优子结构:可以将该问题分解成更简单的,更小的“子问题”,并且这些子问题细分出几的子问题,从而简化了整个问题.在最长公共子序列问题中,子问题的解可以重复使用,也就是说,高级子问题通常会重复使用低级子问题的解.然后就可以利用动态规划算法来解决,此时通过储存子问题的解可以防止其被重复计算.

1.2蛮力法求解最长公共子序列问题

蛮力法也可以叫做枚举法,用蛮力法求最长公共子序列的基本思想是将满足条件的所有序列都列举出来,从中找到最长公共子序列.这也是求解问题最容易想到的方法.

蛮力法的求解步骤如下:

(1)枚举序列里的每一个子序列;

(2)枚举序列里的每一个子序列;

(3)检查子序列是否也是序列里的子序列;

(4)在和的共同子序列里找到最长的

文档评论(0)

02127123006 + 关注
实名认证
内容提供者

关注有哪些信誉好的足球投注网站

1亿VIP精品文档

相关文档