是一组用于生成字符串模式的递归规则。上下文无关的语法可以描述所有的常规语言,但它们不能描述所有可能的语言。
e.g
遵循这些规则,我们可以生成一种语言:
上下文无关的语法是一个4元组G = (V, Σ, R, S),其中
1. V是一个有限集合,它的元素叫做 Variable,
2. Σ是一个有限集合,它的元素称为 Terminal,
3. V∩Σ =?,
4. S是V的一个元素;它被称为start variable,
5. R是一个有限集合,它的元素称为rules。每条rule 的形式是A→w,其中A∈V, w∈(V∪Σ)*
e.g1
e.g2
e.g3
e.g4
e.g1
?e.g1
e.g2
e.g3
e.g1
定义
例1(?)
例2(?)
Palindrome 回文
例3
以Σ为字母表,以L≥Σ *为Regular语言。那么L是一种无关上下文的语言(所有Regular语言都是无关上下文的)。
例1(?)
例2(?)
每一个上下文无关语法G = (V, Σ, R, S)?都是乔姆斯基范式,如果R中的每个规则都有以下三种形式之一:
?A→BC,其中A、B、C是V的元素,B≠S, C≠S。
?a→x,其中a是V的元素,a是Σ的元素。
?S→ε,其中S为起始变量
更容易使用
让Σ成为一个字母,让L? Σ *成为一个无上下文的语言。存在一种乔姆斯基范式的上下文无关语法,其语言为L(每个CFL都可以用CNF中的一个CFG来描述)。
证明
给定CFG G = (V, Σ, R, S),逐一替换所有非“乔姆斯基”规则。
?启动变量(RHS规则不允许)?也就是在规则的末尾,不能再出现开始变量。也就是说,规则的右侧不能再包含起始符号。
?ε-规则(当A不是启动变量时不允许A→ε)
?所有其他违规行为(A→B、A→aBc、A→BCDE)
步骤
步骤1。从规则的右侧删除start变量。
步骤2。去掉?ε-rules A→ε,其中A∈V?{S}
当删除A→ε-rules 时,插入所有新的替换:
步骤3。移除单位规则A→B,其中A∈V。
步骤4。消除所有右边有两个以上符号的规则。
第5步。消除所有形式为A→ab的规则,其中A和b不都是变量。
理论1:
如果𝐿1and𝐿2是上下文无关的语言,那么它们的联合𝐿1∪𝐿2也是上下文无关的。
理论2:
如果𝐿1and𝐿2是无关上下文的语言,它们的联合𝐿1°𝐿2也是无关上下文的。(?)
理论3:?
如果𝐿1 is是与上下文无关的语言,它们的Kleene闭包𝐿* 1也是与上下文无关的。(?)
例1
下推自动机可以接受的语言类别正是上下文无关的语言类别(有限自动机适用于常规语言)。
成分:tape, stack, state control
tape, tape head, stack, stack head, state control
PDA和NFA唯一的区别就是多了stack
1.六元组
7元组
e.g1 六元组
?$是压箱底的,平时不用
?e.g2
e.g3 7元组
e.g1
e.g1
e.g2
e.g3?
例12中,q0是把前半部分压进去,q1是做前后部分的匹配,q2是可接受状态
e.g1
Yields产生
可识别?
?可判定(可计算)
e.g1
e.g2
单带图灵机和多带实际上是等价的,只是提速和简化了
?e.g1
因为等价性,以后尽可能用高级工具,多带NTM
?
?在有穷的时间内吧所有的分支都走完
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
对角线法(zig-zag)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 补充:区间,实数,无理数都是不可数集? ? ? ? ? ? ? ? ? ? ? ? ? ?
任何在算法上可计算的问题同样可由图灵机计算,或者说,每个有效计算都可以由一台图灵机完成
推论1:图灵机的数量是可数的(因为这些二进制数字和特殊符号是可数的)
命题2:语言的数量是不可数的
由此,我们再次得出一个推论:图灵不可识别的语言是存在的
Acceptance problem for Language LNFA
Acceptance problem for Language LCFG
一个空的CFG是可判定的
我们不知道通用图灵机是否会停止工作。与我们之前看到的所有机器不同,TM可能永远运行下去。
存在一个TM U,它接受一个图灵机描述和输入磁带,并在输入磁带上模拟给定图灵机的一个步骤。(如下图)其中:TM U的输入格式为:<M,w>,其中M是对指定TM的描述,w是(转换后)的输入。
对问题的相关语言无法被一个图灵机识别,因为该图灵机无法对该语言所有输入都能做到停机判断(存在输入导致图灵机无法停机)
不可识别问题:问题的相关语言不能被TM识别?其中注意:一个不可判定语言是可以被识别的