Regex 关于nfa和dfa的问题
希望你能帮我做这个 我有一个主要问题是“如何判断正则表达式是否会被和/或接受?” 我的问题是,哪个正则表达式是等价的?解释 1.(a+b)**b(a+b)**b(a+b)* 2.2亚的斯亚贝巴* 3.abab(a+b)* 我们是否必须绘制NFA和DFA,然后通过最小化算法进行查找?如果我们这样做了,那么我们如何知道NFA/DFA接受哪个正则表达式,以便我们可以从答案开始?太令人困惑了 第二个是非常相似的一个,问题要求我证明语言(a^nb^n | n>1}不被DFA接受…grrrr…我怎么知道这一点?(顺便说一句,这是一组所有字符串,其中a的数字后面跟着相同的b的数字)Regex 关于nfa和dfa的问题,regex,dfa,nfa,Regex,Dfa,Nfa,希望你能帮我做这个 我有一个主要问题是“如何判断正则表达式是否会被和/或接受?” 我的问题是,哪个正则表达式是等价的?解释 1.(a+b)**b(a+b)**b(a+b)* 2.2亚的斯亚贝巴* 3.abab(a+b)* 我们是否必须绘制NFA和DFA,然后通过最小化算法进行查找?如果我们这样做了,那么我们如何知道NFA/DFA接受哪个正则表达式,以便我们可以从答案开始?太令人困惑了 第二个是非常相似的一个,问题要求我证明语言(a^nb^n | n>1}不被DFA接受…grrrr…我怎么知道这一
我希望我解释得很清楚……如果你被要求证明某些语言不被DFA/NFA接受,你几乎总是必须应用,也就是说。NFA和DFA接受等价的(常规)语言,所以证明一种语言是常规语言的一种方法是为其创建NFA或DFA 为了表明一种语言不在类中,您通常会使用泵引理 维基百科有一个非常类似的例子,除了n>=0;不过我不会帮你完成家庭作业
要确定两个正则表达式是否不相等,请创建一个被一个接受但被另一个拒绝的字符串。首先,关于术语的说明:语言是某些字母表上的一组字符串。DFA和NFA识别正则语言,而不是正则表达式。可能有几个正则表达式定义ame语言。对于两种语言L1和L2,如果L1的每个成员都是L2的成员,反之亦然,则L1和L2是等效的 关于第一个问题,语言L1由{a,b}上的所有字符串组成,至少有两个'b'。语言L2由{a,b}上的所有字符串组成,正好有两个'b'。 字符串“abbb”是L1和L3的一个元素,但不是L2。因此剩下L1和L3 比较。L1的任何元素S必须至少包含两个“b”。让前两个“b” 在S中,匹配表达式E3中的两个显式“b”;然后其他组件
a*
、a*
和(a+b)*
始终可以匹配,并且S必须在L3中。因此L1是L3的子集。
类似地,L3的任何元素S必须至少包含两个“b”。让它们与表达式E1中的两个显式“b”匹配;其他组件(a+b)*
,(a+b)*
,和(a+b)*
也将匹配
有匹配项,S也在L1中。所以L1是L3的子集,L3是L1的子集,所以
L1和L3必须等效
关于您的第二个问题:使用。假设您有一个接受该语言的DFA…表明它也必须接受非该语言中的字符串,因此不可能存在这样的DFA。让我们使用该语言中的任何字符串…S的任何子字符串都将具有所有a、所有b或两者…那么在“泵”之后会发生什么它?hi sth.…难道没有更简单或更简短的方法来证明DFA/NFA的接受吗?@Loop:表明一种语言被接受和表明它不能被接受是两种不同的问题。这个问题的意图肯定是你使用了泵引理。谢谢Jim…..这么多…我试过了,但是你能不能对第二个问题再解释一下…。再次感谢…@Loop:假设一个DFA有n个状态,但接受一种具有任意长字符串的语言。那么DFA必须有一个循环,并且该循环有n个或更少的状态转换。因此,任何围绕该循环使用DFA的输入字符串都有一个可以“泵送”(重复)的子字符串任意次数,但仍被DFA接受。