算法概念、大O记号

摘要:
渐近复杂度:注意时间复杂度随问题大小n增长的总体变化趋势。大O符号:如果有一个正常数c和一个函数f,它将具有:对于任何n˃˃2,T0,当O=O时:在大O符号的意义上:每个函数项的正常数系数可以忽略并等于1。对于任何常数a˃b˃0,当O=0(n^a)时:在大O符号的含义上:多项式中的低阶项可以忽略
  • 算法定义:基于特定的计算类型,旨在解决某一信息处理问题而设计的一个指令序列
    算法需具备以下要素
    • 输入与输出
      输入(input):对所求解问题特定实例的描述
      输出(output):经计算和处理之后得到的信息,即针对输入问题实例的答案
    • 确定性和可行性:算法应可描述为由若干语义明确的基本操作组成的指令序列,且每一基本操作在对应的计算模型中均可兑现。
    • 有穷性:任意算法都应在执行有限次基本操作之后终止并给出输出
    • 正确性:算法所给的输出应该能够符合由问题本身在事先确定的条件
    • 鲁棒性:例如处理算法输入的退化
    • 重用性:算法模式可推广并适用于不同类型基本元素的特性
  • 证明算法的有穷性和正确性:从适当的角度审视整个计算过程,找出其所具有的某种不变性和单调性
    • 单调性:问题的有效规模会随着算法的推进不断递减
    • 不变形:不仅应在算法初始状态下自然满足,而且应与最终的正确性相呼应----当问题的规模缩减到0时,不变性应随即等价于正确性
    • 冒泡排序的正确性证明:(不变性)经过k趟扫描交换后,最大的前k个元素必然就位;(有穷性)经过k趟扫描交换后,待求解问题的有效规模将缩减至n-k。
  • 复杂度度量:
    • 时间复杂度T(n) :特定算法处理规模为n的问题所需的时间,由于n相同,但T(n)不同,---->简化为:
                    在规模为n的所有输入中选择时间最长者作为T(n),并以T(n)度量算法的时间复杂度。
    • 渐进复杂度:注重时间复杂度随问题规模n的增长的总体变化趋势
      • 大O记号(T(n)的渐进上界):
                         若存在正的常数c和函数f(n),使的对任何n>>2都有:  T(n) <= c  * f(n),即认为在n足够大之后,f(n)给出了T(n)增长速度的一个渐进上界,记为:T(n) = O(  f(n) )
      • 大O记号性质:
        • 对于任一常数 c > 0,  有O(  f(n) ) = O( c * f(n) ):在大O记号意义下:函数各项正的常系数可以忽略并等同于1
        • 对于任意常数 a > b > 0,有 O( n ^  a  + n ^ b ) = O( n ^ a ):在大O记号意义下:多项式中的低次项均可忽略

免责声明:文章转载自《算法概念、大O记号》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Windows中安装Davinci批量修改指定目录下的文件名和文件内容下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

AI专家警告:GPT-3令人赞叹,但缺乏透明度

  AI专家警告:GPT-3令人赞叹,但缺乏透明度   让算法像人一样写作,是人工智能研究实验室OpenAI多年来一直追寻的梦想。其最新研究成果是语言生成算法模型GPT-3,现已被用于生成让人难以分辨的伪文章,其所写博客骗过了黑客新闻(Hacker News)的发布者,甚至成为网站热门文章。   那个帖子是这样的:“要想把事情做好,也许我们根本不需要想太多...

java 策略模式

定义:定义一组算法,将每个算法都封装起来,并且使他们之间可以互换。 类型:行为类模式 类图:        策略模式是对算法的封装,把一系列的算法分别封装到对应的类中,并且这些类实现相同的接口,相互之间可以替换。在前面说过的行为类模式中,有一种模式也是关注对算法的封装——模版方法模式,对照类图可以看到,策略模式与模版方法模式的区别仅仅是多了一个单独的封装...

常见的聚类算法

常见的聚类算法 1. K-Means(K均值)聚类 算法步骤: (1) 首先我们选择一些类/组,并随机初始化它们各自的中心点。中心点是与每个数据点向量长度相同的位置。这需要我们提前预知类的数量(即中心点的数量)。 (2) 计算每个数据点到中心点的距离,数据点距离哪个中心点最近就划分到哪一类中。 (3) 计算每一类中中心点作为新的中心点。 (4) 重复以上步...

算法训练 字符删除

算法训练 字符删除 时间限制:1.0s 内存限制:512.0MB 问题描述编写一个程序,先输入一个字符串str(长度不超过20),再输入单独的一个字符ch,然后程序会把字符串str当中出现的所有的ch字符都删掉,从而得到一个新的字符串str2,然后把这个字符串打印出来。输入格式:输入有两行,第一行是一个字符串(内部没有空格),第二行是一个字...

leetcode常规算法题复盘(第七期)——区间和的个数(附带排序算法归纳)

题目原文   327. 区间和的个数   给定一个整数数组 nums,返回区间和在 [lower, upper] 之间的个数,包含 lower 和 upper。区间和 S(i, j) 表示在 nums 中,位置从 i 到 j 的元素之和,包含 i 和 j (i ≤ j)。 说明:最直观的算法复杂度是 O(n2) ,请在此基础上优化你的算法。 示例: 输入...

实际体验华为云AI : ModelArts

国庆前看到了博客园官方博客发布的一篇博客: 学AI有奖:博客园&华为云AI有奖训练营开战啦 本着对AI这种火热的话题,以及华为云博客园联名公仔(次要),我决定参与这个活动。 现在华为云开始全面发力,追赶阿里云,从华为云的表现上来说应该是。推出了各种优惠活动,和各种产品,其中就包括华为云的AI服务: ModelArts。 ModelArts ,模型艺...