一个集合的大小界限的可识别性

问题描述

试图自学计算理论,偶然发现了这个问题:

假设我们有两个集合:

  1. {T | T 是图灵机,L(T) 至少包含 1001 个字符串}
  2. {T | T 是图灵机,L(T) 最多包含 1001 个字符串}

其中一个是可识别的,另一个则不是。

哪个是哪个,为什么?

直觉上,我认为具有“至少 1001 个字符串”的那个是不可可识别的,因为它没有字符串数量的上限,因此数量可能是无限的,但话又说回来,一些无限的语言应该是可以识别的。

我对这个问题很困惑。表明一组可识别而另一组不可识别的正确直觉和正式方法是什么?

解决方法

要建立关于如何判断语言是否可识别、可判定等的直觉,我建议查看 these notes I put together for a class on computability theory

我发现最有用的关键直觉是这种证明事物的想法 - 如果您有语言中的字符串,您是否可以做一些演示来向持怀疑态度但诚实的观察者证明您是对的?因此,例如,在第一种语言的情况下,您可以告诉观察者“注意这个 - 我将在这组 1001 个字符串上运行这个 TM,我知道它会在最多k步。”然后观察者可以观察 k 步并看到它接受所有字符串,此时他们肯定知道您是对的,并且 TM 的编码确实在语言中。

另一方面,您能想出一个演示来证明 TM 至多接受一定数量的字符串吗?我不能,那是因为没有通用的方法来做到这一点。因此,第二种语言是无法识别的。但证明这是另一个步骤 - 您需要将一些已知的非 RE 语言减少到它,或者使用某种自我引用技巧来证明它无法识别。还有第三种方式——你可以证明它的补语是可识别的但不可判定的,这将确保语言本身是不可识别的。最后一个选项在这里可能是最简单的 - 你能证明补语是可以使用上面的参数识别的,然后证明语言是不可判定的吗?