“设 $\mathcal P$ 是图灵可识别语言的一个语义性质,即它只取决于机器识别的语言,而不取决于机器语法;并且 $\mathcal P$ 非平凡:有某台机器识别的语言具有该性质,也有某台…”
形式陈述
语言
等价地,成员资格函数
是总可计算函数。“总”要求每个输入都有最终答案,而不是只在某些输入上找到答案。
将停机也显式写出,定义的量词是“存在一台
直觉
搜索到一个证据后回答“是”,通常比确认永远没有证据容易。可判定性要求把后者也完成:不属于语言时,机器必须在某个有限时刻明确回答“否”。
| 输入情况 | 判定器 | 识别器 |
|---|---|---|
| 最终接受 | 最终接受 | |
| 最终拒绝 | 可以拒绝,也可以一直运行 |
识别器不能错误地接受非成员,但可以不回答。这个不对称性正是可识别语言与可判定语言的区别:识别器的回答仍须正确,只是非成员一侧缺少终止保证。
例子与边界
一个完整的判定过程
考虑
例如 aaabbb 经三轮匹配耗尽;aabbb 在匹配完两个
有限图上的可达性同样可判定:逐个处理尚未访问的可达顶点,最多处理图中全部顶点。对上下文无关文法的成员问题,也可以用CYK 算法在有限表格中求出答案。
输入有限,不意味着运行有限
程序源代码是有限字符串,却能描述无限循环。因此,给定程序和输入后问它是否停机,仍可能没有总能终止的判定器。停机问题正是这样的例子:直接模拟能确认所有最终停机的实例,却无法把“一直没有停机”自动转化成有限时刻的否定结论。
可判定性暂时不限制时间效率。一个在所有输入上都停机、但可能运行指数甚至更久的算法仍是判定器。反过来,某个启发式程序在大量测试上快速结束,也不能替代对全部输入的正确性和终止证明。
推论与应用
正反两边都可识别,恰好就是可判定
核心关系是
正向很直接:判定器本身识别
反向设
不能先把
可组合性与归约
可判定语言对补、并、交封闭。对并集,先后运行两个判定器,再对结果取逻辑或;它们都必停机,所以组合程序也必停机。交集同理取逻辑与。
连接也保持可判定:长度为
Kleene 星也保持可判定。对非空输入,只枚举把它切成非空连续片段的方案,共
若存在总可计算的映射归约
参考资料
- Michael Sipser, Introduction to the Theory of Computation, 3rd ed., Cengage, 2013,§4.1,判定器、可识别性以及补语言刻画。
- MIT OpenCourseWare, 6.045J Automata, Computability, and Complexity,Lecture 7 “Decidability” 与 Lecture 8 “Undecidable problems”。
- Hartley Rogers Jr., Theory of Recursive Functions and Effective Computability, MIT Press, 1987,Chapter 5。