用二进制编写的一组{1,2,4,8,..,2 ^ n}的DFA

时间:2018-11-25 09:26:16

标签: automata finite-automata

我必须为一组构建最小确定性有限状态自动机(DFA):-

L = {1,2,2 2 ,2 3 ,2 4 ....,2 n < / sup>},其中数字1,2,2 2 ,2 3 ,2 4 ....,2 n < / sup>用二进制和输入字母= {0,1}编写,并且'n'是非负整数。

我已将最小DFA构造为:-

enter image description here

此DFA的正则表达式(RegEx)应该为:-10 *,因为语言包含字符串{1,10,100,1000,....}

现在,我很困惑是否应该为给定set(Language)的每个字符串考虑唯一的表示形式。
在这里,字符串'1'具有无限多个表示形式,例如{1,01,001,0001,.....} 同样,通过最初添加零,我可以为集合的每个字符串获得许多表示形式。
因此,如果考虑到这一点,那么我得到的正则表达式为0 * 10 *。
根据此RegEx,我的等效最低DFA为:-
enter image description here

所以,我的问题是:根据我最初编写的集合的给定描述,哪种DFA是正确的。我应该提一下,所有字符串都应该以“ 1”开头,或者每个字符串都具有唯一的表示形式,以精确地描述语言,以便为给定的集合获得唯一的最小DFA。
请帮忙!

1 个答案:

答案 0 :(得分:0)

我将使用第二个,因为它更灵活,如果您需要将数字存储在内存字段大于您的数字(位数)的情况下,则需要添加首字母零来存储它。