什么是co-Turing可识别,如何使用Co-Turing概念证明两种语言的补语是可判定的?

时间:2017-04-10 16:38:43

标签: theory computation-theory turing-machines

设L1和L2为两种语言,使得不存在属于L1和L2的字符串w。 我正在努力学习如何证明,如果L1和L2都是共同图灵可识别的,那么存在一个可判定的语言A,使得L1⊆A和L2⊆A`。 A` - A的补充

1 个答案:

答案 0 :(得分:0)

我们可以假设L1L2都不是可判定的,因为如果是,则解决方案很简单(如果A = L1,请A' = L2L1 }或L2分别是可判定的。特别是,L1L2都不是图灵可识别的。

鉴于此,A必须等于集合L1,并添加更多元素(如果要成为超集,则必须至少包含A1中的元素)。由于L2A'的子集,因此添加到L1以形成A的元素都不能在L2中。此外,我们必须添加无限多个项目,因为添加有限的项目无法呈现A可判定的L1不在哪里。

L1L2以外的内容拆分为两种语言R1R2,以便这些语言没有任何共同之处,每个字符串都只是其中之一L1L2R1R2。此外,选择R1R2,以便R1具有图灵可识别性,R2是图灵可识别的,两个集合都是无限的。让A = L1 U R1。现在,A' = L2 U R2

  1. A是图灵可识别的。如果w不在L1,我们最终会认识到这一事实。如果w不在R1,我们可以决定这一事实。因此,我们最终可能会发现w都不在。

  2. L2是c-Turing识别的。如果w不在L2,我们最终会认识到这一事实。如果它不在L2中,则它位于AR2中。但我们可以决定w R2是否在R2,因为w是可判定的。因此,如果我们发现L2不在R2并且确定它不在w中,我们就会发现A位于A。因此,A是图灵可识别的。

  3. 我们在1中看到A是图灵可识别的,而在{2} A是图灵可识别的。因此,A'是可判定的。因此,L1可以判定。

  4. 请注意,当我们将L2use Symfony\Component\Validator\Validation; use Symfony\Component\Validator\Constraints as Assert; $validator = Validation::createValidator(); $constraint = new Assert\Collection(array( // the keys correspond to the keys in the input array 'name' => new Assert\Collection(array( 'first_name' => new Assert\Length(array('min' => 101)), 'last_name' => new Assert\Length(array('min' => 1)), )), 'email' => new Assert\Email(), 'simple' => new Assert\Length(array('min' => 102)), 'gender' => new Assert\Choice(array(3, 4)), 'file' => new Assert\File(), 'password' => new Assert\Length(array('min' => 60)), )); $violations = $validator->validate($input, $constraint); 内的内容“分割”成两种无限语言时,我们会在那里挥手,一种是图灵可识别的,另一种是图灵 - 识别。似乎可以安全地假设在任何无限的语言中,必须存在可识别但不可判定的该语言的适当子集。您可能希望单独查看和/或单独验证以进行验证。证明的观点:任何无限集的元素都可以按照字典顺序排列,在这种情况下,所有字符串的语言都会出现在字母表中;因为在所有字符串集上都有这种可识别但不可判定的语言,因此在这组字符串上也必须有可识别但不可判定的语言。重要的是要注意(L1 U L2)'是可识别的,因为可能需要使任何参数严格。