算法和算法分析

1、算法的性质

有穷性、能行性、确定性、终止性、输入/输出。

2、算法的描述

自然语言(容易歧义)

自然语言+数学公式(简单方便,还是歧义)

严格形式描述(比如图灵机模型,非常麻烦,难以阅读)

类似编程语言描述

伪代码的形式

3、6种算法设计模式

  枚举法(枚举全部、找出最优解)、

  贪心法(根据已有信息,先部分求解,再基于部分得到完整的解)、

  分治法(将一个复杂问题化解为很多简单的子问题,对这些子问题分别求解,并组合起来得到复杂问题的解)、

  动态规划法(对于一些复杂的问题,不能一下求解出来。在求解步骤中,不断积累已知信息,然后动态选择已知的最好求解路径)、

  回溯法(通过探索方式求解,当选择一个方向探索时发现无解,就回溯到前面探索的那个路口往其他方向继续探索,直到得出解)、

  分支界限法(回溯法的改良版本,它是在探索的过程中,根据已知的信息如果发现这个选择是错误的,就及早将其删除,用来缩小求解空间,加速问题求解的过程)。

4、算法分析

  算法是在有限的时间里一步步执行某些任务和过程,算法分析的主要任务:分析算法占用的空间资源跟时间资源。

5、大O分析法,

  1、原子操作数量t与算法真实运行时间成正比。

  2、把算法和函数 f(n) 像联系,把原子操作的数量 t 描述为输入大小n的函数 f(n) ,大O分析法。

  3、对于输入相等大小但是不相同的输入,算法的运算速度可能不一样。平均情况分析需要针对于这种情况定义一组输入的概率分布。这个过程需要涉及复杂的概率理论。一般按     照的是算法运行的最坏情况下时间表示输入大小为n的函数。

  4、对数函数涉及微积分的运用

  5、原子值和原子操作,原子操作数量t与算法真实运行时间成正比,而执行操作消耗的时间O(1)常数时间(最低的时间复杂度耗时/耗空间与输入数据大小无关

 

 

 

 

 

 

posted @ 2019-12-09 19:24  石斛  阅读(702)  评论(0编辑  收藏  举报