形式语言:含偶数个零和奇数个一的正则表达式

第一部分先看偶数个零偶数个一的正则表达式:
首先应该明确一下问题
我们的问题等价于“偶数个0偶数个1的正规式是什么”,而不是“(00|11 | ( (01|10) (00|11) * (01| 10))) *就能表示偶数个0偶数个1 的正规式”。

可以想一下,在二进制串中0和1的个数的状态无非以下四种:

偶数个0,偶数个1 -------------0
偶数个0,奇数个1 -------------①
奇数个0,偶数个1 -------------②
奇数个0,奇数个1 -------------③
接下来我们画一下状态转换图:
在这里插入图片描述
进而可以表示为:(00|11 | (01|10) (00|11) * (01| 10))*

第二部分看偶数个零奇数个一的正则表达式:
这是陈意云老师习题集上的答案 :
even_0_even_1→(00|11)((01|10)(00|11)(01|10)(00|11))
even_0_odd_1→1even_0_even_1|0(00|11)(01|10)even_0_even_1
对于偶数个0和奇数个1构成的串,其第一个字符可能是0或1。
(1)如果是1,那么剩下的部分一定是偶数个0和偶数个1
(2)如果是0,那么经过若干个00或11,一定会出现一个01或10,才能保证0的个数是偶数,1的个数是奇数。若串还没有结束,剩余部分一定是偶数个0和偶数个1。
这样,正确的正规定义是:
even_0_odd_1→1even_0_even_1|0(00|11)
(01|10)even_0_even_1

参考:(1)https://blog.csdn.net/qq_42689684/article/details/82763075 作者:夏天的鼻涕怪
(2)陈意云 编译原理课后答案

  • 16
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值