美文网首页
算法分析

算法分析

作者: Azur_wxj | 来源:发表于2018-01-24 23:10 被阅读19次
    1. 算法定义:
      是指在解决问题时,按照某种机械步骤一定可以得到问题结果的处理过程。(解决问题的方法和步骤)

    2. 算法三要素:
      操作、控制结构、数据结构

    3. 常见控制结构:
      顺序、循环、选择

    4. 算法基本特征:
      有穷性、确定性、可行性、0个或多个输入、一个或多个输出

    5. 算法的基本性质:
      目的性、分步性、有序性、有限性、操作性

    6. 算法质量指标:
      正确性、可读性、稳健性、高效率和低存储量

    7. 算法评价标准:
      时间耗费、空间耗费、可读性

    8. 常见时间复杂度排序:
      O(1) < O(lgn) < O(n) < O(nlgn) < O(n2) < O(n3) < O(2n) < O(n!) < O(nn)

    9. 时间复杂度
      算法的时间复杂度是一个函数,它 定性 描述了该算法的运行时间。

    10. 辗转相除法

      gcd(x, y):
          if (y == 0)  
              return x
          else  
              return gcd(y, x % y)
      

      时间复杂度:O(lgn)

    11. 汉诺塔问题:
      时间的递推公式:T(n)=2T(n-1)+1,时间复杂度为 O(2n)

      • 每个迭代算法原则上总可以转换为与之等价的递归算法
      • 并不是每个递归算法都可以转化为与之等价的循环结构算法
      • 递归是一种比循环更强、更好用的实现“重复操作”的机制。
    12. 递归设计要点:

      • 分析问题,找递归关系
      • 设置边界、控制
    13. 迭代算法的步骤:

      • 确定迭代模型
      • 根据迭代模型,建立迭代关系式
      • 对迭代过程进行控制,确定什么时候结束迭代
    14. 枚举法(穷举法)步骤:
      根据问题中的条件将可能的情况一一列举,逐一尝试找出满足问题的解。从两个方面进行:1、找出枚举范围。2、找出约束条件

    15. 分治算法的步骤:
      是将整个问题分解为若干个小问题后分而治之。分治法在每一层递归上都有3个步骤:

      • 分解:分解为若干个相互独立、与原问题形式相同的子问题
      • 解决:直到分解为容易解决的小问题,就解决之
      • 合并:将已求解的各个子问题的解合并为原问题的解。
    16. 贪婪算法:(某状态以后的过程不影响以前状态,无后效性)

      • 从问题的某一个初始解触发逐步逼近给定目标,每一步都作一个不可回溯的决策,尽可能求得最好的解
      • 达到某一步不需要再继续前进时,算法停止

      它可用于求问题最优解,但前提是“局部最优策略能产生全局最优解”。适用范围比较小,如果应用不当,则不能保证求得全局最优解

    17. 动态规划:(多阶段最优化决策问题的过程)

      • 找出最优解性质,并刻画结构特征
      • 递归的定义最优值
      • 自底向上的方式计算出最优值
      • 根据计算最优值的信息,构造最优解
    18. 子集树,遍历耗时 O(2n)

    19. 排列树,遍历耗时 O(n !)

    20. 迭代算法:

      • 递推法(正推)
      • 倒推法(倒推)
    21. 全面逐一尝试比较的算法有:

      • 枚举法
      • 蛮力法
      • 递归回溯法
    22. 隐式图搜索策略:

      • 分支界限法(背包问题)
      • 回溯法(8皇后)
    23. 图的搜索算法:

      • 显式图:
        • 穷举搜索:广度优先、深度优先
      • 隐式图:
        • 穷举搜索:回溯算法、分支算法
      • 图的启发式算法:分支界限法
    24. 递归比循环:代码量小、占用空间大、适用范围广、执行时间要长

    相关文章

      网友评论

          本文标题:算法分析

          本文链接:https://www.haomeiwen.com/subject/rgiuaxtx.html