软考中级习题与解答——第二章_程序语言与语言处理程序(2)

程序语言处理习题解析

例题11

例题12

1、知识点总结

2、选项分析

A. 可用正则式 a*b* 表示

  • 这个说法是错误的。 正则表达式 a*b* 表示“零个或多个 a”后面跟着“零个或多个 b”。它能匹配 aaabb,ab,aaabbbb 等 a 和 b 的数量不相等的字符串。而语言 L 严格要求 a 和 b 的数量必须相等。因此,a*b* 描述的语言集合远大于 L

B. 不能用正则式表示,但可用不确定的有限自动机识别

  • 这个说法是错误的。 根据克莱尼定理 (Kleene's Theorem),正则表达式、确定的有限自动机 (DFA) 和不确定的有限自动机 (NFA) 在表达能力上是完全等价的。如果一个语言不能用正则表达式表示,那么它也绝对不能被任何有限自动机(无论是DFA还是NFA)所识别。

C. 可用正则式 aᵐbᵐ 表示

  • 这个说法是错误的。 aᵐbᵐ 不是一个标准的正则表达式。正则表达式的语法中不包含这种用来表示“计数和回溯引用”的变量 m。标准的正则表达式只能表达有限次的重复(如 a{5})或者不确定但无关联的重复(如 a*)。它无法表达“b 的数量必须等于前面 a 的数量”这种依赖关系。

D. 不能用正则式表示,但可用上下文无关文法表示

  • 这个说法是正确的。

  • 为什么不能用正则式表示? 正则表达式的计算模型是有限自动机。有限自动机的核心特征是它只有有限的内存(即它的状态)。要识别 aᵐbᵐ,自动机必须在读取 a 的时候“记住” a 的数量,然后在读取 b 的时候进行“核对销账”。如果 m 可以是任意大的数字,那么有限个状态是绝对无法记住任意数量的 a 的。这就是正则语言的泵引理 所要证明的核心。

  • 为什么可用上下文无关文法表示? 上下文无关文法 (Context-Free Grammar, CFG) 的计算模型是下推自动机,它比有限自动机多了一个无限容量的栈 (Stack)。这个栈完美地解决了“计数”问题。我们可以用一个简单的上下文无关文法来定义语言 

3、最终答案:D


例题13

1、知识点总结

这道题考察的是上下文无关文法 (Context-Free Grammar, CFG) 所定义的语言 (Language) 的精确概念。

根据形式语言的标准定义,一个文法 G 所产生的语言 L(G) 是指:从开始符号 S 出发,经过零次或多次产生式的推导,所能得到的所有完全由终结符组成的字符串的集合。

2、选项分析

A. 从 S 出发推导出的包含 V 和 T 中所有符号的串

  • 这个说法

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值