算法的四个标准:
- 正确性
- 健壮性:输入非法数据,算法也能适当地做出反应后进行处理,不会产生预料不到的运行结果。
- 可读性:易于阅读、理解和交流,便于调试、修改和扩充。
- 时空性(效率):算法的时空性是该算法的时间性能和空间性能。 主要是说算法在执行过程中的时间长短和空间占用多少问题。算法处理数据过程中,不同的算法耗费的时间和内存空间是不同的。
图灵机模型、RAM等模型为度量算法性能提供了准确的尺度。
TM:Turing Machine 图灵机模型
组件:
- Tape(无限的带):依次均匀的划分别单元格(cell)各注有某一字符,默认“#”
- Alphabet(有限的字符表)
- Head:总是对准某一单元格,并可读取和改写其中的字符,没经过一个节拍,可左转或右转。
- State:TM总是处于有限状态中的一种,每经过一种节拍,可(按照规则)左转或右转。
例:Transition Function(q,c;d,L/R,p)
q:当前状态
c:当前字符
d:修改为字符d
L/R:转向左或右
p:转为p状态
RAM:Randon Acccess Machine
1.寄存器顺序编号,总数没有限制
R[0] ,R[1],R[2],R[3]。。。。。。。。。。。
2.每一基本操作仅需要常数时间(循环及子程序本身非基本操作)
赋值,加,减,简单判断,Stop
比较
以上两种模型都是一般计算工具的简化和抽象,使我们可以独立于具体的平台对算法的效率做出可信的比较与评判
依据
将算法的运行时间转换问题转换为算法需要执行的基本操作次数