Lecture 5. Decidability 可判定性
与正则语言相关的可判定性问题
用语言 表示包含了所有 DFA 的编码以及 DFA 接受的串的编码。于是,DFA 能否接受输入串 ,等价于串 是否属于语言 。
定理: 是一个可判定语言,decidable。要证明,只需要构建一个判定器 。用自然语言描述这个判定器就算:对于输入 ,以 作为输入模拟 DFA ,若模拟以接受状态结束则接受;若以非接受状态结束则拒绝。证毕。
类似地, 也是一个可判定语言。毕竟 NFA 与 DFA 是等价的。要证明,只需要设计一个图灵机(判定器),把输入的 NFA 转换成 DFA,然后传给上一个问题的判定器 就好了。证毕。
类似地, 还是一个可判定语言。因为正则表达式可以转换成 NFA。那么要证明,只需要构造一个图灵机(判定器),把输入的正则表达式转换成与之等价的 NFA,然后再交给上一问的图灵机 ,让它转成 DFA,于是又回到了第一个问题。证毕。
综上,DFA、NFA 是否能识别一个串,以及正则表达式是否能派生一个串,这三个问题都是可判定的。
语言 ,表示 识别的语言是空的(不接受任何串)的 DFA 的编码的集合。相当于这个 DFA 从起始状态到接受状态,找不出任何的路径。只要又任意一条路径能从起始状态连接到接受状态,那么这个 DFA 接受的语言就不是空的。
定理: 依然是一个可判定的语言。这个图灵机(判定器) 和之前构造的那个判定无向图是否联通的几乎完全一样,只是变成了有向图而已。最后看看接受状态有没有被标记就好了。证毕。
语言 ,表示识别同一个语言的俩 DFA 的编码的集合。若两个 DFA 识别相同的语言,则 。也即是说,这个语言表示 是否识别相同的语言。
定理: 还是一个可判定的语言。证明思路是:如果 和 不相等,那么一定能分成两种情况,一种是 包含但 不含,另一种就是 不含但是 包含。于是,判定器 要做的就是:把这两种情况并起来,得到 。然后,只需要在判定器 上面执行 ,即看看 是不是空语言。如果是(即 接受了 ,那就说明 ),那么 接受,否则拒绝。

乔姆斯基范式 Chomsky Normal Form
乔姆斯基范式,就是所有的替换规则都要么是 要么是 的形式。也就是说,所有替换规则都是一个变元变成俩,或者一个变元变成终结符的形式。此外,允许存在 的规则,但是 不能是起始变元。
定理 1:每一个 CFG 都可以转换成乔姆斯基范式。
定理 2:如果 在 CNF 当中,且 ,那么所有 的派生过程,都需要 步。可以用语法分析树来辅助理解。
与上下文无关语言相关的可判定性问题
语言 。一个 CFG 是否能派生字符串 ,等价于 是否属于语言 。
定理:语言 是可判定的。证明思路是:先把 CFG 转化为乔姆斯基范式的形式;然后尝试一遍所有步骤为 的派生过程,如果任意一个能成功派生 则接受,否则拒绝。
语言 。
定理:语言 是可判定的。证明思路是,把 CFG 想象成一个语法分析树。从叶子节点(终结符)开始,反向找连通块。就像之前标记无向图连通分量一样。如果最终起始变元被标记了,那么就意味着起始变元能达到任意一个终结符,意味着这个 CFG 产生的语言非空,则拒绝。如果起始变元没有被标记,意味着无法产生任何的串,接受。
语言 。
定理:语言 不是可判定的!因为 CFL 在交补运算下不封闭,所以不能用之前 的思路证明出可判定性。习题 5.1 要求证明该语言不可判定(Lab 5)。
语言 。
定理:语言 不是可判定的!
语言 。
定理:虽然语言 不是可判定的,但是,这个语言是图灵可识别的! 证明思路是设计一个图灵机 ,在输入串 上面模拟 ,若 以接受状态结束则 接受,若 永远运行或者进入拒绝状态则 也拒绝。
上面的这个图灵机 又叫做通用图灵机(universal),因为它可以模拟任何其他的图灵机。
由此可见,「可判定」比「图灵可识别」更加严格。
