当前位置: 首页 > news >正文

计算理论复习

1.Turing Machine

确定性图灵机

图灵机有很多不同的定义,这里选取其中一种,其它定义下的图灵机往往与下面这种定义的图灵机计算能力等价。

图灵机是一个在一条可双向无限延伸且被划分为若干格子的纸带上进行操作的机器,其有内部状态,还有一个可以在纸带上进行修改与移动的磁针。

图灵机从初始状态与纸带起点起,每次根据当前的内部状态和当前磁针指向的纸带上的单元格中的字符进行操作:若转移函数没有定义则停机,否则根据转移函数将内部状态和磁针指向的格子中的字符进行修改,根据L/R决定向左移动一格或向右移动一格。

图灵机与冯·诺依曼计算机解决问题的时间复杂度差别在多项式级别内,所以研究复杂度类时可以使用图灵机作为计算模型。 

非确定性图灵机

非确定型图灵机是图灵机的一种,它与确定型图灵机的不同在于:确定型图灵机的每一步只能转移到一个状态,而非确定型图灵机可以「同时」转移到多个状态,从而在多个「分支」并行计算,一旦这些「分支」中有一个在接受状态停机,则此非确定性图灵机接受这个输入。

事实上,任何确定型图灵机都可以用类似于迭代加深搜索的方式在指数级时间内模拟一台非确定型图灵机多项式时间内的行为。

在现实生活中,确定型图灵机相当于单核处理器,只支持串行处理;而非确定型图灵机相当于理想的多核处理器,支持无限大小的并行处理。

在计算过程中,机器可以在 多种可能的转移中选择一种继续进行。它的转移函数具有如下形式:

 图灵可识别当且仅当可用非确定性图灵机识别 

模拟过程:
输入带 1 包含输入 w ,模拟带 2 和地址带 3 都是空的;
输入带 1 复制到模拟带 2 上;
在模拟带 2 上模拟该分支上的确定性计算

多带图灵机

标准的图灵机只能在一条纸带上进行操作,但为了方便,本文中研究多带图灵机。对于一个k带图灵机,其中一条纸带是只读的输入带,而剩下的k-1条纸带可以进行读写,并且这条纸带中还有一条纸带用作输出。

多带图灵机的纸带数必须是有限的。

对于一个多带图灵机,它使用的空间是磁头在除输入带外的其它纸带上所访问过的单元格数目。

 

单带上放入 # w 1 w 2 …w n # # # # ,根据 多带图灵机 的状态转移函数:
1. 模拟读取: 从左端点的第一个 # 开始扫描, 直到第k+ 1 # ,确定带点的符号的位置,读
取每个带子的内容;
2. 模拟移动: 移动带点符号的位置,用带点版本的某一符号替换普通符号;
3. 模拟写入: 移动到某个 # 上,写下指定符号,并把这个位置以右的所有内容向右平移一格,
重新写上 #
  图灵 可识别 当且仅当可用 多带 图灵机识别

丘奇 - 图灵论题

丘奇 - 图灵论题称,若一类问题有一个有效的方法解决,则这类问题可以被某个图灵机解决。

其中,「有效的方法」需要满足:

  1. 包含有限条清晰的指令;
  2. 当用其解决这类问题的其中一个时,这个方法需要在有限步骤内结束,且得到正确的答案。

这个论题没有被证明,但其是计算理论的一条基本公理。

2.可判定性和可归约性

语言与可判定

【定义】语言 :若 集合 A 为包含了所有能被机器 M 接受 的字符串,则称(字符串集合)A 机器 M 语言 ,记作 L ( M ) =A ,又称M 识别 A M 接受 A
【定义】可判定 :如果一个语言能被某一 判定器 (处处停机的图灵机) 识别 ,简称 可判定的

可计算性

不可计算问题

对于一个判定问题,若存在一个总是在有限步内停机且能够正确进行判定的图灵机,则这个问题是一个 图灵可计算 的问题,否则这个问题是一个 图灵不可计算 的问题。

由于图灵机可以被自然数编码,所以图灵机的个数是可数无穷,而语言(即二进制串的集合)的个数是不可数无穷,而每个图灵机最多判定一个语言,所以一定存在图灵不可计算的问题。

停机问题

停机问题是一个经典的图灵不可计算问题:给定  和 ,判定  在输入为  时是否会在有限步内停机。

证明:

可判定问题 

不可判定问题

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Linux 利用命名空间创建一个自己的“容器“
  • C#反射基本应用
  • Spring框架配置进阶_自动装配(XML和注解)
  • 【C++知识点总结全系列 (08)】:面向对象编程OOP
  • 新火种AI|OpenAI的CEO又有新动作?这次他成立了AI健康公司
  • 如何利用java依赖jave-all-deps实现视频格式转换
  • 中英双语介绍美国的州:阿肯色州(Arkansas)
  • 在make类构建系统配置文件中定义函数宏
  • Laravel5+mycat 报错 “Packets out of order”
  • CTF-PWN-kernel-栈溢出(retuser rop pt_regs ret2dir)
  • EUC 2024 I. Disks
  • golang 项目打包部署环境变量设置
  • FPGA原型验证(七):如何选择、搭建原型验证平台?
  • Java-关键字(static,final)
  • redis数据库
  • [case10]使用RSQL实现端到端的动态查询
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • angular2开源库收集
  • Asm.js的简单介绍
  • classpath对获取配置文件的影响
  • Druid 在有赞的实践
  • JavaScript创建对象的四种方式
  • javascript数组去重/查找/插入/删除
  • java正则表式的使用
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • Quartz初级教程
  • ucore操作系统实验笔记 - 重新理解中断
  • Vultr 教程目录
  • Xmanager 远程桌面 CentOS 7
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 扑朔迷离的属性和特性【彻底弄清】
  • 前端存储 - localStorage
  • 少走弯路,给Java 1~5 年程序员的建议
  • 硬币翻转问题,区间操作
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • Spring第一个helloWorld
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • #QT(一种朴素的计算器实现方法)
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (二)hibernate配置管理
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (十一)图像的罗伯特梯度锐化
  • (转)setTimeout 和 setInterval 的区别
  • (自用)仿写程序
  • .describe() python_Python-Win32com-Excel
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .NET 8.0 发布到 IIS
  • .net mvc actionresult 返回字符串_.NET架构师知识普及
  • .NET 设计一套高性能的弱事件机制