automata - 用二进制编写的集合 {1,2,4,8,..,2^n} 的 DFA
问题描述
我必须为一组构建一个最小的确定性有限状态自动机(DFA):-
L = {1,2,2 2 ,2 3 ,2 4 ....,2 n } 其中数字 1,2,2 2 ,2 3 ,2 4 ....,2 n以二进制和输入字母书写= {0,1} 并且 'n' 是一个非负整数。
我已经构建了一个最小的 DFA:-
此 DFA 的正则表达式(RegEx)应该是:- 10* 因为语言包含字符串 {1,10,100,1000,....}
现在,我很困惑是否应该考虑给定集合(语言)的每个字符串的唯一表示。
在这里,字符串 '1' 有无数种表示形式,例如 {1,01,001,0001,.....}
所以,如果我考虑它,那么我将 RegEx 设为 0*10*。
根据这个 RegEx,我等效的最小 DFA 将是:-
所以,我的问题是:根据我最初编写的集合的给定描述,哪个 DFA 是正确的。我是否必须提到所有字符串都应该以“1”开头,或者每个字符串都具有用于精确描述语言的唯一表示,以便我可以获得给定集合的唯一最小 DFA。
请帮忙!
解决方案
我会使用第二个,因为它更灵活,如果您需要将数字存储在内存字段大于您的数字(位数)的内存中,则需要添加初始零来存储它。
推荐阅读
- php - 如果在首页,wordpress php将用户重定向到页面
- python - 似乎无法使 python celery 信号工作
- html - 使用 webgl iframe 将 html 页面的状态保存到硬盘
- angular - 确保在检查条件之前已完成多个订阅
- amazon-web-services - Amazon Lex 在 Lambda Fulfillment 之前显示响应/消息
- php - 使用代码覆盖率处理无法访问的代码
- sql - 如何选择有两组的公司
- python - Numpy Python:如何根据条件更改二维数组元素?
- linux - Bitbake do_package_qa 错误:位置错误
- kubernetes - 如何在 Kubernetes 上摆脱此错误“network: stat /var/lib/calico/nodename: no such file or directory”