算法导论<2、渐近符号、递归及解法>

1、渐记符号、函数、运行时间:

渐记符号实际上应用于函数;用渐记符号来描述算法的运行时间;

算法导论<2、渐近符号、递归及解法>


算法导论<2、渐近符号、递归及解法>

算法导论<2、渐近符号、递归及解法>


算法导论<2、渐近符号、递归及解法>


算法导论<2、渐近符号、递归及解法>

2、等式和不等式中的渐近符号

函数中匿名函数的数目可以理解为等于渐近记号出现的次数。

算法导论<2、渐近符号、递归及解法>


算法导论<2、渐近符号、递归及解法>


算法导论<2、渐近符号、递归及解法>


算法导论<2、渐近符号、递归及解法>


算法导论<2、渐近符号、递归及解法>

3、标准记号与常用函数

  • 3.1、单调性;
  • 3.2、向上取整和向下取整;
  • 3.3、横运算:取模运算;
  • 3.4、多项式:有界性;
  • 3.5、指数、对数、阶乘;
  • 3.6、多重函数、多重对数函数、
  • 3.7、斐波那契数;

4.递归式:一组等式或不等式

它所描述的函数是在更小的输入下该函数的值来定义的。例如 归并排序Merge-Sort 的最坏情况运行时间 T(n)可以用以下递归式来表示:

算法导论<2、渐近符号、递归及解法>

递归式的解法:代换法、递归树方法、主方法。

  • 代入法(Substitution method)


步骤:

(1)、先猜测解的形式(靠经验);

(2)、用数学归纳法求出解中的常数,证明该猜测的正确性(若出问题,一般应该是假设不够强)。

Eg:

算法导论<2、渐近符号、递归及解法>

注:避免陷阱:


算法导论<2、渐近符号、递归及解法>

  •  递归树方法(Recursion-tree method)


用途:画一个递归树是一种得到好猜测的直接方法。
分析:在递归树中,每一个结点表示一个单一子问题的代价,子问题对应某次递归函数调用。将递归树中每一层内的代价
相加得到一个每层代价的集合,再将每层的代价相加得到递归式所有层次的总代价。


  •  主方法(Master method) 

算法导论<2、渐近符号、递归及解法>
算法导论<2、渐近符号、递归及解法>
Eg:
算法导论<2、渐近符号、递归及解法>