《计算复杂性:现代方法》——1.4 机器的位串表示和通用图灵机

1.4 机器的位串表示和通用图灵机

几乎显而易见的是,图灵机可以表示为位串:这只需将图灵机描写在纸上,再用0,1序列将描写过程编码即可。编码图灵机得到的位串可以作为另一个图灵机的输入。这个简单的观察结果有着十分深刻的内涵,因为它使得软件、硬件和数据之间的区别变得模糊。历史上,该结果曾直接推动人们发明了通用电子计算机。计算机也是一个图灵机,通过在其上加载恰当的程序(或软件),它就能用来自动地求解指定的任意计算任务。

1.4.1 通用图灵机

第一个注意到通用图灵机可能存在的人是图灵(Turing),他证明了给定任意图灵机M的位串表示作为输入,通用图灵机可以模拟M的运行。对当代的人而言,台式或便携式的通用计算机已经是司空见惯的事情,因此人们已经理所当然地接受了通用图灵机的存在性。然而,留意当初的这个违背直觉的结论仍是有益的。通用图灵机的各种参数均是固定的,包括字母表的大小、状态的数量和带的数量。被模拟的图灵机的各项参数均可能比通用图灵机的大得多。这之所以不是障碍,得益于编码的能力。即使通用图灵机的字母表很简单,其他图灵机的状态和转移函数也可以编码后放于通用图灵机的带上,然后由通用图灵机一步一步地模拟执行。

现在,我们给出一个计算高效的图灵构造,该构造是亨尼(Hennie)和斯特恩斯(Stearns)[HS66]给出的。在介绍其核心思想之前,我们先证明其宽松的形式,亦即将下面结论中的TlogT换成T2。此外,由于本书将多次用到高效通用图灵机,因此本章结束前我们将给出它的完整证明(参见1.7节)。

具有时间界限的通用图灵机

时间: 2024-09-25 18:38:07

《计算复杂性:现代方法》——1.4 机器的位串表示和通用图灵机的相关文章

APIHOOK的方法选择Windows7,64位系统

问题描述 APIHOOK的方法选择Windows7,64位系统 Win7的话Hook用什么方法好一些,用户级ring3,学习过一下APIHOOK,使用过CAPIHook类,但是有些不稳定,会异常退出,使用mhook库的话会稳定一些,但是有没有其他办法呢 微软的detours库暂不考虑,这样的话有什么好的方法或者建议呢 解决方案 可以使用一些api hook的库函数来实现 解决方案二: http://bbs.pediy.com/showthread.php?p=1246968

数据结构基本概念和术语之位字节、字、位串、元素等_应用技巧

数据结构基本概念和术语:位.字节.字.位串.元素.数据域.物理结构.逻辑结构  位(Bit):"位(bit)"是电子计算机中最小的数据单位.每一位的状态只能是0或1.  字节(Byte):8个二进制位构成1个"字节(Byte)",它是存储空间的基本计量单位.1个字节可以储存1个英文字母或者半个汉字,换句话说,1个汉字占据2个字节的存储空间.  字:"字"由若干个字节构成,字的位数叫做字长,不同档次的机器有不同的字长.例如一台8位机,它的1个字就等

把十六进制的位串转化为byte数组

方式一: Java代码   /**        * Convert hex string to byte[]        * @param hexString the hex string        * @return byte[]        */         public static byte[] hexStringToBytes(String hexString) {             if (hexString == null || hexString.equals

WIN7_64位系统安装oracle以及PLSQL方法(不用装32位oracle客户端)

一.oracle10g安装,比较简单 1.去Oracle网站下载Vista版的Oracle:Oracle Database 10g Release 2 (10.2.0.4) for Microsoft Windows Vista x64 and Microsoft Windows Server 2008 x64 2.解压下载的安装文件10204_vista_w2k8_x64_production_db.zip 3.修改验证文件来支持windows7 修改\stage\prereq\db\refh

布同 Python中文问题解决方法(总结了多位前人经验,初学者必看)_python

因为Python是自带文档,可以通过help函数来查询每一个系统函数的用法解释说明.一般来说,关键的使用方法和注意点在这个系统的文档中都说的很清楚.我试图在网上找过系统文档的中文版的函数功能解释,但是都没有找到,所以我决定将就使用英文版的系统自带的函数解释来学习. 如果你想进行Tkinter和wxPython编程,想要知道一般的widget的使用方法和属性介绍,英文又不是太好的话,我推荐你,你可以去看看<Python与Tkinter编程>这本书,里面392页到538页的附录B和附录C选择了常用

C#获取机器码的方法详解(机器名,CPU编号,硬盘编号,网卡mac等)_C#教程

本文实例讲述了C#获取机器码的方法.分享给大家供大家参考,具体如下: using System.Runtime.InteropServices; using System.Management; using System; public class HardwareInfo { //取机器名 public string GetHostName() { return System.Net.Dns.GetHostName(); } //取CPU编号 public String GetCpuID()

《计算复杂性:现代方法》——导读

前 言 计算复杂性理论在过去三十多年中发展迅速.自1990年以来取得的出人意料的结果和基础性的结果本身就可以写出一部书.这些结果涉及的领域非常广泛,包括:经典复杂性类的概率型新定义(IP=PSPACE和各种PCP定理)以及它们在近似算法中的应用,肖尔(Shor)为量子计算机设计的整数因数分解算法,对人们目前处理著名的P?=NP问题 译文用"P?=NP"来表示原文中的"P versus NP".--译者注的各种方法为什么未能获得成功的理解,去随机化理论和基于计算难

《计算复杂性:现代方法》——1.7 定理1.9的证明:O(TlogT)时间的通用模拟

1.7 定理1.9的证明:O(TlogT)时间的通用模拟 本章学习内容 ●存在许多等价方法对计算过程进行数学建模.我们采用标准的图灵机定义.●图灵机可以表示为位串.存在通用图灵机,它可以(代价很小地)模拟任意给定的用位串表示的图灵机.●存在函数不能被任意图灵机计算,不管计算时间多长.停机问题是不可计算的.●类P是由可以被图灵机在多项式时间内求解的所有判定问题构成的.我们称P中的问题是可以被高效求解的.●图灵机定义中(带的数量.字母表大小等)底层结构的选取不是本质的,因为它们不会改变P的定义. 本

加密相关的一些方法

(1)求两个字节数组的异或 Java代码   /***       * 求异或.       *        * @param strOldHex  : hex string       * @param strKeyHex  : hex string       * @return       */       public static byte[] xOR(String strOldHex, String strKeyHex) {           byte[] oldBytes =