欢迎来到天天文库
浏览记录
ID:31050132
大小:68.50 KB
页数:3页
时间:2019-01-06
《算法导论学习报告》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、算法设计与分析第一部分学习内容归纳“计算机算法是以一步接一步的方式来详细描述计算机如何将输入转化为所要求的输岀的过程,或者说,算法是对计算机上执行的计算过程的具体描述。”(参考文献:百度百科)《算法设计与分析》是一门面向设计,在计算机科学屮处于核心地位的课程。这门课程主耍讲授了在计算机应用中经常遇到的问题和求解的方法,分治法、动态规划法、随机算法等设计算法的基本原理、技巧和算法复杂性的分析,以及计算理论简介。第一部分“概论和数学准备”在简单了解了算法的基本概念和复杂性、研究步骤等几个重要知识点后,着重学习了算法的数学基础,包括生成函数、差方方程的求解等,主要适用于求解算法的时间复杂
2、性。“任何可以用计算机求解的问题所需要的计算时间都与其规模有关:问题的规模越小,解题所需的计算时间往往也越短,从而也就比较容易处理(参考文献:《计算机算法设计与分析(第3版)》)而第二部分介绍的算法常用技术之首——分治法就运用了这样的思想。分治法的要领在于Divide(子问题的划分)-Conquer(子问题的求解)-Combine(子问题解的组合)。由于子问题和原问题是同类的,递归的思想在分治法中显得尤其重要,它们经常同时运用在算法设计中。这部分内容从Select(求第k小元)算法,寻找最近点对算法和快速傅立叶变换FFT等实际应用中深化对分治法思想的理解,同时也强调了平衡思想的重要
3、性。第三部分“动态规划”与分治法类似,同样是把问题层层分解成规模越来越小的同类型的子问题。但与分治法不同的是,分治法中的子问题通常是相互独立的,而动态规划法中的了问题很多都是重复的,因此通常采用递推的方法以避免重复计算。然而,也不是所有的情况下都采用递推法,当有人量的子问题无需求解时,更好的方式是采用动态规划法的变形一一备忘录方法。通常需要用到动态规划法求解的问题都具有子问题的高度重复性和最优子结构性质两大特征,这也是我们分析问题和设计算法时的关键点。最长公共子序列LCS问题和最优二分搜索树就是从动态规划法的两个主要特征角度分析问题,进而设计出相应的解决算法的。而这部分内容中的另一
4、个问题一一流水作业调度,则告诉我们采用动态规划时偶尔也得不到高效的算法,我们要学会将已有的知识灵活运用,适当加工。第四部分“集合算法”中首先介绍了一种分析算法复杂度的手法一一平摊分析(AmortizedAnalysis)。与之前我们所接触的算法分析方法即逐一考虑执行每条指令所需的时间复杂度再进行累加的方法不同,平摊分析是对若干条指令从整体角度考虑其吋间复杂度,通过这样的方法获得的时间复杂度更加贴近实际的情况。平摊分析的主要方法有聚集方法,会计方法和势能方法。聚集方法将指令的时间复杂度分类计算再相加;会计方法采用了耗费提前计算的思想;势能方法引入了势函数的概念,从每步操作的数据结构状
5、态和势函数的关系角度分析得出操作的平摊代价。“集合算法”这一部分主要分析了Union(合并集合)和Find(给岀元素所在集合名)这两种运算。从上学期的《数据结构》课程的学习中,我们就已经发现集合和树Z间的关系是密不可分的,我们经常用树结构来表示集合。而2-3树是一种特殊的每个内结点都只有2个或3个儿子的树,广泛的应用于可实现Member(查找)、Insert(插入)、Delete(删除)操作的数据结构一一字典,可实现Insert、Delete、Union和Min(查找最小叶结点)的数据结构可并堆,可实现Tnsert>Delete>Find>Concatenate(保序合并)和Spl
6、it(分裂)的数据结构一一可连接队列等。之前讨论的算法中每一步计算步骤都是确定的,然而第五部分“随机算法”中所讨论的随机化算法允许算法在执行的过程中随机的选择下一个执行步骤。“在许多情况下,当算法在执行过程中面临一个选择时,随机性选择常比最优选择省时。因此随机化算法可在很大程度上降低算法的复杂度。”(参考文献:《计算机算法设计与分析(第3版)》)随机化算法对问题用同一输入算法求解时可能会得到完全不同的效果,这是它的基本特征一一算法在执行时产生真正随机的结果。一般情况下,随即算法分为两大类LasVegas算法和MonteCarlo算法。LasVegas算法不会得到不准确的结果,但有时
7、却会找不到解,这时就需要重复调用算法进行计算。而MonteCarlo算法用來求取问题的准确解。它能保证求得一个截但无法保证其正确性,这是MonteCarlo算法的主要缺点。不过由于每次执行的算法都是独立的,通过反复执行算法可以有效的将发生错误的概率大大降低。另外,对于一个已经有了平均性质较好的确定性算法的问题,通过Sherwood随机化方法可将确定性算法改成随机算法,以解决其在最坏情况下效率不高的问题,提高了算法的性能。随机化算法为很多用确定性算法难以很好的解决的难解
此文档下载收益归作者所有