• 算法概念、大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记号意义下:多项式中的低次项均可忽略
  • 相关阅读:
    [自动化]基于kolla部署的openstack自动化巡检生成xlsx报告
    【转】Bash函数的参数和返回值
    Modal 中操作 dataSet 数据
    小知识:vi 查找如何不区分大小写
    java 向上、向下递归删除多级空目录(实用)
    iframe标签 常见用法
    【转】App Extension
    python 下载图片,音频。视频文件
    Tomcat 配置成Windows服务
    《娄向鹏看世界农业》笔记
  • 原文地址:https://www.cnblogs.com/joh-n-zhang/p/5759226.html
Copyright © 2020-2023  润新知