文章目录
- 一、小 O 记号 ( 严格渐进上界 )
- 二、分析算法的时间复杂度
一、小 O 记号 ( 严格渐进上界 )
如果
是
渐进上界 , 符号化表示为
,
如果
除以
, 求
极限为
时 , 符号化表示为
,
那么称
是
的 严格渐进上界 ;
严格渐进上界使用 小
记号 表示 :
①
②
③
④
⑤
二、分析算法的时间复杂度
构造图灵机认识如下语言 :
"在长度为
的字符串
上进行如下计算 :
① 扫描整个带子上的字符串 , 查看
和
的顺序 , 所有的
必须在所有的
前面 ; 如果顺序错误 , 进入拒绝状态 ;
② 扫描整个带子 , 遇到一个
, 就划掉一个
; 如果带子上存在
和
, 该操作重复进行 ;
③ 如果最后只剩下
或只剩下
, 说明 两个数字的个数不等 , 进入拒绝状态 ; 如果最后带子上只剩下空白字符 , 说明两个数字个数相等 , 进入接受状态 ; "
分析上述算法的时间复杂度 :
字符串
, 整个 字符串长度为
;
① 首先从左向右扫描一遍字符串 , 如果
出现在
右边 , 说明字符串不符合条件 , 检查的字符个数最坏的情况就是遍历
次 , 使用 大
标记 为 :
;
② 扫描带子 , 读取到一个
, 划掉一个
, 然后在掉过头来 , 读取到一个
, 划掉一个
;
这是一个循环 , 计算循环复杂度 , 只需要考虑 每次循环花费的时间 , 和 循环次数 ;
循环的次数最坏情况是
, 还是
的数量级 , 标记为
;
每次循环的花费时间步数 : 向右走
步 , 找到
字符 , 删除
字符后 , 然后再向左
步 回到第
个 , 大约是
步 , 数量级还是
, 使用 大
标记 为 :
;
将上述 循环次数 和 每次循环步数 大
标记 相乘 , 就是该阶段的 大
标记 为 :
;
上述 ① 和 ② 总的 大
标记 为 :