zoukankan      html  css  js  c++  java
  • 算法基础知识(算法导论)

    1、定义

    算法就是一系列的计算步骤,用来将输入数据转换为输出结果。

    2、算法的共同特征

    1)有很多候选的解决方案,其中大部分不是我们所需要的。

    2)有着实际的应用。如最短路。

    3、章节框架

    1)伪代码描述  2)证明算法正确性(循环不变式)  3)时间效率分析

    3.1 循环不变式

    有三个性质:

    1)初始化:它在循环的第一轮迭代开始之前,应该是正确的。

    2)保持:如果在循环的某一次迭代开始之前它是正确的,那么,在下次迭代开始之前,它也应该保持正确。

    3)终止:当循环结束时,不变式给了我们一个有用的性质,它有助于表明算法是正确的。

    3.2 算法的时间分析

    1. 算法的运行时间:指在特定输入时,所执行的基本操作数(或步数)
    2. 一般我们考察算法的 最坏情况运行时间:
      • 一个算法的最坏情况运行时间是在任何输入下运行时间的一个上界。即能确保算法的运行时间不会比这一时间更长。我们不需要对运行时间做某种复杂的猜测,并期望它不会变得更坏了。
      • 对于某些算法来说,最坏情况出现得相当频繁。例如要找的信息不在数据库。
      • 大致上看来,平均情况与最坏情况一样差。例如插入排序的平均情况运行时间和最坏情况下的运行时间都是输入规模n的一个二次函数
    3. 各种渐进符号:
      • 渐进确界:Θ。Θ(g(n)) = {f(n): 存在正常数c1,c2,n0,使对所有的n≥n0,有0 ≤ c1g(n) ≤ f(n) ≤ c2g(n) }。即对任意一个函数,存在正常数c1,c2,当n充分大时,f(n)能被夹在c1g(n)和c2g(n)之间,则f(n)属于集合Θ(g(n)).
      • 渐进下界:Ω。Ω(g(n)) = {f(n): 存在正常数c和n0,使对所有的n≥n0,有0 ≤ cg(n) ≤ f(n) }
      • 渐进上界:O。O(g(n)) = {f(n): 存在正常数c和n0,使对所有的n≥n0,有0≤ f(n) ≤ cg(n) }
      • 非渐进紧确的上界:ο。o(g(n)) = {f(n): 对任意正常数c,存在正常数n0,使对所有的n≥n0,有0≤ f(n) ≤ cg(n) }
      • 非渐进紧确的下界:ω。ω(g(n)) = {f(n): 对任意正常数c,存在正常数n0,使对所有的n≥n0,有0 ≤ cg(n) ≤<f(n) }

      

  • 相关阅读:
    集合的整理
    js中用tagname和id获取元素的3种方法
    浏览器的工作原理
    在浏览器中输入URL按下回车键后发生了什么
    浏览器内核、渲染引擎、js引擎
    浏览器的重绘、回流及网页优化
    SQL SERVER大话存储结构(1)
    SQL SERVER大话存储结构(2)
    SQL SERVER大话存储结构(3)
    基于binlog来分析mysql的行记录修改情况(python脚本分析)
  • 原文地址:https://www.cnblogs.com/hf-cherish/p/3476169.html
Copyright © 2011-2022 走看看