算法设计与分析实验报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

算法设计与分析实验报告

实验一全排列、快速排序

【实验目的】

1. 掌握全排列的递归算法。

2. 了解快速排序的分治算法思想。

【实验原理】

一、全排列

全排列的生成算法就是对于给定的字符集,用有效的方法将所有可能的全排列无重复无遗漏地枚举出来。任何n个字符集的排列都可以与1~n的n个数字的排列一一对应,因此在此就以n 个数字的排列为例说明排列的生成法。

n个字符的全体排列之间存在一个确定的线性顺序关系。所有的排列中除最后一个排列外,都有一个后继;除第一个排列外,都有一个前驱。每个排列的后继都可以从它的前驱经过最少的变化而得到,全排列的生成算法就是从第一个排列开始逐个生成所有的排列的方法。

二、快速排序

快速排序(Quicksort)是对冒泡排序的一种改进。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再

按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

【实验内容】

1.全排列递归算法的实现。2.快速排序分治算法的实现。

【实验结果】

1. 全排列:

2. 快速排序:

实验二最长公共子序列、活动安排问题

【实验目的】

1. 了解动态规划算法设计思想,运用动态规划算法实现最长公共子序列问题。2. 了解贪心算法思想,运用贪心算法设计思想实现活动安排问题。

【实验原理】

一、动态规划法解最长公共子序列

设序列X=和Y=的一个最长公共子序列Z=,则:

i. 若xm=yn,则zk=xm=yn且Zk-1是Xm-1和Yn-1的最长公共子序列;

ii. 若xm≠yn且zk≠xm ,则Z是Xm-1和Y的最长公共子序列;

iii. 若xm≠yn且z k≠yn ,则Z是X和Yn-1的最长公共子序列。

其中Xm-1=,Yn-1=,Zk-1=。

最长公共子序列问题具有最优子结构性质。

由最长公共子序列问题的最优子结构性质可知,要找出X=和Y=的最长公共子序列,可按以下方式递归地进行:当xm=yn时,找出Xm-1和Yn-1的最长公共子序列,然后在其尾部加上xm(=yn)即可得X和Y的一个最长公共子序列。当xm≠yn时,必须解两个子问题,即找出Xm-1和Y的一个最长公共子序列及X和Yn-1的一个最长公共子序列。这两个公共子序列中较长者即为X和Y的一个最长公共子序列。

二、贪心法解活动安排问题

顾名思义,贪心算法总是作出在当前看来最好的选择。也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择。当然,希望贪心算法得到的最终结果也是整体最优的。虽然贪心算法不能对所有问题都得到整体最优解,但对许多问题它能产生整体最优解。

活动安排问题就是要在所给的活动集合中选出最大的相容活动子集合,是可以用贪心算法有效求解的很好例子。该问题要求高效地安排一系列争用某一公共资源的活动。贪心算法提供了一个简单、漂亮的方法使得尽可能多的活动能兼容地使用公共资源。

【实验内容】

1.动态规划算法的实现。2.贪心算法的实现。

【实验结果】

1. 最长公共子序列:

2.活动安排:

实验三回溯法解n后问题、0-1背包问题

【实验目的】

1.了解回溯算法设计思想,并运用回溯算法实现n后问题和0-1背包问题。

【实验原理】

一、回溯法解n后问题

先选择某一可能的线索进行试探,每一步试探都有多种方式,将每一方式都以一试探。如有问题就返回纠正,反复进行这种试探再返回纠正,直到得出全部符合条件的答案或是问题无解为止。

二、0-1背包问题

用回溯法解问题时,应明确定义问题的解空间,问题的解空间应至少包含问题的一个(最优)解。定义了问题的解空间后,还应将解空间很好地组织起来,使得能用回溯法方便地搜索整个解空间。通常将解空间组织成树或图的形式。确定了解空间的组织结构后,回溯法从开始结点(根结点)出发,以深度优先方式搜索整个解空间。这个开始结点成为活结点,同时也成为当前的扩展结点。在当前的扩展节点处,搜索向纵深方向移至一个新结点。这个新结点就成为新的活结点,并成为当前扩展结点。如果在当前的扩展结点处不能再向纵深方向移动,则当前扩展结点就成为

死结点。此时,应往回移动(回溯)至最近的一个活结点处,并使这个活结点成为当前的扩展结点。回溯法以这种工作方式递归地在解空间中搜索,直至找到所要求的解或解空间中已无活结点时为止。

【实验内容】

1.n后问题的实现。2.0-1背包问题的实现。

相关文档
最新文档