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)

Paste_Image.png
Paste_Image.png
Paste_Image.png
Paste_Image.png
Paste_Image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 算法复杂度 时间复杂度 空间复杂度 什么是时间复杂度 算法执行时间需通过依据该算法编制的程序在计算机上运行时所消耗...
    KODIE阅读 8,560评论 0 9
  • 通常,对于一个给定的算法,我们要做 两项分析。第一是从数学上证明算法的正确性,这一步主要用到形式化证明的方法及相关...
    西域小码阅读 5,899评论 0 11
  • 算法和数据结构 [TOC] 算法 函数的增长 渐近记号 用来描述算法渐近运行时间的记号,根据定义域为自然数集$N=...
    wxainn阅读 4,796评论 0 0
  • 镜头的世界里多了一份温柔 厦门,今天的天气看起来,并不是很好,有点压抑,闷热!坐在办公室的位置上,习惯性的开始一天...
    浅草风铃阅读 2,271评论 1 2
  • 怎么才能忘了你 认真的
    北七海阅读 1,360评论 0 0

友情链接更多精彩内容