文章目录

  • 一、非确定性图灵机
  • 二、非确定性图灵机 指令
  • 三、非确定性图灵机 计算示例 初始状态
  • 四、计算步骤 1
  • 五、计算步骤 2
  • 六、计算步骤 3 ( 出现非确定性分支 )
  • 七、计算步骤 3-1 ( 分支 1 )
  • 八、计算步骤 3-2 ( 分支 2 )
  • 九、计算步骤 3-1-1 ( 第 3 步分支 1 后面 1 步 )
  • 十、计算步骤 3-2-1 ( 第 3 步分支 2 后面 1 步 )
  • 十一、计算树

一、非确定性图灵机


向非确定性图灵机中输入字符串 , 每次的后续操作 , 不是唯一的 , 有很多可能性 ;

二、非确定性图灵机 指令


非确定性图灵机计算 :

下图中的指令 “0→1,R\rm 0 \to 1, R0→1,R” 含义 :

读写头操作 : 如果当前 处于 q0\rm q_0q0​ 状态 , 读写头指向 000 字符 , 将 000 字符擦除 修改为 111 字符 ;

状态改变 : 当前状态修改为 q0\rm q_0q0​ 状态 ;

读写头移动方向 : R\rm RR , Right , 读写头向右移动 ;

下图中的指令 “1→0,R\rm 1 \to 0, R1→0,R” 含义 :

读写头操作 : 如果当前 处于 q0\rm q_0q0​ 状态 , 读写头指向 111 字符 , 将 111 字符擦除 修改为 000 字符 ;

状态改变 : 当前状态修改为 q1\rm q_1q1​ 状态 ;

读写头移动方向 : R\rm RR , Right , 读写头向右移动 ;

三、非确定性图灵机 计算示例 初始状态


假设向该图灵机中输入 w=0101\rm w = 0101w=0101 字符串 , 下面是详细的计算过程 :

最初状态如下 : 默认状态 q0\rm q_0q0​ , 读写头指向第 111 个字符 000 字符 ; 后面的 B\rm BB 指的是空白字符 ;

格局 : q00101\rm q_0 0101q0​0101

( 格局 即 当前快照 , 状态写在当前 读写头 指向的字符 的 左边 )

四、计算步骤 1


当前是 q0\rm q_0q0​ 状态 , 读到 000 字符 ;

符合条件的指令 : q0\rm q_0q0​ 状态 下执行 “0→1,R\rm 0 \to 1, R0→1,R” 指令 状态转为 q0\rm q_0q0​ 状态 ,

读写头将 000 字符改为 111 字符 , 向右移动一格字符 ;

自动机变为如下状态 , 格局是 1q0101\rm 1q_01011q0​101 ; ( 格局中 , 状态写在读写头指向的字符前面 )

格局进度 :

五、计算步骤 2


当前是 q0\rm q_0q0​ 状态 , 读到 111 字符 ;

符合条件的指令 : q0\rm q_0q0​ 状态 下执行 “1→0,R\rm 1 \to 0, R1→0,R” 指令 状态转为 q1\rm q_1q1​ 状态 ,

读写头将 111 字符改为 000 字符 , 向右移动一格字符 ;

自动机变为如下状态 , 格局是 10q101\rm 10q_10110q1​01 ; ( 格局中 , 状态写在读写头指向的字符前面 )

格局进度 :

六、计算步骤 3 ( 出现非确定性分支 )


当前是 q1\rm q_1q1​ 状态 , 读到 000 字符 ;

符合条件的指令有两条 :

① 指令 111 : q1\rm q_1q1​ 状态 下执行 “0→0,R\rm 0 \to 0, R0→0,R” 指令 状态转为 q1\rm q_1q1​ 状态 ;

② 指令 222 : q1\rm q_1q1​ 状态 下执行 “0→0,L\rm 0 \to 0, L0→0,L” 指令 状态转为 q0\rm q_0q0​ 状态 ;


上述两个指令 分别是 向左移动 , 向右移动 ;

七、计算步骤 3-1 ( 分支 1 )


执行指令 111 , 读写头将 000 字符改为 000 字符 , 向右移动一格字符 ;

自动机变为如下状态 , 格局是 100q11\rm 100q_11100q1​1 ; ( 格局中 , 状态写在读写头指向的字符前面 )

格局进度 :

八、计算步骤 3-2 ( 分支 2 )


执行指令 222 , 读写头将 000 字符改为 000 字符 , 向左移动一格字符 ;

自动机变为如下状态 , 格局是 1q1001\rm 1q_10011q1​001 ; ( 格局中 , 状态写在读写头指向的字符前面 )

格局进度 :

九、计算步骤 3-1-1 ( 第 3 步分支 1 后面 1 步 )


在 计算步骤 3-1 计算完成的基础上 , 继续后续计算 :

在 q1\rm q_1q1​ 状态下 , 读取 111 字符 ;

符合条件的指令 : q1\rm q_1q1​ 状态下执行 “1→1,R\rm 1 \to 1, R1→1,R” 指令 状态转为 q1\rm q_1q1​ 状态 ,

自动机变为如下状态 , 格局是 1001q1\rm 1001q_11001q1​ ; ( 格局中 , 状态写在读写头指向的字符前面 )

格局进度 :

十、计算步骤 3-2-1 ( 第 3 步分支 2 后面 1 步 )


在 计算步骤 3-2 计算完成的基础上 , 继续后续计算 :

当前是 q1\rm q_1q1​ 状态 , 读到 000 字符 ;

符合条件的指令有两条 :

① 指令 111 : q1\rm q_1q1​ 状态下执行 “0→0,R\rm 0 \to 0, R0→0,R” 指令 状态转为 q1\rm q_1q1​ 状态 ;

② 指令 222 : q1\rm q_1q1​ 状态下执行 “0→0,L\rm 0 \to 0, L0→0,L” 指令 状态转为 q0\rm q_0q0​ 状态 ;


上述两个指令 分别是 向左移动 , 向右移动 ;

此处又要开始分支 , 就不再详细分析了 ; 格局会如下继续分叉 ;

十一、计算树


非确定性图灵机 读取特定字符串 www , 可以生成一个 树形的 格局的 数据结构 ; 该数据结构称为 计算树 ;

计算树样式如下 :

计算树中 , 每个箭头都代表一个图灵机的计算指令步骤 ;

分析计算模型的计算复杂度时 , 需要将图灵机的计算过程 , 转为上图计算树样式的数据结构 , 在该数据结构上可以更容易理解计算复杂度 ;

计算树有可能出现一个分支 , 有无限长的箭头成的计算 , 也就是说图灵机在计算该计算树分支的时候 , 永不停机 , 这种情况是允许出现的 ;

计算树中还有可能出现一个分支 , 在很早的时候 , 就达到了接受状态 , 图灵机自动停机 ;

【计算理论】图灵机 ( 非确定性图灵机 | 非确定性图灵机指令分析 | 计算过程 | 非确定性指令出现多个分支 | 非确定性图灵机转为计算树 | 计算树 )相关推荐

  1. 【微机原理与接口 7】—— 常用指令分析4 (串操作指令剖析)

    文章目录 一.关于串操作的一些说明: 1.1 串操作指令执行的一般流程 二.正题--串操作指令 2.1 串传送指令 MOVS 2.2 串比较指令 CMPS 2.3 串扫描指令 2.4 串加载与串存储 ...

  2. 【计算理论】计算复杂性 ( 非确定性图灵机的时间复杂度 | 非确定性图灵机 与 确定性图灵机 的时间复杂度 之间的关系 )

    文章目录 一.非确定性图灵机的时间复杂度 二.非确定性图灵机 与 确定性图灵机 的时间复杂度 之间的指数关系 一.非确定性图灵机的时间复杂度 给定一个非确定性图灵机 , 该图灵机是 判定机 , 在所有 ...

  3. 计算理论2--可计算理论

    计算理论2--可计算理论 图灵机 博主正在学习INTRODUCTION TO THE THEORY OF COMPUTATION (Second Edition) --Michal Sipser,以及 ...

  4. 31条指令单周期cpu设计(Verilog)-(三)指令分析

    说在前面 开发环境:Vivado 语言:Verilog cpu框架:Mips 控制器:组合逻辑 鸽鸽鸽... 指令分析流程 确定一条指令所需要的具体操作 分析该条指令涉及的部件 确定各个部件的输入输出 ...

  5. 【计算理论】图灵机 ( 非确定性图灵机 与 计算树 | 非确定性 | 非确定性图灵机 与 确定性图灵机 相互模仿 | 非确定性图灵机 -> 确定性图灵机 )

    文章目录 一.非确定性图灵机 与 计算树 二.非确定性 三.非确定性图灵机 与 确定性图灵机 相互模仿 四.非确定性图灵机 -> 确定性图灵机 一.非确定性图灵机 与 计算树 非确定性图灵机体现 ...

  6. 【计算理论】计算复杂性 ( 证明 非确定性图灵机 与 确定性图灵机 的时间复杂度 之间的指数关系 )

    文章目录 证明 非确定性图灵机 与 确定性图灵机 的时间复杂度 之间的指数关系 证明 非确定性图灵机 与 确定性图灵机 的时间复杂度 之间的指数关系 在上一篇博客 [计算理论]计算复杂性 ( 非确定性 ...

  7. 【计算理论】图灵机 ( 非确定性图灵机 -> 确定性图灵机 | 模仿过程示例 | 算法的数学模型 )

    文章目录 一.非确定性图灵机 -> 确定性图灵机 二.确定性图灵机 模仿 非确定性图灵机 过程 三.算法的数学模型 一.非确定性图灵机 -> 确定性图灵机 给定如下非确定性图灵机 , 设计 ...

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

    文章目录 一.确定性模型的计算复杂性关系 二.证明 "多个带子图灵机时间复杂度是 O(n2)\rm O(n^2)O(n2)" 一.确定性模型的计算复杂性关系 计算的 复杂性 取决于 ...

  9. 【计算理论】计算复杂性 ( 两个带子的图灵机的时间复杂度 )

    文章目录 一.两个带子的图灵机的时间复杂度 一.两个带子的图灵机的时间复杂度 讨论两个带子的图灵机的时间复杂度 ; 计算问题如下 : 给定语言 : A={0k1k:k≥0}\rm A = \{ 0^k ...

最新文章

  1. Python urllib和urllib2模块学习(一)
  2. 小学生四则运算出题程序 无操作界面java版 简单的运用java中一些基本操作
  3. python实现维吉尼亚加密法
  4. 轻量级3d模型查看器_你该试试这样来管理你的3D资产了 Connecter
  5. C++笔记-Qt中使用Lambda时[]中的形式
  6. 锐捷ap怎么设置_新房装修网络布线方案一:AC+AP模式,弱电箱只放光猫和集成AC...
  7. Block循环引用问题(Objective-c)
  8. 拼多多再次超越京东:盘中市值一度超700亿美金
  9. C++ list类的模拟实现
  10. 使用Regex.Replace()进行字符串的替换
  11. 2022年6月TIOBE编程语言排名:Python、C、Java
  12. CS61A 计算机程序的构造与解释 课程介绍及课程学习总结
  13. Automate your Android app testing
  14. 【校园快递信息系统——开题报告 分享(仅供参考呀)】
  15. xampp 登陆MySQL 访问被拒绝
  16. 华硕主板固态硬盘不识别_[主板] 开机后无法识别硬盘或SSD的故障排除方式
  17. 《西瓜书》学习笔记-目录
  18. jQuery生成动态表格
  19. 快速实现Thread Mesh组网详解
  20. 1g等于多少mb计算机网络,1g能存多少首歌曲,1GB等于多少MB

热门文章

  1. 配置DispatcherServlet应该写/还是/*
  2. CentOS 7下用firewall-cmd
  3. COJ 2192: Wells弹键盘 (dp)
  4. jenkins 添加 k8s 云
  5. 【面向对象设计与构造】第一次博客作业
  6. Python3 编码讲解
  7. Java学习个人备忘录之线程间的通信
  8. 乱码问题引申 python 中string和unicode
  9. 知识梳理——HTML篇
  10. JS写的排序算法演示