算法分析基础学习笔记
来源:互联网 发布:中国数据分析行业协会 编辑:程序博客网 时间:2024/06/05 18:27
算法分析基础学习笔记
首先恩,复杂度是个神马东西(o゚▽゚)o
复杂度分为时间复杂度和空间复杂度。 ̄ω ̄= 复杂度这个玩意是用来表征某段程序的运行效率的。程序的运行效率的具体表现形式又分为该程序运行时解决问题所用时间多少和所用内存大小。其中,解决问题所用时间多少的数量级被抽象为时间复杂度,一般来说,时间复杂度越小越好,所代表的的时间需求就越少;解决问题所用的内存多少的数量级被抽象为空间复杂度,且空间复杂度越小越好,所代表的空间需求就越小。
来谈谈令人色变的Ο和Ω符号,恩,还有Θ符(`・ω・´)
Ο和Ω这两符号是一对天生的好基友。它们都是用来近似地表征某段程序的复杂度的。
我们先来看一下Ο,Ω,Θ,o的数学定义。
(摘自《数据结构与算法分析》一书)
定义:如果存在正常数c和n0 使得当 N >=n0 时T(N)<=cf(N),则记为T(N)=O(f(N))。
定义:如果存在正常数c和n0 使得当 N >=n0 时T(N)>=cg(N),则记为T(N)=Ω(g(N))。
T(N)=Θ(h(N)) 当且仅当 T(N)=O(h(N)) 且 T(N)=Ω(h(N))。
若 T(N)=O(p(N)) 且 T(N)!=Θ(p(N)) 则记 T(N)=o(p(N))。
在数学上,大O是用另一个(通常更简单的)函数来描述一个函数数量级的渐近上界。在这里,我们的实际算法时间复杂度为T(N),即T(N)为对算法实际运行时间的一个量度。第一个定义是说,最后总存在一个点n0,在它以后cf(N)至少与T(N)一样大。若忽略常数因子c,f(N)至少与T(N)一样大。这就是说,f(N)总会大于或等于T(N),这样,f(N)就形成了一个对T(N)的渐进上界,此时称O(f(N))为算法的最坏情况。如下图。
类似的,我们可以从第二个定义了解到g(N)为T(N)的渐进下界,此时称此时称Ω(g(N))为算法的最佳情况。如下图。
而Θ符号就是说算法的时间复杂度恰好能用函数h(N)表征,即T(N)=O(h(N)) 和 T(N)=Ω(h(N)) 同时满足,这样,上下界就重合为一条确定的曲线,从而夹在上下界之间的T(N)就只能为这条曲线了。
然后o符号是说p(N)应该小于T(N)而不能达到T(N)。如下图。
- 算法分析基础学习笔记
- 算法分析与设计基础 学习笔记 第一章
- 《算法设计与分析基础》学习笔记-0-写在前面
- 算法设计与分析基础_学习笔记
- 算法学习笔记:关联分析
- 算法学习笔记(一)-算法基础
- 《算法导论》学习笔记—算法基础
- 算法设计与分析基础学习一
- 算法设计与分析基础学习一
- 基础算法学习笔记—归并排序
- 基础算法学习笔记—快速排序
- BAT面试算法基础学习笔记
- 数据结构与算法分析_学习笔记
- 数据结构与算法分析学习笔记
- 数据结构学习笔记(1)算法分析
- 数据结构学习笔记1(算法分析)
- 数据结构与算法分析 学习笔记
- 数据结构与算法分析学习笔记---第一章
- Gson解析Json数据(二)
- 通过Headless Chrome执行Selenium脚本
- 安装Composer
- day11-java总结
- cocoapods安装中遇到的问题
- 算法分析基础学习笔记
- 线段树——区间合并——hud1540
- 对HTTPS的理解
- 【贪心+堆】Codeforces725D[Contest Balloons]题解
- c++ error thread
- 华为机试题
- 解决idea出现cannot resolve symbol
- WordPress博客备份
- day12-java&oracle总结