本文主要是介绍2.14 构造一个DFA,它接受Σ = {0,1}上能被5整除的二进制数。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
陈介平 PB14209115
编译原理作业题,题目如上,另老师还要求写出能被5整除的二进制串的正规式。
解析:
首先分析题目可知,一个数除以5,其余数(十进制)只能是0,1,2,3,4五种,因此我们以0,1,2,3,4分别表示这五种状态。因为要求得能被5整除的数,0 mod 5=0满足要求,故状态0既为初始状态,又为终结状态。
接着,考虑二进制数在其串后增添0或1时,状态的转化情况。在二进制串后添1位,即可理解为将先前的串值乘以二再加上所添的数值。那么,串尾添数后新的数值模5的余数便可以计算出来。即可以得到添0或1后的新的状态。
下面根据分析列出状态转换表:
状态 | 添0 | 添1 |
---|---|---|
0 | 0 | 1 |
1 | 2 | 3 |
2 | 4 | 0 |
3 | 1 | 2 |
4 | 3 | 4 |
再根据上面的DFA可以得出正规式如下:
{1 [ ((00|1)(01)*01*0)* (0|11) (01)* ] 1}* 0*
笔者水平有限,本文仅供参考,如有意见欢迎指导。 原创文章,未经授权禁止转载。谢谢!
这篇关于2.14 构造一个DFA,它接受Σ = {0,1}上能被5整除的二进制数。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!