我需要构建一个NFA (或DFA)来识别以下语言:L = {w | w mod 3 = 1}。因此,我尝试的方法是让NFA识别可被3整除的数字,然后将1加到其中,但是这种方法比看起来难得多(如果不是不可能的话?)我只做了一个NFA来识别可被3整除的数字。
发布于 2020-03-30 12:41:42
我假设w将被解释为非负整数的十进制表示(不带前导零)。
有鉴于此,我们可以使用Myhill-Nerode迭代地确定我们需要的状态:
要确定转换,只需将转换符号附加到等效类的代表性元素,并查看生成的字符串属于哪个等效类:这将是转换终止的地方。例如,从e到on 0,e到1 on 1,等等。
由于10 =1 (mod 3),在十进制字符串的末尾添加一个新的数字将导致新的值模3与新的数字模3的值之和为原始数的值模3的总和:
x = a (mod 3)
y = b (mod 3)
x * 10 = x * 1 (mod 3) since 10 = 1 (mod 3)
x . y = x * 10 + y = x * 1 + y = x + y (mod 3)填入过渡是一项练习。
https://stackoverflow.com/questions/60914995
复制相似问题