语言超过{1}这是可识别但不可判定的?

时间:2012-12-02 19:23:53

标签: computation

什么是字母{1} *上的语言示例,它是可识别但不可判定的?

我找到了一个例子。经过长时间的搜索,我仍然对这个答案感到好奇。

非常欢迎提示。

3 个答案:

答案 0 :(得分:3)

由于任何有限字母表中的字符串范围都是可数的,每种语言都可以映射到自然数字的子集。所以你只需要使用一个不可判定的递归可枚举语言并将其映射到{1} *的子集。

例如,在停止问题的经典版本中,我们将每个图灵机枚举为二进制字符串;您现在可以对所有图灵机进行排序,并从图灵机到整数定义地图f : TM -> N,其中f(TM) = n如果TM是有序列表中的nth图灵机所有TM。

现在,编码为一元数的图灵机的暂停问题是r.e。但不是可判定的。

答案 1 :(得分:1)

想象一台机器给出两台字母为{1} *的机器,如果第一台机器可以生成第二台可以生成的所有字符串,则接受。

如果它接受我们的机器就会停止。但是对于不在语言中的字符串(第一台给定的机器不能生成第二台机器可以生成的所有字符串),我们的机器可能会停止并拒绝,或者可能永远不会停止。这意味着我们的图灵机是可识别的,但它不是可判定的。

有关可识别和不可识别的语言(特别是第56页)的更多信息,请参阅Encyclopedia of Mathematics

答案 2 :(得分:0)

{1} *中唯一不可确定的子集是空集。

我们可以根据TM在{1} *上定义语言: L = { | M是一个TM,L(M)=空}

因此我们可以证明L不可判定,因为接收L作为输入的TM U需要测试{1} *上的所有元素,然后在M拒绝所有元素的情况下决定接受,因此它将永远不会停止,这意味着L是不可决定的,意味着空的语言是不可决定的