【计算理论】计算复杂性 ( 两个带子的图灵机的时间复杂度 | 证明多个带子图灵机时间复杂度 )

简介: 【计算理论】计算复杂性 ( 两个带子的图灵机的时间复杂度 | 证明多个带子图灵机时间复杂度 )

文章目录

一、确定性模型的计算复杂性关系

二、证明 "多个带子图灵机时间复杂度是 O ( n 2 ) \rm O(n^2)O(n

2

)"





一、确定性模型的计算复杂性关系


计算的 复杂性 取决于 模型的计算 ;



给定一个函数 t ( n ) \rm t(n)t(n) , 假设有一个 两个带子图灵机 时间复杂度是 O ( t ( n ) ) \rm O(t(n))O(t(n)) , 那么对应的有相同计算能力的 一个带子图灵机 时间复杂度是 O ( t 2 ( n ) ) \rm O(t^2(n))O(t

2

(n)) ;



示例 : 参考上一篇博客 【计算理论】计算复杂性 ( 两个带子的图灵机的时间复杂度 ) , 识别语言 A = { 0 k 1 k : k ≥ 0 } \rm A = \{ 0^k1^k : k \geq 0 \}A={0

k

1

k

:k≥0} , 一个带子图灵机识别上述语言的 计算时间复杂度是 O ( n 2 ) \rm O(n^2)O(n

2

) , 两个带子图灵机识别上述语言的 计算时间复杂度是 O ( n ) \rm O(n)O(n) ;






二、证明 "多个带子图灵机时间复杂度是 O ( n 2 ) \rm O(n^2)O(n

2

)"


参考 【计算理论】图灵机 ( 多个带子的图灵机 | 计算能力对比 | 证明过程 | 一个带子图灵机 ) 博客 , 以如下三个带子的图灵机为例 , 加入下面的 三个带子图灵机的时间复杂度是 t ( n ) \rm t(n)t(n) ;

image.png



使用 单个带子图灵机 模仿上述 三个带子图灵机 , 那么对应的单个带子图灵机的时间复杂度是 t 2 ( n ) \rm t^2(n)t

2

(n) ;


计算 单个单子图灵机 模仿 三个带子图灵机 一步的计算 , 需要花费的步数 ;


模仿的核心是将三个带子的字符串放在一个带子中 , 使用 “#” 分割 , 并使用红色记录三个带子对应的位置 , 一个读头需要记录三个位置 , 如下图 :

image.png



使用 1 11 个带子的图灵机 模拟 3 33 个带子的图灵机 的代价是 读写头必须从左向右整个遍历一遍带子 , 才能模拟 3 33 个带子的图灵机 一步的计算 ;


最坏的情况下就是 , 三个带子图灵机走 1 11 步 , 单个带子图灵机走 三个带子所有字符串的内容长度 对应的步数 , 也就是 10 + 4 10 + 410+4 步 , 多出来的 4 44 步是 4 44 个 “#” 分割字符 ;



三个带子图灵机 每个带子的长度是 t ( n ) \rm t(n)t(n) , 单个带子图灵机 带子长度是 3 t ( n ) \rm 3t(n)3t(n) ;


单个带子图灵机 模仿 三个带子图灵机 一步操作 , 最坏的情况下 , 需要执行的步数是 3 t ( n ) \rm 3t(n)3t(n) ;


总共需要模仿 t ( n ) \rm t(n)t(n) 步 , 因此总共需要模仿的步数是 3 t 2 ( n ) \rm 3t^2(n)3t

2

(n) ;



如果是 四个带子图灵机 , 总共需要模仿的步数是 4 t 2 ( n ) \rm 4t^2(n)4t

2

(n) ,


如果是 五个带子图灵机 , 总共需要模仿的步数是 5 t 2 ( n ) \rm 5t^2(n)5t

2

(n) ,


如果是 一百个带子图灵机 , 总共需要模仿的步数是 100 t 2 ( n ) \rm 100t^2(n)100t

2

(n) ,


其数量级还是 t 2 ( n ) \rm t^2(n)t

2

(n) ,


因此增加到 2 22 个带子 , 与 增加到 100 100100 个带子 , 甚至 一亿个带子 , 算法复杂度的数量级是 O ( n 2 ) \rm O(n^2)O(n

2

) , 这是不变的 ;



单个带子模仿多个带子图灵机 , 所花费的时间是平方增加 , 不管多个带子的个数是多少 ;


目录
相关文章
|
3月前
|
算法 C++ 索引
寻找最接近子数组和的算法设计及其C++实现
寻找最接近子数组和的算法设计及其C++实现
17 4
|
3月前
|
算法 NoSQL 容器
1.贪心理论与常见的证明方法
1.贪心理论与常见的证明方法
|
3月前
|
设计模式 算法 知识图谱
算法设计与分析(贪心法)
【1月更文挑战第1天】在分析问题是否具有最优子结构性质时,通常先设出问题的最优解,给出子问题的解一定是最优的结论。证明思路是:设原问题的最优解导出子问题的解不是最优的,然后在这个假设下可以构造出比原问题的最优解更好的解,从而导致矛盾。(一个问题能够分解成各个子问题来解决,通过各个子问题的最优解能递推到原问题的最优解,此时原问题的最优解一定包含各个子问题的最优解,这是能够采用贪心法来求解问题的关键)贪心选择性质是指所求问题的整体最优解可以通过一系列局部最优的选择获得,即通过一系列的逐步局部最优选择使得最终的选择方案是全局最优的。
74 1
|
算法
【算法设计与分析】3、贪心法
【算法设计与分析】3、贪心法
205 0
|
机器学习/深度学习 算法
【计算理论】计算复杂性 ( 两个带子的图灵机的时间复杂度 )
【计算理论】计算复杂性 ( 两个带子的图灵机的时间复杂度 )
144 0
【计算理论】计算复杂性 ( 两个带子的图灵机的时间复杂度 )
|
机器学习/深度学习
【计算理论】计算复杂性 ( 非确定性图灵机的时间复杂度 | 非确定性图灵机 与 确定性图灵机 的时间复杂度 之间的关系 )
【计算理论】计算复杂性 ( 非确定性图灵机的时间复杂度 | 非确定性图灵机 与 确定性图灵机 的时间复杂度 之间的关系 )
166 0
【计算理论】计算复杂性 ( 非确定性图灵机的时间复杂度 | 非确定性图灵机 与 确定性图灵机 的时间复杂度 之间的关系 )
|
机器学习/深度学习 算法
【算法】复杂度理论 ( 时间复杂度 )
【算法】复杂度理论 ( 时间复杂度 )
224 0
|
Windows
【计算理论】计算复杂性 ( 证明 非确定性图灵机 与 确定性图灵机 的时间复杂度 之间的指数关系 )
【计算理论】计算复杂性 ( 证明 非确定性图灵机 与 确定性图灵机 的时间复杂度 之间的指数关系 )
182 0
【计算理论】计算复杂性 ( 证明 非确定性图灵机 与 确定性图灵机 的时间复杂度 之间的指数关系 )
|
机器学习/深度学习 算法
【计算理论】计算复杂性 ( 小 O 记号 | 严格渐进上界 | 分析算法的时间复杂度 )
【计算理论】计算复杂性 ( 小 O 记号 | 严格渐进上界 | 分析算法的时间复杂度 )
201 0
|
算法 Serverless
【计算理论】图灵机 ( 图灵机引入 | 公理化 | 希尔伯特纲领 | 哥德尔不完备定理 | 原始递归函数 )
【计算理论】图灵机 ( 图灵机引入 | 公理化 | 希尔伯特纲领 | 哥德尔不完备定理 | 原始递归函数 )
217 0