【计算理论】计算复杂性 ( 计算理论内容概览 | 计算问题的有效性 | 时间复杂性度量 | 输入表示 | 时间复杂度 )

简介: 【计算理论】计算复杂性 ( 计算理论内容概览 | 计算问题的有效性 | 时间复杂性度量 | 输入表示 | 时间复杂度 )

文章目录

一、计算理论内容概览

二、计算问题的判定性

三、计算问题的 有效性

四、时间复杂性度量

五、算法有效性 数学定义需求

六、输入表示

七、时间复杂度





一、计算理论内容概览


计算理论分为 形式语言与自动机 , 可计算部分 , 计算复杂性部分 ;



形式语言与自动机 内容 : 自动机 , 确定性有限自动机 , 非确定性有限自动机 , 正则语言 , 泵引理 , 上下文无关语法 , 下推自动机 , 都属于 形式语言 与 自动机 部分 ;



可计算 内容 : 图灵机 , 确定性图灵机 , 非确定性图灵机 , 丘奇-图灵命题 , 可判定性 , 可计算性 等问题 ;



计算复杂性 内容 : 时间复杂性 , 模型间的时间复杂性关系 , P \rm PP 类 , N P \rm NPNP 类 ;



计算理论 知识点很枯燥 , 但是 在进行理论研究时 , 或者大的计算机工程实践时 , 很有用 ;






二、计算问题的判定性


根据计算模型 , 可以将判定性问题 , 总结成以下几点 :


① 所有 关于 图灵机 的计算问题 , 都是 不可判定的 ; ( 莱斯定理 )


② 所有 关于 确定性有限自动机 的计算问题 , 都是可判定的 ;


③ 关于 下推自动机 的计算问题 , 有些可判定 , 有些不可判定 ;






三、计算问题的 有效性


可计算性 包含 可判定性 , 可判定性 包含 有效性 ;


可计算性 > 可判定性 > 有效性 ;



计算问题 对应的算法中 , 有些算法是 有效的 , 有些算法是 无效的 ,


如 : 穷举算法 , 蛮力搜索之类的算法 , 没有有效性可言 , 肯定不是有效算法 ; 贪心算法 , 欧几里得算法 是有效算法 ;


这里希望可以区分 有效算法 与 无效算法 ;







四、时间复杂性度量


计算机中度量时间长短有两种方式 :


① 离散时间 ( 自然数表达 ) : 时间是离散的 , 如 1 , 2 , 3 , 4 , ⋯ 1, 2, 3, 4 , \cdots1,2,3,4,⋯ 秒


② 连续时间 ( 实数表达 ) : 时间是连续的 , 如 1.221457 ⋯ 1.221457\cdots1.221457⋯ 秒


计算复杂性的表达使用的是 离散时间 , 自然数表达 ;






五、算法有效性 数学定义需求


有效性 与 无效性 区分时 , 将 贪心算法 分到有效性算法中 , 将蛮力穷举的算法 分到无效性算法中 ;


需要定一个区分原则 , 区分算法的有效性 , 将一个算法分为 有效算法 或 无效算法 ;


为 算法有效性 提供一个 严格的数学定义 ;






六、输入表示


输入字符串大小 , 输入字符串越长 , 所花的时间越长 , 计算所花的时间与输入字符串时单调递增的 ;


有效性 进行定义时 , 通过输入字符串大小进行度量 ;



计算机计算输入有很多形式 , 数字 , 图形 , 字符串 , 二进制数据 等 ;


数字的表示 , 假如输入数字是 17 1717 , 要将对应的时间复杂度理解成 2 22 , 这个数字由 2 22 位数字组成的 ;


如果将上述 17 1717 数字 , 使用二进制表示 , 是 10001 1000110001 , 输入位数是 5 55 , 对应的时间复杂度理解成 5 55 ;



算法复杂性 只与输入的数据大小有关 , 输入的大小必须是合理的 ;


输入数字时 , 可以输入 十六进制 , 十进制 , 八进制 , 二进制 , 但是不能输入 一进制数字 , 一进制输入是不合理的 ;






七、时间复杂度


假设 M \rm MM 是 确定性图灵机 , 该图灵机在所有的输入上都会 停机 ;


因为该图灵机会停机 , 其结果不是接受 , 就是拒绝 , 不会出现 Loop 不停机的状态 , 因此该 图灵机 M \rm MM 是判定机 ;



图灵机 M \rm MM 的运行时间 或 时间复杂度 是一个函数 f \rm ff , 该函数是 从 自然数集 到 自然数集上的映射 , N → N \rm N \to NN→N ;


前面的自然数集 N \rm NN 主要是度量的 输入字符串大小 , 后面的自然数集 N \rm NN 是计算的步数 ;



f ( n ) \rm f(n)f(n) 的含义是度量 长度为 n \rm nn 的所有字符串 , 计算时所花费的步数的 最大值 ;




证明 M \rm MM 为什么必须是判定机 :


假设 M \rm MM 是图灵机 , 在某些输入上是不停机的 , 如输入字符串为 a a b \rm aabaab ;


图灵机 M \rm MM 在 a a b \rm aabaab 字符串上进行计算时 , 进入 Loop 状态 , 不停机 , 此时定义 f ( 3 ) \rm f(3)f(3) 的值只能是无穷大 ;


此时该函数 f ( n ) \rm f(n)f(n) 就没有意义了 ;


函数在数字上进行取值时 , 必须是一个具体的数字 ;


目录
相关文章
|
6月前
【数理统计实验(一)】统计量近似分布的随机模拟
【数理统计实验(一)】统计量近似分布的随机模拟
|
5月前
偏微分方程有了基础模型:样本需求数量级减少,14项任务表现最佳
【6月更文挑战第16天】研究人员提出Poseidon模型,减少求解偏微分方程(PDEs)的样本需求,提升效率。在15个挑战任务中,该模型在14项表现最优。基于scOT的多尺度架构, Poseidon降低了计算成本,但仍有泛化和资源限制。[论文链接](https://arxiv.org/pdf/2405.19101)**
89 4
|
4月前
|
算法 Java 调度
对偶问题理论及在优化中的应用实例
对偶问题理论及在优化中的应用实例
|
6月前
R语言中固定与随机效应Meta分析 - 效率和置信区间覆盖
R语言中固定与随机效应Meta分析 - 效率和置信区间覆盖
|
6月前
|
数据可视化
R语言两层2^k析因试验设计(因子设计)分析工厂产量数据和Lenth方法检验显著性可视化|数据分享(一)
R语言两层2^k析因试验设计(因子设计)分析工厂产量数据和Lenth方法检验显著性可视化|数据分享(一)
|
6月前
|
移动开发 数据可视化
R语言两层2^k析因试验设计(因子设计)分析工厂产量数据和Lenth方法检验显著性可视化|数据分享(二)
R语言两层2^k析因试验设计(因子设计)分析工厂产量数据和Lenth方法检验显著性可视化|数据分享(二)
Matlab:如何利用层次分析法(升级版)计算具有多重指标的判断矩阵的一致性检验和权重
Matlab:如何利用层次分析法(升级版)计算具有多重指标的判断矩阵的一致性检验和权重
340 0
|
6月前
【SPSS】两独立样本的极端反应检验和两配对样本的非参数检验详细操作教程(附案例实战)
【SPSS】两独立样本的极端反应检验和两配对样本的非参数检验详细操作教程(附案例实战)
178 0
|
算法 计算机视觉
Two-Stage目标检测困难负样本如何利用?大小目标如何同时优化?nRPN给你答案!
Two-Stage目标检测困难负样本如何利用?大小目标如何同时优化?nRPN给你答案!
140 0
|
机器学习/深度学习 自然语言处理 达摩院
模型精度再被提升,统一跨任务小样本学习算法 UPT 给出解法!
UPT是一种面向多种NLP任务的小样本学习算法,致力于利用多任务学习和预训练增强技术,在仅需要标注极少训练数据的情况下,提升大规模预训练语言模型在多种场景下的模型精度。