设计DFA接受{0,1}上的字符串ω,且ω是3倍数的二进制表示

DFA设计

设计DFA接受{0,1}上的字符串ω,且ω是3倍数的二进制表示

先叙述下思路:

要想证明某数是3的倍数可以让其除以3看余数是否为零即可,现在我们的问题就是如何计算一串二进制数除以3所得的余数

而二进制表示的一串数可以通过一系列的步骤从短位数除以2所得的值逐渐构造出长位数除以2所得的值我们以5位二进制数10010(18)为例计算

1) 第1位1取余3得1

2) 第2位为0此时数10是1乘以2所得,其除以3的余数为 2 * 1 = 2

3) 第3位为0此时数为100是10乘以2所得,其除以3的余数为(2 * 2) % 3 = 1

4) 第3位为1此时数为1001是100乘以2加1所得,其除以3的余数为(1 * 2 + 1) % 3 = 0

   ...

我们可以发现最终余数的可能取值只有三种而每两种之间可以通过读入的当前最低位为1或者0进行转换(例如当前余数为0读入1则余数为((2 * 0) + 1) % 3 = 1)因此我们可以按余数为几来设计DFA构造如下的DFA:

(需要注意的是当开头读入0时证明其为0或者字符串错误)

重要声明

本站资源大多来自网络,如有侵犯你的权益请联系管理员,我们会第一时间进行审核删除。站内资源为网友个人学习或测试研究使用,未经原版权作者许可,禁止用于任何商业途径!请在下载24小时内删除!若内容若侵犯到您的权益,请发送邮件至:VB77@qq.com,我们将第一时间处理! 所有资源仅限于参考和学习,版权归原作者所有,更多请阅读网站声明


如果遇到付费才可观看的文章,建议升级会员或者成为认证用户。全站所有资源任意下免费看”。本站资源少部分采用7z压缩,为防止有人压缩软件不支持7z格式,7z解压,建议下载7-zip,zip、rar解压,建议下载WinRAR

给TA打赏
共{{data.count}}人
人已打赏
电脑教程

c++隐式类型转换存在的陷阱

2022-2-28 22:46:40

电脑教程

记一次钓鱼靶机测试

2022-2-28 23:26:48

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索