【计算理论】计算复杂性 ( P 类 | 有效算法函数 | NP 直觉 | NP 简介 | NP 类严格数学定义 )

简介: 【计算理论】计算复杂性 ( P 类 | 有效算法函数 | NP 直觉 | NP 简介 | NP 类严格数学定义 )

文章目录

一、P 类

二、有效算法函数

三、NP 直觉

四、NP 简介

五、NP 严格数学定义





一、P 类


时间复杂度类 :


定义 时间复杂度类 T I M E ( t ( n ) ) \rm TIME( t(n) )TIME(t(n)) , L \rm LL 是一个语言 , 对应一个计算问题 , 如果可以被 单个带子的图灵机 T M \rm TMTM 进行判定的话 , 它的 时间复杂度是 O ( t ( n ) ) \rm O(t(n))O(t(n)) ;


符号化表示 : T I M E ( t ( n ) ) = { L : L 是 一 个 语 言 , 该 语 言 可 以 被 时 间 复 杂 度 O ( t ( n ) ) 的 单 个 带 子 图 灵 机 识 别 } \rm TIME( t(n) ) = \{ L : L 是一个语言 , 该语言可以被时间复杂度 O(t(n)) 的单个带子图灵机识别 \}TIME(t(n))={L:L是一个语言,该语言可以被时间复杂度O(t(n))的单个带子图灵机识别}



P \rm PP 类 :


所有 能够被 确定性 单个带子图灵机 , 在 多项式时间 内 , 能够被 判定的计算问题 ,


将这些问题放在一起 ( 广义并集 ⋃ \bigcup⋃ ) , 组成一个整体 , 就称为 P \rm PP


符号化表示 : P = ⋃ k T I M E ( n k ) \rm P = \bigcup_k TIME( n^k )P=⋃

k


TIME(n

k

)



P \rm PP 类 , 就是定义 有效算法 所组成的类 ,


有效算法 , 就是在 多项式时间 内 , 可以执行完毕 , 得到一个确定的结果的算法 ;


确定的结果就是 接受状态 , 或 拒绝状态 ;






二、有效算法函数


上述 P \rm PP 类 是对 有效算法 进行了严格的数学定义 ;


计算理论的意义就是 证明 有哪些计算问题 , 是不存在有效算法的 , 如果没有确定性的有效算法 , 就需要 找近似的算法 , 解决同样的问题 , 而不是确定性的算法 ;



有效算法是一个函数 , 该函数的主要依赖于 输入字符串大小 ;


如果给定一个确定性图灵机 , 定义其时间复杂度 , 通过 f \rm ff 函数进行定义 , f \rm ff 函数是从 自然数集 N \rm NN 到 自然数集 N \rm NN 的映射 ,


符号化表示 : f : N → N \rm f : N \to Nf:N→N ,


定义域中的自然数 N \rm NN 指的是 输入字符串大小 ,


值域中的自然数 N \rm NN 指的是 图灵机计算所执行的步数 ;



时间复杂度 f ( n ) \rm f(n)f(n) 定义方式 : 将所有长度为 n \rm nn 的字符串 , 依次输入到图灵机中进行计算 , 所有的计算中取最大的计算步数 , 作为 f ( n ) \rm f(n)f(n) 的取值 ;






三、NP 直觉


有两个问题 ,


问题 A \rm AA , 花了一天时间 , 找到了解决方案 ,


问题 B \rm BB , 已经存在了解决方案 , 读懂该方案 , 花了一天时间 ,


这两个问题 , 在第一印象直觉中 , 问题 B \rm BB 更难一些 ;



理解 问题 B \rm BB 的解决方案 , 是一个简单的任务 ,


解决 问题 A \rm AA , 是更难的任务 ,


两者都花了一天的时间 , 直觉上感觉问题 B \rm BB 更难 ;



解决问题 , 一般比 理解解决问题的方案 , 更难一些 ;


类似于 学习 和 科研 的难度 ,


学习 是理解现有解决方案 , 是简单任务 ,


科研 是提出解决方案 , 是比较难的任务 ;



通常情况下 , 一个问题 , 没有答案 , 要找到答案的话 , 需要创造性 ,


如果已经有一个答案 , 验证这个答案的正确性 , 通常 不需要创造性的 , 只需要有理解能力就足够了 ;






四、NP 简介


P \rm PP 目的是确定哪些 计算问题 是 可以被 有效解决 的计算问题 ;


N P \rm NPNP 目的是确定哪些 计算问题 是 可以被 有效验证 的计算问题 ;



验证 : 验证值的是 , 计算问题 已经有正确的答案 , 将正确的答案 , 根据某些有限的指令 , 规则 , 验证 算法的 每一步是否正确 ;


验证 相当于 学习的过程 , 解决 相当于 科研过程 ;



N P \rm NPNP 对应的计算问题 , 指的是能够 在 多项式时间内 , 能够 验证 的计算问题 ;


P \rm PP 对应的计算问题 , 指的是能够 在 多项式时间内 , 能够 解决 的计算问题 ;



P \rm PP 是包含在 N P \rm NPNP 中的 : 如果有计算问题 , 在 多项式时间 内能够 解决 , 肯定就能在 多项式时间内 能够 验证 ;



P \rm PP 是 N P \rm NPNP 的子集 ;






五、NP 严格数学定义


N P \rm NPNP 是 多项式时间 内的 验证机 ;



验证机 : A \rm AA 语言 ( 计算问题 ) 的 验证机 V \rm VV ;


< w , c > \rm <w,c><w,c> 含义 : 给定一个 输入 w \rm ww , w \rm ww 是输入字符串 , c \rm cc 是输入 w \rm ww 被接受的情况下的输入 , 即正确的输入 ;


A \rm AA 语言 ( 计算问题 ) 的 验证机 V \rm VV 条件 : 给定了正确的输入 c \rm cc , 让验证机 V \rm VV 进行一步步验证 , 如果 验证机 V \rm VV 接受了输入的字符串 c \rm cc , 称 验证机 V \rm VV 就是计算问题 A \rm AA 的验证机 ;



符号化表示 : A = { w : 验 证 机 V 接 受 < w , c > 中 正 确 的 输 入 c } \rm A = \{ w : 验证机 V 接受 <w,c> 中正确的输入 c \}A={w:验证机V接受<w,c>中正确的输入c}



验证操作 : 已经有了正确答案 c \rm cc , 有一个有限的规则 , 将正确答案 c \rm cc 每一步 , 代入有限规则中进行验证是否正确 ;


验证时间 : 已经有了正确答案 c \rm cc , 有一个有限的规则 , 将正确答案 c \rm cc 每一步 , 代入有限规则中进行验证是否正确 , 最后记录整个验证过程所花费的时间 ; 即 学习的过程 ;


N P \rm NPNP 计算问题要求 : 如果花费的时间 在 多项式时间 之内 , 就称 该问题是 N P \rm NPNP 对应的计算问题 ;



多项式时间验证机 : A \rm AA 语言 如果 可以在 多项式时间 内 可以 验证 的话 , 就称该语言 有一个 多项式时间验证机 ;



N P \rm NPNP 类就是有 多项式时间验证机 的 语言 ( 计算问题 ) 的总体集合 ;


目录
相关文章
|
3月前
|
算法 机器人
基于SOA海鸥优化算法的PID控制器最优控制参数计算matlab仿真
本课题研究基于海鸥优化算法(SOA)优化PID控制器参数的方法,通过MATLAB仿真对比传统PID控制效果。利用SOA算法优化PID的kp、ki、kd参数,以积分绝对误差(IAE)为适应度函数,提升系统响应速度与稳定性。仿真结果表明,SOA优化的PID控制器在阶跃响应和误差控制方面均优于传统方法,具有更快的收敛速度和更强的全局寻优能力,适用于复杂系统的参数整定。
|
4月前
|
算法 机器人 定位技术
【VRPTW】基于matlab秃鹰算法BES求解带时间窗的骑手外卖配送路径规划问题(目标函数:最优路径成本 含服务客户数量 服务时间 载量 路径长度)(Matlab代码实现)
【VRPTW】基于matlab秃鹰算法BES求解带时间窗的骑手外卖配送路径规划问题(目标函数:最优路径成本 含服务客户数量 服务时间 载量 路径长度)(Matlab代码实现)
165 0
|
3月前
|
机器学习/深度学习 传感器 算法
基于matlab瞬态三角哈里斯鹰算法TTHHO多无人机协同集群避障路径规划(目标函数:最低成本:路径、高度、威胁、转角)(Matlab代码实现)
基于matlab瞬态三角哈里斯鹰算法TTHHO多无人机协同集群避障路径规划(目标函数:最低成本:路径、高度、威胁、转角)(Matlab代码实现)
170 1
|
7月前
|
算法 JavaScript 数据安全/隐私保护
基于GA遗传优化的最优阈值计算认知异构网络(CHN)能量检测算法matlab仿真
本内容介绍了一种基于GA遗传优化的阈值计算方法在认知异构网络(CHN)中的应用。通过Matlab2022a实现算法,完整代码含中文注释与操作视频。能量检测算法用于感知主用户信号,其性能依赖检测阈值。传统固定阈值方法易受噪声影响,而GA算法通过模拟生物进化,在复杂环境中自动优化阈值,提高频谱感知准确性,增强CHN的通信效率与资源利用率。预览效果无水印,核心程序部分展示,适合研究频谱感知与优化算法的学者参考。
|
5月前
|
机器学习/深度学习 算法 安全
深度长文I 深度合成服务类-算法备案该怎么做?
本文详解“深度合成服务类”算法及其备案要求,涵盖定义、类型、备案流程等内容,助你全面理解合规要点。
|
4月前
|
机器学习/深度学习 算法 数据挖掘
【配送路径规划】基于螳螂虾算法MShOA求解带时间窗的骑手外卖配送路径规划问题(目标函数:最优路径成本 含服务客户数量 服务时间 载量 路径长度)研究(Matlab代码实现)
【配送路径规划】基于螳螂虾算法MShOA求解带时间窗的骑手外卖配送路径规划问题(目标函数:最优路径成本 含服务客户数量 服务时间 载量 路径长度)研究(Matlab代码实现)
196 0
|
4月前
|
算法 Python
【配送路径规划】基于遗传算法求解带时间窗的电动汽车配送路径规划(目标函数:最小成本;约束条件:续驶里程、额定载重量、数量、起始点)研究(Matlab代码实现)
【配送路径规划】基于遗传算法求解带时间窗的电动汽车配送路径规划(目标函数:最小成本;约束条件:续驶里程、额定载重量、数量、起始点)研究(Matlab代码实现)
157 0
|
9月前
|
算法 数据安全/隐私保护
基于Big-Bang-Big-Crunch(BBBC)算法的目标函数最小值计算matlab仿真
该程序基于Big-Bang-Big-Crunch (BBBC)算法,在MATLAB2022A中实现目标函数最小值的计算与仿真。通过模拟宇宙大爆炸和大收缩过程,算法在解空间中搜索最优解。程序初始化随机解集,经过扩张和收缩阶段逐步逼近全局最优解,并记录每次迭代的最佳适应度。最终输出最佳解及其对应的目标函数最小值,并绘制收敛曲线展示优化过程。 核心代码实现了主循环、粒子位置更新、适应度评估及最优解更新等功能。程序运行后无水印,提供清晰的结果展示。
247 14
|
搜索推荐 Python
利用Python内置函数实现的冒泡排序算法
在上述代码中,`bubble_sort` 函数接受一个列表 `arr` 作为输入。通过两层循环,外层循环控制排序的轮数,内层循环用于比较相邻的元素并进行交换。如果前一个元素大于后一个元素,就将它们交换位置。
283 67
|
存储 算法 Java
Set接口及其主要实现类(如HashSet、TreeSet)如何通过特定数据结构和算法确保元素唯一性
Java Set因其“无重复”特性在集合框架中独树一帜。本文解析了Set接口及其主要实现类(如HashSet、TreeSet)如何通过特定数据结构和算法确保元素唯一性,并提供了最佳实践建议,包括选择合适的Set实现类和正确实现自定义对象的hashCode()与equals()方法。
320 4

热门文章

最新文章