【计算理论】计算复杂性 ( 小 O 记号 | 严格渐进上界 | 分析算法的时间复杂度 )

简介: 【计算理论】计算复杂性 ( 小 O 记号 | 严格渐进上界 | 分析算法的时间复杂度 )

文章目录

一、小 O 记号 ( 严格渐进上界 )

二、分析算法的时间复杂度





一、小 O 记号 ( 严格渐进上界 )


如果 g ( n ) \rm g(n)g(n) 是 f ( n ) \rm f(n)f(n) 渐进上界 , 符号化表示为 f ( n ) = O ( g ( n ) ) \rm f(n) = O(g(n))f(n)=O(g(n)) ,


如果 f ( n ) \rm f(n)f(n) 除以 g ( n ) \rm g(n)g(n) , 求 n → ∞ n \to \inftyn→∞ 极限为 0 00 时 , 符号化表示为 l i m n → ∞ f ( n ) g ( n ) = 0 \rm lim_{n \to \infty} \cfrac{f(n)}{g(n)} = 0lim

n→∞


 

g(n)

f(n)


=0 ,


那么称 g ( n ) \rm g(n)g(n) 是 f ( n ) \rm f(n)f(n) 的 严格渐进上界 ;



严格渐进上界使用 小 o \rm oo 记号 表示 :


① n = o ( n ) \rm \sqrt{n} = o(n)

n


=o(n)


② n = o ( n   l o g   l o g   n ) \rm n = o(n\ log\ log \ n)n=o(n log log n)


③ n   l o g   l o g   n = o ( n   l o g   n ) \rm n\ log\ log \ n = o(n\ log \ n)n log log n=o(n log n)


④ n   l o g   n = o ( n 2 ) \rm n\ log \ n = o(n ^2)n log n=o(n

2

)


⑤ n 2 = o ( n 3 ) \rm n ^2 = o(n ^3)n

2

=o(n

3

)






二、分析算法的时间复杂度


构造图灵机认识如下语言 : A = { 0 k 1 k : k ≥ 0 } \rm A = \{ 0^k1^k : k \geq 0 \}A={0

k

1

k

:k≥0}


M 1 = \rm M_1 =M

1


= "在长度为 n \rm nn 的字符串 w \rm ww 上进行如下计算 :


① 扫描整个带子上的字符串 , 查看 0 00 和 1 11 的顺序 , 所有的 0 00 必须在所有的 1 11 前面 ; 如果顺序错误 , 进入拒绝状态 ;


② 扫描整个带子 , 遇到一个 0 00 , 就划掉一个 1 11 ; 如果带子上存在 0 00 和 1 11 , 该操作重复进行 ;


③ 如果最后只剩下 0 00 或只剩下 1 11 , 说明 两个数字的个数不等 , 进入拒绝状态 ; 如果最后带子上只剩下空白字符 , 说明两个数字个数相等 , 进入接受状态 ; "



分析上述算法的时间复杂度 :



字符串 w = " 0000 ⋯ 1111 ⋯ " \rm w = "0000 \cdots 1111 \cdots"w="0000⋯1111⋯" , 整个 字符串长度为 n \rm nn ;


① 首先从左向右扫描一遍字符串 , 如果 0 00 出现在 1 11 右边 , 说明字符串不符合条件 , 检查的字符个数最坏的情况就是遍历 n \rm nn 次 , 使用 大 O \rm OO 标记 为 : O ( n ) \rm O(n)O(n) ;


② 扫描带子 , 读取到一个 0 00 , 划掉一个 1 11 , 然后在掉过头来 , 读取到一个 0 00 , 划掉一个 1 11 ;


这是一个循环 , 计算循环复杂度 , 只需要考虑 每次循环花费的时间 , 和 循环次数 ;


循环的次数最坏情况是 n 2 \rm \cfrac{n}{2}

2

n


 , 还是 n \rm nn 的数量级 , 标记为 O ( n ) \rm O(n)O(n) ;


每次循环的花费时间步数 : 向右走 n 2 \rm \cfrac{n}{2}

2

n


 步 , 找到 1 11 字符 , 删除 1 11 字符后 , 然后再向左 n 2 \rm \cfrac{n}{2}

2

n


 步 回到第 0 00 个 , 大约是 n 2 \rm \cfrac{n}{2}

2

n


 步 , 数量级还是 n nn , 使用 大 O \rm OO 标记 为 : O ( n ) \rm O(n)O(n) ;


将上述 循环次数 和 每次循环步数 大 O \rm OO 标记 相乘 , 就是该阶段的 大 O \rm OO 标记 为 : O ( n ) × O ( n ) = O ( n 2 ) \rm O(n) \times O(n) = O(n^2)O(n)×O(n)=O(n

2

) ;



上述 ① 和 ② 总的 大 O \rm OO 标记 为 : O ( n ) + O ( n 2 ) = O ( n 2 ) \rm O(n) + O(n^2) = O(n^2)O(n)+O(n

2

)=O(n

2

)


目录
相关文章
|
3月前
|
算法 机器人
基于SOA海鸥优化算法的PID控制器最优控制参数计算matlab仿真
本课题研究基于海鸥优化算法(SOA)优化PID控制器参数的方法,通过MATLAB仿真对比传统PID控制效果。利用SOA算法优化PID的kp、ki、kd参数,以积分绝对误差(IAE)为适应度函数,提升系统响应速度与稳定性。仿真结果表明,SOA优化的PID控制器在阶跃响应和误差控制方面均优于传统方法,具有更快的收敛速度和更强的全局寻优能力,适用于复杂系统的参数整定。
|
6月前
|
机器学习/深度学习 边缘计算 算法
NOMA和OFDMA优化算法分析
NOMA和OFDMA优化算法分析
366 127
|
3月前
|
运维 监控 JavaScript
基于 Node.js 图结构的局域网设备拓扑分析算法在局域网内监控软件中的应用研究
本文探讨图结构在局域网监控系统中的应用,通过Node.js实现设备拓扑建模、路径分析与故障定位,提升网络可视化、可追溯性与运维效率,结合模拟实验验证其高效性与准确性。
269 3
|
7月前
|
算法 JavaScript 数据安全/隐私保护
基于GA遗传优化的最优阈值计算认知异构网络(CHN)能量检测算法matlab仿真
本内容介绍了一种基于GA遗传优化的阈值计算方法在认知异构网络(CHN)中的应用。通过Matlab2022a实现算法,完整代码含中文注释与操作视频。能量检测算法用于感知主用户信号,其性能依赖检测阈值。传统固定阈值方法易受噪声影响,而GA算法通过模拟生物进化,在复杂环境中自动优化阈值,提高频谱感知准确性,增强CHN的通信效率与资源利用率。预览效果无水印,核心程序部分展示,适合研究频谱感知与优化算法的学者参考。
|
3月前
|
存储 边缘计算 算法
【太阳能学报EI复现】基于粒子群优化算法的风-水电联合优化运行分析(Matlab代码实现)
【太阳能学报EI复现】基于粒子群优化算法的风-水电联合优化运行分析(Matlab代码实现)
|
4月前
|
机器学习/深度学习 算法 5G
【MUSIC、最大似然与克拉美-罗下界】MUSIC与ESPRIT 算法来估计到达角(AoA),并尝试推导克拉美-罗下界(CRLB)以分析其性能研究(Matlab代码实现)
【MUSIC、最大似然与克拉美-罗下界】MUSIC与ESPRIT 算法来估计到达角(AoA),并尝试推导克拉美-罗下界(CRLB)以分析其性能研究(Matlab代码实现)
208 0
|
5月前
|
编解码 算法 5G
MIMO雷达空间谱估计中Capon算法与MUSIC算法的对比分析及实现
MIMO雷达空间谱估计中Capon算法与MUSIC算法的对比分析及实现
441 2
|
5月前
|
人工智能 自然语言处理 算法
2025 年 7 月境内深度合成服务算法备案情况分析报告
2025年7月,中央网信办发布第十二批深度合成算法备案信息,全国389款产品通过备案,服务提供者占比超七成。截至7月14日,全国累计备案达3834款,覆盖文本、图像、音视频等多模态场景,广泛应用于生活服务、医疗、金融等领域。广东以135款居首,数字人、AI客服等C端应用主导,民营企业成主力,国企聚焦公共服务。随着AI政策推动,备案已成为AI产品合规上线关键环节。
|
2月前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
309 0
|
2月前
|
数据采集 分布式计算 并行计算
mRMR算法实现特征选择-MATLAB
mRMR算法实现特征选择-MATLAB
221 2

热门文章

最新文章