算法设计:1.big idea、loop-invariant、RAM


一、时间复杂度T()

1.大思想 Big idea:渐进增长性

  • 忽略具体的机器数据
  • 观察 O ( n ) n O(n),n \to \infty 的函数的增长趋势,即渐进增长性分析 asymptotic analysis
    O(n):简化,选取最优影响力的参数。比如 O ( 3 n 3 + 90 n 2 5 n + 520 ) O(3n^3+90n^2-5n+520) 就可以简化为 O ( n 3 ) O(n^3)

2.复杂度

  • 最糟 worst-case time
  • 平均 average-case time
  • 最好 best-case time

3.特性

  • 输入特征
  • 输入规模

二、循环不变式 loop-invariant

  • 作用:证明算法正确
  • 阶段:
    • 初始化 initialization
    • 维持 maintenance
    • 结束 termination
  • PS:很像数学证明的归纳证明

三、RAM模型

  • 作用:评价算法好坏的度量
  • RAM:random-access machine(重点它是machine机器)
    • 无并发:指令的执行是一个接一个,没有并发。
    • 原子性:每个指令都是一个原子操作,比如算术运算、逻辑运算、数据移动、控制操作
    • 常量时间:每个指令花费时间一样
    • 大内存:内存足够大
  • 使用RAM模型:数基本操作的个数
发布了461 篇原创文章 · 获赞 183 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/sandalphon4869/article/details/104512606
RAM
今日推荐