• 算法设计与分析总结


    第一章 算法引论

    算法分析的目的:估算该算法所需的内存空间和运行时间。

    分析算法复杂度的目的:用以比较同一问题的不同算法;时间和空间的增长率作为衡量的标准。

    算法是对解决这个问题的方法和步骤的描述。

    算法的基本特征:有穷性、确定性、可行性、0到多个输入、1到多个输出。

    一个好的算法应具有正确性、可读性、健壮性和高效性和低存储量需求等特征。

    第二章 递归与分治策略

    递归的概念:直接或者间接的调用自身的算法。

    递归函数:用函数自身给出定义的函数。

    构成递归式的两个基本条件:递归的边界条件和递归的定义(递归公式)。

    分治法的基本思想:将一个规模为n的问题分解为k个规模较小的子问题,这些子问题相互独立且与原问题相同。递归的解决这些子问题,然后将各个子问题的解合并得到原问题的解。

    第三章 动态规划

    简述动态规划算法解题的基本步骤

    1、找出最优解的性质,并刻画其结构特征;

    2、递归的定义最优值;

    3、用自底向上的方法计算最优值;

    4、根据计算最优值时得到的信息,构造最优解;

    简述动态规划和分治法的异同。

    相同点:动态规划与分治法类似,其基本思想也是将待求解的问题分解成若干子问题,然后从这些子问题的解得到原问题的解。

    不同点:分治法的子问题互相独立且与原问题相同;动态规划求解的问题,经分解得到的子问题,往往不是相互独立的,就是各个子问题包含公共的子问题。

    动态规划的基本要素

    1、最优子结构

    2、重叠子问题

    简述备忘录方法与动态规划的异同

    相同点:备忘录方法和动态规划都有相同的控制结构。

    不同点:备忘录方法的递归方式是自顶向下,动态规划则是自底向上;备忘录方法通过建立备忘录避免了相同子问题的重复求解。

    快速排序算法的性能取决于划分的对称性。

    第四章 贪心算法

    贪心算法的基本条件

    1、贪心的选择性质

    2、最优子结构性质

    简述动态规划和贪心算法的异同

    相同点:都有最有子结构性质。

    不同点:贪心具有贪心选择性质(所求问题的整体最优解可以通过一系列局部最优的选择,即贪心选择来到达);动态规划通常以自底向上的方式解各个子问题,贪心算法通常以自顶向下的方式进行。

    简述Prim算法和Kruskal算法的异同

    相同点:都可以运用贪心算法构造最小生成树,都利用了最小生成树的性质。

    不同点:Prim算法通过扩展连通子集来进行贪心选择;Krusikal算法通过选择具有最小权的边的集合来进行贪心选择,在选择时,进行连通操作以便生成树。

    第五章 回溯法

    回溯解题的步骤

    1、针对所给问题定义问题的解空间。

    2、确定易于搜索的解空间结构。

    3、以深度优先方式搜索解空间,并在搜索过程中用剪枝函数避免无效的搜索。

    回溯法搜索解空间树时常用的两种剪枝函数为约束函数和界限函数。

    第六章 分支界限法

    简述分支界限法的搜索策略

    1、以宽度优先和以最小耗费(最大效益)优先的方式搜索问题的解空间树。

    2、每个活节点只有一次成为扩展节点

    3、活节点成为扩展节点就一次性生成其所有的子节点。

    4、儿子节点中,导致不可行节点和非最优节点的节点被舍弃,其余节点加入到活节点表中,当前活节点从表中删除。

    5、从活节点中取出下一个节点成为当前扩展节点,并重复上述节点扩展过程。一直搜索到解或者活节点表为空为止。

    分支界限法:队列式分支界限法和优先队列式分支界限法。

    活节点的组织形式有:最大堆和最小堆。

    简述分支界限法和回溯法的异同

    相同点:都是对子集树和排列树的搜索。

    不同点:求解目标不同,分支界限法的求解目标是找出满足约束条件的也一个解,或是在满足约束的解中找出某种意义的最优解;回溯法找到的是解空间满足约束条件的所有解。搜索策略不同:分支界限法以广度优先搜索或以最小花费优先的方式进行搜索;回溯法以深度优先搜索的方式进行搜索。

    第七章 概率算法

    数值概率算法求近似解,精度和时间成正比。

    蒙特卡罗算法求的是准确解,但未必正确,正确率和时间成正比。

    拉斯维加斯算法不会得到不正确解,得到正确解的概率和时间成正比。

    舍伍德算法总能得到解,并且解一定是正确的。最坏时间复杂度和平均时间复杂度差距很大时,可用舍伍德算法进行平均。

    第八章 NP完全性理论

    P类问题:P={L|L是一个能在多项式时间内被一台DTM所接受的语言}。由此语言定义的问题。

    NP类问题:P={L|L是一个能在多项式时间内被一台NDTM所接受的语言}。由此语言定义的问题。

    NPC问题:(1)L属于NP;(2)对于所有L'属于NP有L'正无穷PL;由此语言定义的问题。

  • 相关阅读:
    Linux基础知识
    c语言依赖倒转
    ios的认识
    ios数据的基本类型和流程控制
    JavaScript 创建 自定义对象
    《大道至简》读后感
    总结
    字符串转换成整型并求和
    《大道之简》第二章
    SQL Server 2008 数据库自动备份
  • 原文地址:https://www.cnblogs.com/xia520/p/10226897.html
Copyright © 2020-2023  润新知