我有这样的正则表达式正则表达式到NFA [曝光] | [曝光] [曝光] [曝光] | [曝光] [曝光] [曝光] [曝光]
[A-E]|[A-E]{3}|[A-E]{4}
[A-E]|[A-E] [A-E] [A-E]|[A-E][A-E][A-E] [A-E]
它承认A,B, ABC, BCD, BCDE, etc.
串
我想构建NFA,但不知道我是否正确
我已经这样做了
或本
哪一个是正确的?
我[A-E]
NFA是
我有这样的正则表达式正则表达式到NFA [曝光] | [曝光] [曝光] [曝光] | [曝光] [曝光] [曝光] [曝光]
[A-E]|[A-E]{3}|[A-E]{4}
[A-E]|[A-E] [A-E] [A-E]|[A-E][A-E][A-E] [A-E]
它承认A,B, ABC, BCD, BCDE, etc.
串
我想构建NFA,但不知道我是否正确
我已经这样做了
或本
哪一个是正确的?
我[A-E]
NFA是
最小DFA是以下
0 - > 1 - > 2 - > 3 - > 4
与每一个过渡拱由[AE]签署并且最终状态= {1,3,4}
事实上,这个DF A相当于你的NFA。不过我发现第二个更清晰。
另外,我们如何使表达式成为(A)或三角形(ABC)或矩形(ABCD),因此它不能识别双字母的输入,例如“ABC”是可以接受的但是“AAC”不是 这个表达意在描述角度AACB必须作为矩形的名称被拒绝或被分析为A(角度),ACB(三角形)而不是AACB .... – 2013-04-22 14:49:44
在最简单的情况下(ordere d个字母)一个线性自动机就足够了(除了第一个以外所有的最终状态)。 但是,如果你想承认所有的排列组合有点困难。 我不是专家,但也许对于这种情况下更好地定义一个合适的语法。 看看[这里](http://stackoverflow.com/questions/10332894/)的问题的正则表达式的观点。 – 5agado 2013-04-22 15:06:08
我会说#2更清晰,但他们都看起来是正确的。 – iamnotmaynard 2013-04-22 14:25:13
我关注的是第二个流程, 比方说,用户输入ABCD, 在第一个,我们有A-> B-> C-> d - >最终 但在第二NFA我们如何才能确定哪条路线应该采取,如果A例如首先成功......但是正确的是将两个ABCD都放入[AE] {4}的第三条路线...... – 2013-04-22 14:32:08