【问题标题】:Prove that a specific language is not semidecidable证明特定语言不是半可判定的
【发布时间】:2017-10-28 21:55:54
【问题描述】:

我必须证明语言 L = {: |L(M)|

随机取一个字母E。现在E中有无限个单词。我们只能得出|L(M)|

但我认为这可能不够正式?主要是因为我只是假设检查这种语言的图灵机会让 M 在 E* 中的每个单词上运行。这个假设是否有效,还是我应该更正式一些?

【问题讨论】:

  • 我投票结束这个问题,因为它不是一个编程问题。
  • 你的假设是不充分的。要遍历所有单词,您需要对这些单词进行一些排序。对于任何给定的单词,在它之前只有有限多个其他单词,因此每个单词都可以到达。没有无限循环,因为计算的任何部分都不相同;每个单词都不一样。这是一个无限的过程,但没有任何循环。也许使用图灵机无法确定空虚这一事实或查看这一事实的证明。

标签: computation-theory turing-machines computability decidable


【解决方案1】:

考虑 L 的补集:图灵机编码的语言,其语言包含超过 2016 个字符串。我们可以很容易地证明这种语言是半可判定的。鉴于这一事实,假设 L 也是半可判定的。因为 L 及其补码都是半可判定的,所以我们有一个有效的程序来决定每一个:交替运行 L 及其补码的 TM,最终将列出输入。

要看到 L 的补码是半可判定的,想象一个 TM 对每个可能的输入执行 M 的一步,交替移动,以便每个字符串最终由 TM 的任意多次移动处理。它访问输入的顺序如下:

e,
e, 0,
e, 0, 1,
e, 0, 1, 00, 
e, 0, 1, 00, 01, ...

显然,任何输入字符串最终都会被处理多次。我们的机器模拟 M 在所有可能的输入字符串上运行,一次一步,最终会发现 2017 字符串导致 M 停止接受,否则它将永远运行。如果它发现 2017 年的字符串有效,它会停止接受。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-02
    • 1970-01-01
    • 1970-01-01
    • 2020-05-27
    • 2017-08-26
    • 2019-04-04
    • 1970-01-01
    • 2012-02-19
    相关资源
    最近更新 更多