首页 > 解决方案 > 用二进制编写的集合 {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。
请帮忙!

标签: automatafinite-automata

解决方案


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


推荐阅读