与此DFA对应的正则表达式是什么?

这是来自研究项目的DFA。 我们手动创建了DFA。 我们感兴趣的是与DFA对应的正则表达式。 当然,可能有多个正则表达式对应于它; 我们更喜欢更简单的一个。

在这里输入图像描述


您在B和E的自循环中错过了DFA中的标签。但是由于您针对给定的DFA说了两个循环,因此只有标签的选项为0

您的DFA正确的正则表达式是:

(00* 10*1)* (1(0 + 10)* 1 1) ( 0 + 1 (00* 10*1)* 1  ( 0 + 10)* 1 1)*

简要解释:

  • 你只有一个最终状态是D 所以如果字符串以D结尾,字符串可以被接受。 你注意到D上的进入边被标记为1D有一个标记为0的自循环。

  • 开始状态是A因此字符串可以从0开始,也可以从1 。 实际上在A上有两个循环。一个从0开始并穿过上图。
    上回路的RE为: 00* 10*1

    要了解这一点:

      0     0*           1      0*            1  
    
     A-E   loop on E     E-F    loop on F     F-A
    
  • 在下图中从AD RE是1 (0 + 10)* 1 1
    要了解这一点:

     1        (0 + 10)*    1     1
     A - B    loop on B    B-C   C-D      
    
  • 完整的DFA RE:(回答)

    (00* 10*1)* (1(0 + 10)* 1 1) ( 0 + 1 (00* 10*1)* 1  ( 0 + 10)* 1 1)*
    

    要了解这一点:

    (00* 10*1)*  (1(0 + 10)* 1 1) ( 0 + 1 (00* 10*1)* 1 ( 0 + 10)* 1 1)*
    
    ^             ^                                                    ^   
    upper loop    A to D           loop on D              * for loop on D    
    
    
                          ( 0 +  1    (00* 10*1)* 1    (0 + 10)*   1  1  )*
                            ^    D-A   A-A        A-B  loop on B, B-c c-D       
                         self loop on D                                
    
  • 编辑为@RedBaron评论这是否正则表达式生成字符串01110100110

    无论是否接受DFA接受的拳头检查:

    A - 0 - > E - 1 - > F - 1 - > A - 1 - > B - 0 - > B - 1 - > C --- 0 --- - > B --- 0 ---> B -1 - > C --- 1 ---> D --- 0 ---> D

    DFA接受字符串。

    如何从RE中给出答案,下面我对齐了RE和字符串。

    (00* 10*1)*    (1(0 + 10)* 1 1) ( 0 + 1 (00* 10*1)* 1 ( 0 + 10)* 1 1)*
    
     0^  1^ 1      1  0100     1  1   0
    

    只有您可能需要了解的困难:如何(0 + 10)*生成0100 ? 对于下面的检查:

    (0 + 10)*重复三次:

    (0 + 10)(0 + 10)(0 + 10)
     0           10  0
    

    杰克,基本上这个DFA可以有两个正则表达式。 第一可以是AB * CD * A,第二可以是AE * F *


    这里描述你需要使用的算法。 如果你对这个话题更感兴趣,我强烈推荐阅读Michael Sipser的“计算理论导论”。

    对于您的特定DFA,请按照该算法获取此正则表达式:

    [(010*1)*1(10*)110*1]*(010*1)*1(10)*110*
    
    链接地址: http://www.djcxy.com/p/74793.html

    上一篇: What's the regex corresponding to this DFA?

    下一篇: Regex lookahead, lookbehind and atomic groups