【问题标题】:Construct a NFA for the following language defined over Σ = {0, 1}. D = {0^n 10^m10^q |n, m, q ∈ N, q ≡ nm (mod 5)}为在 Σ = {0, 1} 上定义的以下语言构建 NFA。 D = {0^n 10^m10^q |n, m, q ∈ N, q ≡ nm (mod 5)}
【发布时间】:2020-02-12 17:47:13
【问题描述】:

需要帮助解决以下问题:

为以下在 Σ = {0, 1} 上定义的语言构建 NFA。

D = {0^n 10^m10^q |n, m, q ∈ N, q ≡ nm (mod 5)}

我对如何在语言的 q 部分创建 NFA 因子感到困惑。

【问题讨论】:

    标签: computer-science


    【解决方案1】:

    我们可以用五种状态来记住n mod 5的值:

            _______________0______________
           /                              \
           |                              |
           V                              |
    ----->q0--0-->q1--0-->q2--0-->q3--0-->q4
    

    现在我们需要阅读1:

            _______________0______________
           /                              \
           |                              |
           V                              |
    ----->q0--0-->q1--0-->q2--0-->q3--0-->q4
           |       |       |       |       |
           1       1       1       1       1
           |       |       |       |       |
           V       V       V       V       V
          q0'     q1'     q2'     q3'     q4'
    

    现在我们可以单独查看每个案例。对于 q0',我们知道我们在第一部分看到了许多与 0 mod 5 一致的 0。因此,nm = 0 (mod 5) 是已知的。我们可以接受任意数量的 0,然后是 1,如果没有进一步的输入则接受:我们可以让 q0' 这样做:

         _0_
        /   \
        |   |
        \   /
    ----->q0'--1-->qA
    

    对于 q1',我们将有 q = nm (mod 5) = m (mod 5),因为在这种情况下 n = 1 (mod 5)。我们可以通过记住到目前为止 m (mod 5) 的当前值,然后在 q 中查找那么多的 0 来实现这一点。也就是说,q1'可以替换为:

            _______________0________________________
           /                                        \
           |                                        |
           V                                        |
    ----->q1'--0-->q1''--0-->q1'''--0-->q1''''--0-->q1'''''
           |        |        |          |           |
           1        1        1          1           1
           |        |        |          |           |
           V        V        V          V           V
           qA<--0--qA'<--0--qA''<--0--qA'''<--0--qA''''
    

    qA 与我们之前介绍的接受状态相同。对于 q2',我们可以跟踪 nm (mod 5) 的当前值,即 2m (mod 5):

            _______________0________________________
           /                                        \
           |                                        |
           V                                        |
    ----->q2'--0-->q2''--0-->q2'''--0-->q2''''--0-->q2'''''
           |        |        |          |           |
           1        1        1          1           1
           |        |        |          |           |
           V        V        V          V           V
           qA      qA''     qA''''     qA'         qA'''
    

    状态 qA', qA'', qA''' 和 qA'''' 与之前介绍的相同,但注意现在的顺序不同:这反映了 2 x 0 = 0(如前)、2 x 1 = 2(不是 1)、2 x 2 = 4(不是 2)等

    我们可以对 q3' 和 q4' 做同样的事情:

            _______________0________________________
           /                                        \
           |                                        |
           V                                        |
    ----->q3'--0-->q3''--0-->q3'''--0-->q3''''--0-->q3'''''
           |        |        |          |           |
           1        1        1          1           1
           |        |        |          |           |
           V        V        V          V           V
           qA      qA'''    qA'        qA''''      qA''
    
    
            _______________0________________________
           /                                        \
           |                                        |
           V                                        |
    ----->q4'--0-->q4''--0-->q4'''--0-->q4''''--0-->q4'''''
           |        |        |          |           |
           1        1        1          1           1
           |        |        |          |           |
           V        V        V          V           V
           qA      qA''''   qA'''      qA''        qA'
    

    将所有这些不同的 DFA 放在一个巨大的 DFA 中,可以保证为您提供一个有效的 DFA。是否存在实质上相似的 NFA,我不能肯定地说。此 DFA 具有以下状态:

    1. q0, q0':2 个状态
    2. q1, q1', ...., q1''''': 6 个状态
    3. q2, q2', ...., q2''''':6 个状态
    4. q3, q3', ...., q3''''': 6 个状态
    5. q4, q4', ...., q4''''': 6 个状态
    6. qA, qA', ...., qA'''':5 个状态

    总共有 32 个州。如果您想尝试最小化,您可以取消其中的一些。

    【讨论】:

      猜你喜欢
      • 2021-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-10
      • 2022-06-28
      • 1970-01-01
      • 2021-06-09
      相关资源
      最近更新 更多