[英]Am I correct? (Finite Automata)
由于这很可能是家庭作业,我很犹豫,只是给你完整正确的解决方案。
您的NFA看起来是正确的,但有许多多余的状态,这些状态不是必需的,但不会对其正确性产生负面影响。 (乍一看,你可以删除11个州。)
但是,您的DFA不正确。 这是因为当您分支开始处理字符串或其他条件的一个条件时,您稍后将它们一起重新加入。 这允许它从与a(b|c)*a
匹配的接受字符串中获取路径,并通过前往节点15,17
或11
来获取另一个b
或c
。 然后它接受此字符串,即使它与您的表达式不匹配。
你需要做的是基本上阻止这种情况发生。 如果您有其他问题,请随时提出。
我强烈建议您制作一个您应该知道并且不应该被接受的测试字符串列表,然后跟踪它们,确保您的自动机以正确(接受或拒绝)状态结束。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.