【计算理论导引】 课后习题1.48

【计算理论导引】 课后习题1.48

题干

Σ = { 0 , 1 } \Sigma=\{0,1\} Σ={0,1} 以及
D = { w ∣ w 中 子 串 01 与 10 的 出 现 次 数 相 等 } , D=\{w|w中子串01与10的出现次数相等\}, D={ww0110},

由于 101 101 101 含有一个 01 01 01 和一个 10 10 10,因此 101 ∈ D 101\in D 101D。而 1010 1010 1010 含有两个 10 10 10 和一个 01 01 01,所以 1010 ∉ D 1010\not\in D 1010D。证明: D D D 是正则语言。

分析

若D是正则语言,那么必然存在一个DFA ,其语言是D,等价于存在正则表达式R,使得L(R)=D。如果能够构造识别D的正则表达式,那么就证明了D是正则语言。

从子串 10 和 子串 01 的性质入手。观察到某个字符串中出现这两个子串当且仅当在从左向右扫描字符串的过程中字符发生变化。以字符串 111001011 为例,从左向右扫描的过程中字符串变化了4次,更加细致地说,由 1 变化到 0 两次,由 0 变化到 1 两次,分别对应了两个 10 子串和两个 01 子串。

换一个角度来看,我们把字符串看作连续的若干个 1 组成的子串和连续的若干个 0 组成的子串的交替排列,10 子串和 01 子串数量相等的充分必要条件为这样的连续若干个 1 组成的子串和这样的连续若干个 0 组成的子串的数目相同相差 1 1 1

写为正则表达式的形式如下
R = ( ( 1 + 0 + ) ∗ 1 + ) ∪ ( ( 0 + 1 + ) ∗ 0 + ) . R=((1^+0^+)^*1^+)\cup((0^+1^+)^*0^+). R=((1+0+)1+)((0+1+)0+).

证明

如分析,证毕。 ■ \blacksquare

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值