随笔分类 - 算法导论
摘要:在前面的章节中,曾经接触过分治策略,在分治策略中,要递归地解决难题,经历三个步骤: 分解(Divide) 将问题划分为一些子问题,子问题的形式与原问题相同,只是规模更小。 解决(Conquer)递归地求解出子问题,如果问题足够小,则停止递归,直接求解。 合并(Combine)将子问题的解组合成原问题
阅读全文
摘要:本章的课后题看一下即可,比较平凡。 3.1渐近记号 引用一下别人的答案,非常感谢: 原文地址:http://www.cnblogs.com/timebug/archive/2010/03/25/1694286.html |概念回顾| 当输入规模大到使只有运行时间的增长量级有关时,就使在研究算法的渐进效率。 几个重要渐进记号的定义: Θ(g(n))={ f(n): 存在正常数c1,c2和n0,使对...
阅读全文
摘要:好长时间了,继续算法导论。当输入规模足够大时,并不计算精确的运行时间,倍增常量和低阶项被舍去。我们要研究的是算法的渐近效率,即在输入规模无限量时,在极限中,算法的运行时间如何随着输入规模的变大而增加。通常,渐近的更有效的某个算法除对很小得到输入外都是最好的选择。3.1渐近符号用渐近符号来刻画算法的运...
阅读全文
摘要:第一章思考题1-1(运行时间的比较)确定时间t内求解的问题的最大规模。上面是网上提供的答案。注意点:1、最左边一列的是关于n的增长情况描述,值得记住的是这些增长的排列顺序,这是非常有用的,啊,数分学好了会很容易;2、注意1s内能处理的以n为增长量级的规模是10的6次方,记住这个结果可以推导出其他增长...
阅读全文
摘要:我们可以使用的算法设计技术有很多。插入排序用的是增量方法,即在已经排好的数组中不断加入新的元素。下面考虑一种被称为“分治法”的设计方法。2.3.1分治法分治法的思想:将原问题分解为几个规模较小但是类似于原问题的子问题,递归地求解这些子问题,然后合并这些子问题的解来建立原问题的解。分治模式在每层递归时...
阅读全文
摘要:2.2分析算法分析算法的结果意味着预测算法需要的资源。虽然有时候关心内存、通讯或者计算机硬件,但是通常我们想度量的是时间。在分析算法之前,要有一个实现技术的模型,包括描述所用资源及其代价的模型。我们假定一种通用的单处理器计算模型—随机访问机(random-access machine,RAM)来作为...
阅读全文
摘要:2.1插入排序伪代码与真代码的区别在于,伪代码我们使用最简洁、最清晰的表示方法来说明给定的算法。这样的原则下,在伪代码中就会出现英语。插入排序的特点:1、少量元素时,是一种有效的算法;2、直观想象:按顺序排扑克牌;3、是一种原址排序算法,即在同一个数组中完成排序工作,注意:在任何时刻,已经排好序的部...
阅读全文
摘要:第一章 算法在计算中的作用一、什么是算法?为什么算法值得研究?相对于计算机中使用的其他技术来说算法的作用是什么?算法就是任何良定义的计算过程,该过程取某个值或者值的集合作为输入并产生某个值或者值的集合作为输出。这样算法就是把输入转换成输出的计算步骤的一个序列。若对每个输入实例算法都以正确的输出停机,...
阅读全文
摘要:以前一直想读一遍《算法导论》,不过由于自己犯懒一直没有开始。前两天报一个实习的测试,小算法都不会写,感觉比较糟糕,意识到应该开始读算法了。作为数学系的人,虽然没有学过数据结构和算法,不过想来好好读不会很难;加上自己对于语言的基础太差,有不忍直视的“码力”,学算法正好又能顺便用一遍c++,一举两得。那...
阅读全文

浙公网安备 33010602011771号