【问题标题】:How to decide if a language is In R or RE or CoRE如何确定一种语言是 In R 还是 RE 还是 CoRE
【发布时间】:2019-07-12 05:41:28
【问题描述】:
我有这三种语言我不知道如何确定该语言是R还是RE还是coRE
L1={<M>| epsilon belongs to L(M)}
L2={<M><w>|M doesn't accept any prefix of w}
L3={<M>|there exists w where M accepts all the prefixes of w}
【问题讨论】:
标签:
turing-machines
computation
【解决方案1】:
对于前两个,称为dovetailing 的技术可以帮助您证明语言是可枚举的。
对于 L_1:
给定所有图灵机的哥德尔编号,计算 M1(eps) 的第 1 步,
然后是 M2(eps) 的第 1 步,然后是 M1(eps) 的第 2 步,
1 个 M3(eps), 2 个 M2(eps), 3 个 M1(eps)
...
也就是以“步数”和“图灵机数x”为轴的坐标系的左下三角。
如果 epsilon 在 L(Mx) 中,则它在 n 个步骤中被接受。使用您的方法,当您到达坐标 [x,n] 时,您将检测到这一点。对于每个 [x,n] 都是如此,因此您可以以这种方式枚举所有机器。
由于一个词只有有限数量的前缀,你也可以通过像上面的每个前缀的坐标系(不是顺序的,而是交织的),将这种方法应用于 L2。所以 L2 也是可枚举的。
对于 L3,存在 w 其中 M 接受 w 的所有前缀,那么对于仅包含 w 的第一个字母的字符串也是如此。所以你只需要检查它是否有有限的字母表符号,就像 L2 一样。
关于这三种语言的递归性,例如阅读 answer 处理您的 L1。