算法分析复习笔记(一):书籍《计算机算法基础》余祥宣版

算法就是一组有穷的规则,它规定了解决某一特定类型问题的一系列运算。

算法是一系列解决问题的明确指令,也就是说,对于符合一定规范的输入,能够在有限时间内获得要求的输出。

算法的基本特性:

  1. 有穷性:必须在有限步骤之后终止
  2. 确定性:每个步骤必须精确定义,无歧义
  3. 输入:0个或多个输入(输入是从特定的对象集合中取出)
  4. 输出:一个或多个输出
  5. 可行性:它的所有运算都是基本的运算,理论上可用纸和笔在有限时间内精确完成

算法学习的基本内容

  1. 设计算法:基本设计策略
  2. 表示算法:用语言表示出来
  3. 确认算法:合法输入后能够输出正确答案
  4. 分析算法:占用CPU的时间和占用存储器的空间
  5. 测试程序:调试

为什么分析算法?

       可以知道该算法的好坏、促进设计出更好算法。

运行时间的度量单位:

  1. 找出算法中最重要的操作(对总运行时间贡献最大的操作)--基本操作
  2. 然后计算在该算法中基本操作运行的次数

计算时间的渐进表示

       n:问题的规模   f(n):算法的计算时间    g(n):形式简单的函数

       以下三种符号表示g(n)对f(n)的渐进:

  1. O:如果存在两个正常数c和n0,对于所有的n≥ n0,有|f(n)|≤ c| g(n) |,则记做f(n)=O(g(n))--->g(n)是f(n)的一个上界函数
  2. Ω:如果存在两个正常数c和n0,对于所有的n≥ n0,有|f(n)|≥ c | g(n) |,则记做f(n) =Ω(g(n)).
  3. :如果存在正常数c1, c2和n0,对于所有的n≥n0,有c1 |g(n)|≤|f(n)|≤c2 |g(n)|,则记做f(n)= (g(n)).

以上三个符号具有以下性质:

  1. 传递性:比如:f (n)= O(g(n)),g(n)=O(h(n)) Þ f (n)=O(h(n))
  2. 反身性:比如:f(n)=O(f(n))
  3. 对称性:f(n)= (g(n))   <=>   g(n)= (f(n))   只有这一条
  4. 互对称性:f(n)=O(g(n))   <=>   g(n)=Ω(f(n))  只有这一条

                 

                 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章