正则表达式 – 查找DFA的补码?
我被要求显示DFA图表和RegEx作为RegEx(00 1)*的补充.在前面的问题中,我必须证明DFA的补码是关闭的,也是一个正则表达式,所以我知道,要将DFA,M转换为补码,我只需要交换初始接受状态,最终接受国家.
然而,似乎RegEx的初始接受状态是{00,1,^},最终接受状态也是{00,^}.所以交换它们只会导致完全相同的RegEx和DFA,这似乎是矛盾的. 我做错了什么或者这个RegEx应该没有一个真正的补充? 谢谢
正如你所说的:
它不是补充,但你正在做一些与语言相反的事情和regular languages are closure under reversal. DFA的冲销 什么是反转语言? 语言L的反转(表示为LR)是由…组成的语言 鉴于L是一些FA A的L(A),我们可以为LR构建一个自动机:
注意:通过反转所有箭头和交换DFA的初始和接受状态的角色,您可以获得NFA. 补充DFA
定义:语言的补语根据与Σ*(西格玛星)的集合差异来定义.即L’=Σ* – L. 而L的补码语言(L’)除了^中的字符串之外,所有字符串均来自Σ*(西格玛星).Σ*是字母表中的所有字符串.
A是L的DFA,D是补码 注意:为了构建补充DFA,旧的DFA必须是一个完整的手段,所有这些都应该从每个状态(或换句话说 Complement: reference with example
以下是DFA名为A: 但DFA并不是DFA完整版.过渡函数δ是部分定义的,但不适用于全域Q×Σ(从l1向上偏离q1的边缘). 其完整的DFA可以如下(A): 在上述DFA中,定义了所有可能的事务(*对于每对Q,Σ*),δ在这种情况下是一个完整的函数. Reff: to learn what is Partial Function. 可以通过将所有最终状态q0更改为不是最终状态来构建新的补充DFA D,反之亦然. 所以在补数q0变成非最终和q1,q2是最终状态. 现在,您可以使用ARDEN’S THEOREM and DFA给出补全语言的正则表达式. 在这里我正在直接写正则表达式: (00 1)* 0(^ 1(1 0)*) 其中^是空符号. 一些有用的链接: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |