算法学习
goodluckcwl
有价值、有影响力的研究
展开
-
算法学习(一)绪论
算法问题求解步骤: 理解问题:试着手工处理一些小规模的例子,考虑一些特殊的情况;严格确定需要算法处理的实例范围 了解设备的性能:顺序算法or并行算法 在精确解法和近似解法之间做出选择 算法的设计技术 确定适当的数据结构 算法的描述 算法的正确性证明:算法的正确性证明一般使用数学归纳法 算法的分析:时间效率和空间效率。算法应该具有的另一个特性是简单性、一般性。 为算法写代码 算法的几类基本问...原创 2018-03-09 17:27:56 · 211 阅读 · 0 评论 -
算法学习(九)贪婪技术
贪婪法通过一系列步骤来构造问题的解,每一步对目前构造的部分解做一个扩展,直到获得问题的完整解为止。所作的每一步必须: 可行 局部最优 不可取消 贪婪法的困难之处在于如何证明某一贪婪算法能获得最优解。常用的证明是使用数学归纳法。 第二个证明方法是证明在接近问题目标的过程中,贪婪法每一步的选择都不比其他任何算法差。 第三个证明是基于算法的输出。 贪婪技术背后复杂的理论是拟阵。 Pr...原创 2017-02-14 10:33:47 · 1492 阅读 · 0 评论 -
算法学习(八)动态规划
动态规划 如果问题是由交叠的子问题组成,我们就可以用动态规划技术解决它。与其对子问题一次又一次地求解,还不如对每个子问题只求解一次并记录在表中,这样就可以从表格中得出原问题的解。 最优化法则:最优化问题任一实例的解都是由其较小实例的解构成的。这个法则在大多数情况下是成立的,在应用动态规划算法时,要检查该法则是否成立。 基本例子 背包问题和记忆功能 经典动态规划算法是自底向上的,用...原创 2017-02-14 10:17:51 · 313 阅读 · 0 评论 -
算法导论学习笔记(二)排序和顺序统计量
总结各种排序算法,时间复杂度与空间复杂度,优缺点等。 堆排序 堆排序的时间复杂度是θ(nlogn)θ(nlogn)\theta(n\log n),堆排序具有空间原址性。 堆是一个数组,可以看成一棵近似的完全二叉树。除了最底层之外,该树完全填满,给定一个节点i,可以很容易地计算其父节点为floor(i/2),左子节点为2i,右子节点为2i+1. 最大堆是指堆中最大元素存在根节点。 建...原创 2018-03-25 19:29:29 · 376 阅读 · 0 评论