计算理论中的莱斯定理(Rice's Theorem)——证明与应用

我们给出一个在探讨不可判定性时非常有用的结论——莱斯定理(Rice‘s Theorem)。首先,我们来看前面讨论过的几个不可判定的例子:

这些都是由图灵机识别之语言的性质。而莱斯定理告诉我们,任何由图灵机识别之语言的非平凡性质(nontrivial property)都是不可判定的。

最后通过几个例子来探讨一下莱斯定理的应用。来看看下面这个语言能否使用莱斯定理来确定其可判定性。

{<M> | M是一个TM,且L(M)可由一些拥有偶数个状态的图灵机识别}

首先来确定这是否是一个语言属性,显然是的。那它是否是非平凡的?可惜它不是。因为每一个图灵可识别语言都可以被某个拥有偶数个状态的图灵机所识别。这是因为,如果识别该语言的图灵机只有奇数个状态,你完全可以给它追加一个永远无法到达的状态。这并不改变图灵机的功能,却使其得以满足拥有偶数个状态这样的要求。所以这个例子不能应用莱斯定理来进行分析。那这个语言是否可判定的呢?当然是的,因为这个语言给出的其实是所有图灵机的集合。判定某台机器是否是图灵机,这显然是可以做到的。

如果我们把上述语言中的“拥有偶数个状态的图灵机”改为“至多拥有37个状态和37个带字符的图灵机”,那这个语言能否使用莱斯定理来确定其可判定性。首先,这仍然是一个语言属性,那它又是否是非平凡的呢。答案是肯定的,因为显然有的语言满足该条件而有的语言不满足该条件。我们当然可以创造出一个仅用37个状态之图灵机无法识别的语言。进而可以根据莱斯定理断定这个语言是不可判定的。我们还要注意,这个语言同下面这个语言是不同的,它给出的并非是语言性质,而且它是可判定的。

{<M> | M是一个TM,且它至多拥有37个状态和37个带字符}

如果把原问题中的描述再改成“可由一些至少拥有37个状态和37个带字符的图灵机所识别”那情况又会怎样?显然,这样的性质是非平凡的。所有的图灵机可识别语言都可以被这样定义的图灵机所识别。添加永远不可达的状态就可以让本不满足需求的图灵机拥有超过37个状态,所以该问题不能应用莱斯定理来判定。可见,确定是否属于语言性质,以及性质是否为非平凡的,是应用莱斯定理时的关键。

计算理论中的莱斯定理(Rice's Theorem)——证明与应用

时间: 2024-10-25 12:08:58

计算理论中的莱斯定理(Rice's Theorem)——证明与应用的相关文章

计算机软考笔记之《计算理论》

1.引言 为了回答诸如此类问题:哪些问题可以通过计算机解决?语言之间是否存在优势?运行一个程序前,是否可以确定该程序将要停止(终止)还是永远运行?用一种特定的语言解决一个问题需要多长时间?我们求助于一门学科:计算理论. 2.简单语言 通过简单语言可以看到计算机解决任何问题所需要最少语句是三条.它们是递增语句,递减语句和循环语句. 我们可以证明这种简单的语言能模拟一些流行语言中的多个语句.我们把每个模拟称为一个宏,它可以在其他模拟中使用,而不需要重复编码. ①简单语言中的宏 ②输入和输出 3.图灵

Marr的视觉计算理论

? ? ????Marr的视觉计算理论立足于计算机科学,系统地概括了心理物理学.神经生理学.临床神经病理学等方面已取得的所有重要成果,是迄今为止最为系统的视觉理论.Marr 的视觉计算理论虽然在细节甚至在主导思想方面尚存在大量不完备的方面,许多方面还存有许多争议,但至今为止仍是广大计算视觉研究人员接受的基本框架.计算机视觉这门学科的形成,应该说与这一理论框架有密切的关系,下面我们从几个方面来描述这一理论框架. Marr 从信息处理系统的角度出发,认为视觉系统的研究应分为三个层次,即计算理论层次.

【分享】IT产业中的三大定理(二) —— 安迪&amp;比尔定理 (Andy and Bill&#39;s Law)

摩尔定理给所有的计算机消费者带来一个希望,如果我今天嫌计算机太贵买不起,那么我等十八个月就可以用一半的价钱来买.要真是这样简单的话,计算机的销售量就上不去了.需要买计算机的人会多等几个月,已经有计算机的人也没有动力更新计算机.其它的 IT 产品也是如此. 事实上,在过去的二十年里,世界上的个人微机销量在持续增长.2004 年,英特尔公司估计,五年内,即到 2009 年,世界上 PC(包括个人机和小型服务器)的销量会增长 60%,远远高于经济的增长.那么,是什么动力促使人们不断地更新自己的硬件呢?

iOS7中计算UILabel中字符串的高度

iOS7中出现了新的方法计算UILabel中根据给定的Font以及str计算UILabel的frameSize的方法.本人提供category如下: UILabel+StringFrame.h ////  UILabel+StringFrame.h//  LabelHeight////  Copyright (c) 2014年 Y.X. All rights reserved.//#import <UIKit/UIKit.h>@interface UILabel (StringFrame)- 

使用Linq求和方法Sum计算集合中多个元素和时应该注意的性能问题

提出问题 本文使用下面的实例来说明问题,以下是实例的完整代码. //************************************************************ // // Sum应用示例代码 // // Author:三五月儿 // // Date:2014/09/10 // // http://blog.csdn.net/yl2isoft // //**********************************************************

计算DXFReader中多边形的面积代码示例

在DXFReader中, 一般的多边形的面积计算绝对值 其中K表是顶点的数目,它们的坐标,用于在求和和, 所以用下面的代码就可以计算出一个封闭的多段线的区域: view source print? 01 Dim Vertex As Object 02 Dim Entity As Object 03 Dim k As Long 04 Dim i As Long 05 Dim Area As Single 06 07 With DXFReader1 08 09  For Each Entity In

计算子网掩码中存在的主机数

一个局域网中某台主机的ip地址为176.68.160.12,使用22位作为网络 ,那么该局域网的子网掩码为____,最多可以连接的主机数为____.该局域网的子网掩码是255.255.252.0最多可以连接的主机数量为1022台计算子网掩码的过程是:子网掩码是由连续的"1"和连续的"0"构成,所以既然网络位是22位,而子网掩码一共是有32位组成,说明前22位都是1,后10位都是0 因此用2进制表示就是11111111 11111111 11111100 000000

计算直方图中最大矩形面积

题目是计算直方图中的最大矩形面积,下面是我的做法,我在网上也看到有人说可以通过栈的方式来解决,因为时间问题,并没有马上尝试,下回有时间在尝试下吧!! 还有这题有变式:计算矩阵中最大的矩形面积,其中矩阵中元素只能为1和0,代码下次补发吧!! 代码如下: #include<iostream>using namespace std; int maxSquare(const int pos,const int n,const int height[]){ if(n==1) return height[

python之Counter类:计算序列中出现次数最多的元素

Counter类:计算序列中出现次数最多的元素 1 from collections import Counter 2 3 c = Counter('abcdefaddffccef') 4 print('完整的Counter对象:', c) 5 6 a_times = c['a'] 7 print('元素a出现的次数:', a_times) 8 9 c_most = c.most_common(3) 10 print('出现次数最多的三个元素:', c_most) 11 12 times_dic