美文网首页
二进制和十进制3的倍数的正则式【自动机构造法】

二进制和十进制3的倍数的正则式【自动机构造法】

作者: ayagg | 来源:发表于2019-01-01 03:23 被阅读0次

     二进制3的倍数的正则

    二进制3的倍数的自动机表如下

    其中Qi表示余3的结果,推出

    A = A0 + B1(1)

    B = A1 + C0(2)

    C = B0 + C1

    利用R = Q+RP => R=QP*的公式可推出C = B01*,代入(2)式可得B=A1(01*0)*,再代入(1)式可得二进制3的倍数的正则式 A = [0 | (01*0)*]*,简单的测试了一下0,11,110,1001均成立,另外在别处常看到用1((10*1)|(01*0))*10*作为二进制3的倍数的正则式

     求十进制3的倍数的正则

    十进制3的倍数的自动机表如下

    推出

    A = A[0369] | B[258] | C[147]

    B = A[147] | B[0369] | C[258]

    C = A[258] | B[147] | C[0369]

    利用R = Q+RP => R=QP*的公式可推出

    A = (B[258] | C[147])[0369]* (1)

    B = (A[147] | C[258])[0369]* (2)

    C = (A[258] | B[147])[0369]* (3)

    然后分配率合并计算结果得十进制3的倍数的正则式

    A = (| B[258] | (A[258] | B[147])[0369]*[147])[0369]*

      =   [0369]*

        | B[258][0369]*

        | A[258][0369]*[147][0369]*

        | B[147][0369]*[147][0369]*

      =   [0369]*

        | A[147][0369]*([147][0369]*[258][0369]*)*[258][0369]*

        | A[258][0369]*[258][0369]*([147][0369]*[258][0369]*)*[258][0369]*

        | A[258][0369]*[147][0369]*

        | A[147][0369]*([147][0369]*[258][0369]*)*[147][0369]*[147][0369]*

        | A[258][0369]*[258][0369]*([147][0369]*[258][0369]*)*[147][0369]*[147][0369]*

      = [0369]* (

                      [147][0369]*([147][0369]*[258][0369]*)*[258][0369]*

        | [258][0369]*[258][0369]*([147][0369]*[258][0369]*)*[258][0369]*

        |             [147][0369]*([147][0369]*[258][0369]*)*[147][0369]*[147][0369]*

        | [258][0369]*[258][0369]*([147][0369]*[258][0369]*)*[147][0369]*[147][0369]*

        | [258][0369]*[147][0369]* )*

      = [0369]* (( [147][0369]*

          | [258][0369]*[258][0369]*

          ) ([147][0369]*[258][0369]*)* (

            [258][0369]*

          | [147][0369]*[147][0369]*)

        | [258][0369]*[147][0369]* )*

    十进制部分参考自正则表达式如何匹配 3 的倍数? - Belleve的回答 - 知乎 

    相关文章

      网友评论

          本文标题:二进制和十进制3的倍数的正则式【自动机构造法】

          本文链接:https://www.haomeiwen.com/subject/pkwglqtx.html