什么是算法设计与分析

算法分析是计算复杂性理论的重要组成部分,它为算法解决特定计算问题所需的资源提供理论估计。算法分析是确定执行算法所需的时间空间资源量。

为什么算法分析很重要?

  • 预测算法的行为,而无需在特定计算机上实现它。
  • 对算法的效率进行简单的测量比每次底层计算机系统中的某个参数发生变化时实现算法并测试效率要方便得多。
  • 预测算法的确切行为是不可能的。影响因素太多了。
  • 因此,该分析只是一个近似值;它并不完美。
  • 更重要的是,通过分析不同的算法,我们可以对它们进行比较,以确定最适合我们目的的算法。

算法分析的类型:

  1. 最好的情况
  2. 最坏的情况下
  3. 平均情况

算法分析基础知识:

  • 什么是算法以及为什么算法分析很重要?
  • 算法复杂性分析中的渐近表示法和分析(基于输入大小)
  • 算法的最差、平均和最佳情况分析
  • 算法复杂性分析中渐近符号的类型
  • 如何分析循环以进行算法复杂性分析
  • 如何分析递归关系的复杂性
  • 摊销分析简介

渐近符号:

  • 算法分析 | 大O分析
  • Big Oh、Big Omega 和 Big Theta 之间的区别
  • Big-O 分析的示例
  • 大 O 符号和波形符之间的区别
  • 算法分析 | Big – Ω (Big- Omega) 表示法
  • 算法分析 | Big – θ(Big Theta)符号

一些高级主题:

  • 复杂性类的类型 | P、NP、CoNP、NP 硬和 NP 完全
  • 基于比较的排序算法的运行时间复杂度可以小于 N logN 吗?
  • 为什么访问数组元素需要 O(1) 时间?
  • Stacks的push()、pop()、isEmpty()和peek()操作的时间效率是多少?

复杂性证明:

  • 证明团决策问题是 NP 完全问题
  • 图论中的独立集是NP完全的证明
  • 证明由派系和独立集组成的问题是 NP 完全问题
  • 通过泛化证明密集子图是 NP 完全的
  • 证明稀疏图是 NP 完全的