Answers:
在回答您的一般问题之前,让我先退后一步,提供一些历史背景,并回答一个初步的问题:甚至存在不可计算的函数吗?
[注:我们可以将任何函数与语言进行,然后讨论的可判定性而不是的可计算性]
图灵机无法决定某些语言。论点很简单:“仅”有许多种不同的TM,但有无数种种不同的语言。因此,最多只能有可确定的语言,而其余(无限多种)则是不可确定的。进一步阅读:
为了将我们的手放在特定的不确定语言上,想法是使用一种名为对角化的技术(Georg Cantor,1873年),该技术最初用于显示实数比整数多,换句话说,。
构造第一种不确定语言的想法很简单:我们列出所有Turing机器(这是可能的,因为它们具有可追溯的枚举能力!),并在至少一个输入上创建与每个TM不同的语言。
在上面,每一行是一个TM,每一列是一个输入。如果TM拒绝或从不停止,则该单元的值为0;如果TM接受该输入,则该单元的值为1。我们将语言定义为:当且仅当第个TM不接受第个输入时,包含第个输入。d 我我
在上表之后,因为接受。类似地,,但因为不接受。中号1 ε 0 ∉ d 1 ∈ d 中号3 1
现在,假设决定并在表中查找第行:如果第列中有,则接受该输入,但它不在,如果那里,则该输入在但不接受。因此,不能决定,而我们达到了矛盾。 D k 1 k M k D 0 D M k M k D
现在您的问题。有几种方法可以证明一种语言是不确定的。我会尝试触摸最常见的。
第一种方法是通过显示没有TM可以决定语言来直接表明语言是不可决定的。通常,这遵循上面显示的对角化方法。
例。
证明对角语言的(补语)是 。
证明。
假定是可确定的,并让作为其决定者。有两种情况:中号d
有时,我们可以使用闭包属性来显示某些语言是不可判定的,基于我们已经知道不可判定的其他语言。
特别是,如果是不可判定(我们写),则还其补是不可判定:如果决胜局为我们可以只用它来决定通过接受时拒绝,反之亦然。由于总是停止回答(这是决定者),因此我们总是可以反转其答案。大号∉ - [R ‾ 大号中号¯ 大号大号中号中号
结论:对角线语言是不可判定,。大号d ∉ř
可以指出,如果及其补数都是可递归枚举的,那么两者都是可判定的。如果我们想证明一种语言不是递归可枚举的,那是一种比不确定性更强的特性,则这特别有用。¯ 大号
通常,很难直接证明一种语言是不确定的(除非它已经以“对角线”的形式构造)。证明不确定性的最后一种也是最常见的方法是使用我们已经知道无法确定的另一种语言。这个想法是将一种语言简化为另一种语言:表明如果一种语言是可判定的,那么另一种语言也必须是可判定的,但是已知其中一种是不可判定的,从而得出结论,第一种语言也是不可判定的。在“减少相互之间的问题的常见技术是什么?”中阅读有关减少的更多信息 。。
例。
证明对角线语言 。
证明。
我们知道是的。我们将为(称为),也就是说,我们表明如果是可确定的,则可以使用其来确定,这是一个矛盾。大号d ħ P 大号d ≤ ħ P ħ P 大号d
通过将用于的候选(即,对于的任何潜在决策者/接受者的)转换为用于的候选工作,使得当且仅当。我们确保此转换是可计算的。因此,在决定告诉我们,无论是否,所以如果我们可以决定HP,我们也将是能够决定 .¹大号d 大号d 瓦特' ħ P 瓦特∈ 大号d 瓦特' ∈ ħ P 瓦特'瓦特∈ 大号d 大号d
转换如下。取一些,然后输出,²其中是一个行为类似于的TM ,但是如果拒绝,那么会陷入无限循环。瓦特' = ⟨ 中号',⟨ 中号⟩ ⟩ 中号“中号中号中号'
让我们看看满足要求。
如果,则表示暂停并接受输入。因此,也暂停并接受输入。因此,。
另一方面,如果则在上拒绝或永不停止。在这两种情况下,都会在上进入无限循环。因此,瓦特∈ 大号d中号⟨ 中号⟩ 中号' ⟨ 中号⟩ ⟨ 中号',⟨ 中号⟩ ⟩ ∈ ħ P 瓦特∉ 大号d中号⟨ 中号⟩ 中号' ⟨ 中号⟩ ⟨ 中号',⟨ 中号⟩ ⟩ ∉ ħ P 瓦特∈ 大号d 瓦特' ∈ ħ P
,并且我们已经完成了仅时才显示从而表明。
进一步阅读:通过减少标记可以找到许多减少和证明语言不可判定性的示例。
有效的减少还有更多限制。转换本身必须是可计算的,并且对于任何输入都必须定义良好。
的输入看起来像,其中是TM,是一些字符串。因此,这里我们选择字符串作为机器的编码,这只是一些字符串。⟨ 中号,X ⟩ 中号X X 中号
“因此,每当我们希望证明,都需要将(或)减小到它?难道没有捷径吗?”L D H P
好吧,事实上,有。这是赖斯定理。
定理说,许多具有一定结构的语言是不确定的。由于所有这些语言都具有此特定结构,因此我们可以进行一次归约,并将其应用于任何接受类似结构的语言。
该定理以以下方式正式表述:
定理(大米)。 给定属性 ,以下语言是 大号小号大号小号 = { ⟨ 中号⟩ | 大号(中号)∈ 小号}
集合是中语言的子集; 我们称其为属性,因为它描述了接受的语言的属性。语言满足此属性的所有TM都属于。R E L (M )L S
例如,可以是接受的语言恰好包含两个单词的属性:大号(中号)
大号小号2大号š 2 = { ⟨ 中号⟩ | 大号(中号)∈ 小号} = { ⟨ 中号⟩ | | L (M )| = 2 } 。
在这种情况下,是所有TM的集合,其语言恰好由两个词组成:
该属性可以是很简单,但它不可能是所有的RE语言,或者没有在RE语言。如果或则该属性被认为是微不足道的,并且是可计算的。一个简单的的示例是仅包含一种语言的语言,例如。请注意,尽管仅包含一种语言,但是有无限多的机器语言为,因此是无限的且不确定。小号= - [R Ë 大号小号小号小号Ç ö 米p 升Ê 吨Ë = { Σ * } 小号中号Σ * 大号小号Ç ö 米p ë 吨ë
该定理非常强大,可以证明许多语言的不确定性。
例。
语言,是不确定的
证明。
我们可以写如,即该属性。这是一个非平凡的属性(它包括语言,但不包括例如语言。因此,根据莱斯定理是不确定的。
我们现在证明该定理。如上所述,我们将展示从减少到(对于任何任意非平凡)。
证明。
令为非平凡属性。我们显示,也就是说,将降低为这样,如果我们可以确定我们就可以决定(我们知道这是不可能的,因此,无法确定)。在下面的证明我们假设空的语言不是的一部分,也就是。(如果空语言为,则补数属性上的等效证明有效,我将省略其详细信息)。由于不平凡,它至少包含一种语言;我们称该语言为并假设是一台接受的机器(由于 仅包含RE中的语言,所以该机器存在)。
回想一下,在这样的减少(见第3节以上),我们需要展示如何将输入转换用于为输入为使
令,将其转换为,其中机器(在输入)的描述如下:
我们看到这种转换是有效的。首先请注意,给定,构造的描述很简单。
如果,则在停止。在这种情况下,前进到步骤2,并且行为类似于。因此,它的接受语言为。因此,。
如果则在循环。这种情况下,上的任何输入环路 -它卡住在步骤1中所接受的语言在这种情况下是空的,。因此,。
赖斯的定理为我们提供了一种简单的方式来表明某种语言是满足某些属性是不可判定,那就是。赖斯定理的扩展版本使我们能够确定语言是否可递归枚举,即通过检查满足某些其他属性来确定。
定理(Rice,扩展)。 给定属性,当且仅当以下所有三个语句共同时,语言 是递归可枚举的()保持
- 对于任何两个,如果,并且还然后也。
- 如果则存在一个有限的子集使。
- 中所有有限语言的是可枚举的(换句话说:存在一个枚举所有有限语言的TM )。
证明。
这是一个“当且仅当”定理,我们应证明其两个方向。首先,我们证明如果条件(1,2,3)中的一个不成立,则。之后,我们将显示如果所有三个条件同时成立,则。
如果(1,2)成立,但(3)不成立,则。
假设,我们将看到有一种方法可以接受任何有限语言(因此,所有这些语言的集合都是RE),因此条件(3)成立,我们陷入了矛盾。如何确定一个有限的属于?轻松-我们使用的描述构建机器只接受在话,现在我们运行的机器上(记住-我们假设,所以是接受机!)。如果则并且由于,它的机器将在输入上说“是” ,我们就完成了。
如果(2,3)成立,但(1)不成立,则。
我们假设中为我们将证明我们有一种方法来确定,从而导致矛盾。
由于条件(1)不成立,有语言和它的一个超集,使。现在,我们要重复在第4节来决定的说法:给定的输入为,我们构建了一个机器,其语言如果的语言,其语言为。然后,我们可以确定:上的暂停,或的RE机器接受; 我们可以并行运行,并确保至少有一个会停止。
让我们给出构造的细节(在输入):
为什么这样做?如果则1.1永远不会停止,并且完全接受在步骤1.2中接受的所有输入,因此。另一方面,如果,则在某些时候,步骤1.1停止,正好接受。可能会事先接受,但是由于,在这种情况下不会更改的语言。
如果(1,3)成立,但(2)不成立,则。
同样,我们将假设并证明,这是一个矛盾。
如果条件(2)不成立,则对于任何,其所有有限子集满足(请注意,由于,必须是无限的)。如上文所述,为了确定给定输入,我们构造了语言为的机器,如果和一些有限元否则为。矛盾的产生方式与上述类似。
该机器的构造与我们之前制造的非常相似。机器(在输入)执行以下操作:
它认为,如果,则在某个点,例如经过1000步后,在停止。因此,步骤1将停止(并拒绝)任何长度输入。因此,在这种情况下,是有限的。还要注意的是,特别是,我们的条件(2)无效的假设,我们有。
另一方面,如果,则步骤1从不停止,而我们从不拒绝在步骤2。在这种情况下,很容易看到且在特别是,。
我们剩下来展示扩展定理的另一个方向。也就是说,我们需要证明,如果所有条件(1,2,3)都成立,那么我们就有一个TM接受,即。换句话说,我们需要显示一个机器使得对于任何输入为其,机器接受该输入,。
这是机器行为方式(在输入):
为什么行得通?如果则它具有有限子集,并且一旦输出该子集,步骤2.2 / 2.3将发现接受该语言中的所有单词,并且接受。
另一方面,如果,则对于任何它都不能接受所有单词。实际上,根据条件(1),任何也在,因此,如果接受某个所有单词,则,因此,矛盾的。
最后,请注意,以下是上述内容的简单(且非常有用)推论:
推论(米,扩展)。 给定非平凡属性,因此,语言 不可递归枚举,即。∅ ∈ 小号大号小号 = { ⟨ 中号⟩ | 大号(中号
赖斯定理是一种有用的工具。它说的是:
让一个非平凡组部分可计算一元函数和一个哥德尔数的。然后的索引集
不是递归的。
您还发现它也以图灵机编码(或其他任何图灵完整的编程语言)表示,即 ; 这里定义Gödel编号。
也就是说,您可以使用赖斯定理来证明这样的集合是非递归的,它们是非平凡函数集的索引集(或者可以简化为)。
请注意,有一个扩展名可用于显示某些索引集不可递归枚举。
让为Gödel编号。考虑一组自然
。
现在,因为对于
可以应用莱斯定理,而不可确定。
由于许多人都不熟悉Gödel编号,因此请注意,该示例在图灵机(即程序)方面也可以使用。
考虑一组自然
这当然是不可计算的。但是,不是为任何设置的索引!令对于某些。由于是Gödel编号,因此存在(无限多个)其中但是对于所有成立,因为。P ˚F = φ 我我∈ 甲φ Ĵ ≠ 我φ Ĵ = ˚F Ĵ ∉ 甲˚F (2 )= 我≠ Ĵ
注意这一点!根据经验,如果在“右侧”上使用函数的索引,或者将其用作集合定义中函数的参数,则可能不是索引集。您可能需要Gödel编号的属性和定点定理,以证明一个集合没有索引集。