Algorithm #1 week

by Mrs. Qu


Paste_Image.png

已有的排序算法:考察元素比较次数
插入排序、冒泡排序:最坏和平均状况下都为O(n2)
快速排序:最坏状况为O(n2),平均状况下为O(nlogn)
堆排序、二分归并排序:最坏和平均状况下都为O(nlogn)

好的算法
提高求解问题的效率
节省存储空间
需要解决的问题
问题→寻找求解算法算法设计技术
算法→算法的评价 算法分析方法
算法类→问题复杂度的评价问题复杂性分析
问题类→能够求解的边界计算复杂性理论

理论上的可计算:可计算理论

研究目标

确定什么问题是可计算的,即存在求解算法

合理的计算模型

已有的:递归函数、Turing机、λ演算、Post系统等
条件:计算一个函数只要有限条指令
每条指令可以由模型中的有限个计算步骤完成
指令执行的过程是确定的
核心论题:Church-Turing论题
如果一个函数在某个合理的计算模型上可计算,那么它在
Turing机上也是可计算的
可计算性是不依赖于计算模型的客观性质

  • 多项式时间的算法
    时间复杂度函数为O(p(n))的算法,其中p(n)是n的多项式
    不是多项式时间的算法

  • 不存在多项式 p(n)使得该算法的时间复杂度为O(p(n)),包含指数时间甚至更高阶的算法

  • 多项式时间可解的问题P
    存在着解P 的多项式时间的算法

  • 难解的问题P
    不存在解P 的多项式时间的算法
    实际上可计算的问题
    多项式时间可解的问题

函数的渐进的界

定义1.1 设 f 和g是定义域为自然数集 N上的函数.
(1) 若存在正数c 和n0使得对一切n ≥ n0有0 ≤ f(n) ≤ cg(n) 成立, 则称f(n) 的渐近的上界是 g(n),记作f (n) = O(g(n)).
(2)若存在正数 c 和 n0,使得对一切 n ≥ n0有 0 ≤ cg(n) ≤ f(n)成立, 则称f(n)的渐近的下界是g(n),记作f (n) = Ω(g(n)).
(3) 若对于任意正数c 都存在n0,使得当n ≥ n0 时有0 ≤ f(n)< cg(n) 成立, 则记作f(n)= o(g(n)).
(4) 若对于任意正数c 都存在n0,使得当n ≥ n0 时有0 ≤cg(n) < f(n)成立, 则记作f(n)=ω (g(n)).
(5) 若f (n) = O(g(n)) 且f (n) = Ω(g(n)), 则记作f (n)=Θ(g(n)).
例f(n)=n2+n,则
f(n)=O(n2), f(n)=O(n3),
f(n)=o(n3),
f(n)=Θ(n2)

Algorithm #1 week_第1张图片
Paste_Image.png
Algorithm #1 week_第2张图片
Paste_Image.png
Algorithm #1 week_第3张图片
Paste_Image.png
Algorithm #1 week_第4张图片
Paste_Image.png
Algorithm #1 week_第5张图片
Paste_Image.png

你可能感兴趣的:(Algorithm #1 week)