将NFA转换为正则表达式并判断它是否是3的倍数?

时间:2014-04-22 07:53:53

标签: regex nfa

我正在练习,只想确认我是否正确地制作了表达并将表达式识别为3的倍数?

enter image description here

is that correct expression and my answer:
 ((aaa)* + (bbb)*) 
 expression shows a string length multiple of 3

1 个答案:

答案 0 :(得分:1)

是的,你的正则表达式是正确的,由图片中的NFA定义的语言接受空字符串^或(aaa) + 或(bbb) + 。你已经覆盖了^ in * closure。

如果您愿意,可以将其DFA设置如下:

     __ bbb          __ aaa  
     ||              ||
     ▼|              ▼|
--►((Q0))---aaa---►((Q1))

Q0和Q1都是最终状态(Q0是开始状态)。

旁注:您可以将'aaa'的边缘标签替换为'bbb',将'bbb'替换为'aaa',以获得另一种形式的相同DFA。另外,在标准形式的DFA中,边缘标签可以是单个语言符号。