Regular language 这是否是制作DFA以接受给定正则语言前缀语言的一般方法?

Regular language 这是否是制作DFA以接受给定正则语言前缀语言的一般方法?,regular-language,automata,Regular Language,Automata,如果给我们一个DFA,比如说M,我们可以得到前缀语言的DFA(注意,给定语言的前缀语言由所有字符串u组成,使得uv是L的a元素,v是$$\[\sum\textsuperscript{*}的元素),这样做安全吗 $$)通过将所有这些具有最终状态路径的M状态添加到新DFA M'的最终状态集中。此M'将接受L的前缀语言。是的,此结构有效。为了正式证明这一点,我们可以认为新构造的自动机的语言(1)是前缀语言的子集,(2)是前缀语言的超集。也就是说,(1)新自动机语言中的所有内容都是原始自动机语言中字符串

如果给我们一个DFA,比如说M,我们可以得到前缀语言的DFA(注意,给定语言的前缀语言由所有字符串u组成,使得uv是L的a元素,v是$$\[\sum\textsuperscript{*}的元素),这样做安全吗
$$)通过将所有这些具有最终状态路径的M状态添加到新DFA M'的最终状态集中。此M'将接受L的前缀语言。

是的,此结构有效。为了正式证明这一点,我们可以认为新构造的自动机的语言(1)是前缀语言的子集,(2)是前缀语言的超集。也就是说,(1)新自动机语言中的所有内容都是原始自动机语言中字符串的前缀,(2)原始语言中字符串的每个前缀都是新自动机语言中的字符串。当你想证明两个集合相等时,这是一个很好的(但肯定不是唯一的)方法。同样,如果两个集合都是另一个集合的子集和超集,则这两个集合是相等的。现在,我们将依次证明这两个必要的主张,然后得出预期的结论

第1部分:新自动机语言中的每个字符串都是原始自动机语言中字符串的前缀。假设情况并非如此。也就是说,您的新自动机接受的内容不是原始语言中任何字符串的前缀。然后,新的DFA必须具有一个接受状态,该接受状态没有到原始DFA中接受的状态之一的路径。但这是一个矛盾,因为通过构造,新DFA中的所有接受状态都有一条通向原始DFA中接受状态的路径。因此,我们的假设是错误的,新DFA接受的每个字符串都是前缀

第2部分:新的DFA接受原始语言中每个字符串的每个前缀。假设情况并非如此。然后,在原始语言中,字符串xy的某个前缀x不被新DFA接受。假设字符串x在原始DFA中指向状态q,字符串xy在原始DFA中指向状态q'。因为xy是原始语言中的字符串,所以q'必须是可接受的。请注意,有一条从q到q(从q开始,进程后缀y)的路径。因此,q在新的DFA中必须是可接受的,并且由于x在原始DFA中导致q,因此它在新的DFA中也导致q,并且必须被接受。这是一个矛盾,因此必须接受所有前缀


因为新的DFA只接受前缀,而且它接受所有前缀,所以我们得出结论,它完全接受原始语言的前缀。

是的。我也不明白你为什么这么问:既然你提出了这个想法,证明给你看应该很简单,不是吗?@dyukha我不知道如何用正式的方式证明它。