两个基础
算法设计中的一项重要的技术是缩小允许的实例的集合,直到找到正确有效的算法为止。
要利用好已有的算法,您必须学会基本过程中的“抽象地”描述问题。根据定义好的结构和算法对应用程序进行建模是实现解决方案的最重要的一步。
RAM 和 大O
RAM计算模型
将机器抽象为一个简单的机器,在这个机器上进行计算:
- 每个简单的操作(+,*,-,=,if,call)只需一个时间步。
- 循环和子例程不被视为简单操作
- 每次内存访问仅需一个时间步长,而无需注意缓存或磁盘中的内容
大O
这些复杂性中的每一个都定义了一个数字函数,表示时间与问题大小的关系。但是时间上的复杂性是如此复杂,以至于我们必须简化它们以实现利用。为此,我们需要使用大O符号
首先,要精确计算复杂度非常困难,因为它倾向于: