📜  为语言 L = {aibjck | 构建图灵机一世<j<k or i> j&gt;k}∩{aibjck | i&gt;j&gt;k 或 i&gt;j&gt;k}

📅  最后修改于: 2021-09-28 10:27:01             🧑  作者: Mango

先决条件——图灵机
语言 L = {a i b j c k | i < j < k 或 i > j > k} ∩ {a i b j c k | i > j > k 或 i > j > k} 与语言 L={a i b j c k | 相同j > max(i, k)}
在这种语言中,’a’、’b’ 和 ‘c’ 的每个字符串都有一定数量的 a,然后是一定数量的 b,然后是一定数量的 c。

    条件如下
  • 第一个符号的计数应至少为 1。 ‘b’ 和 ‘c’ 之后可以有相同数量,但 a 的计数小于 ‘b’ 的计数,并且 ‘b’ 的计数小于 ‘c’ 的计数。
  • 并且,第 3 个符号的计数应至少为 1。“a”和“b”此后可以有相同数量,但 c 的计数小于“b”的计数,“b”的计数小于“a”的计数’
  • 结论:第二个符号的计数必须大于第一和第三个符号的计数最大值,并且第一和第三个符号的计数可能相等也可能不相等

    假设字符串以“$”结尾。

      例子:
    Input: a a a b b c  
           Here a = 3, b = 2, c = 1
    Output: NOT ACCEPTED
    // |a| < |b| > |c|
              
    Input: a b b b c c 
           Here a = 1, b = 3, c = 2 
    Output: ACCEPTED
    
    Input: a a a b b b b c c c
           Here a = 3, b = 4, c = 3 
    Output: ACCEPTED 

    磁带表示:

    方法:

    1. 通过将两个元素作为单个元素来压缩两个元素。
    2. 如果|第二|大于 max(|First|, |Third|),则被接受。
    3. 否则不予受理。

    脚步:

    • 步骤 1:将 A 转换为 X 并向右移动并转到步骤 2。如果找到 Y,则忽略它并向右移动到步骤 5。
    • 步骤 2:继续忽略 A 和 Y 并向右移动。将 D 转换为 Y 并向右移动并转到第 3 步。
    • 第 3 步:继续忽略 D 和 Z 并向右移动。如果找到 C,则将其设为 Z 并左移至第 4 步。如果找到 B,则忽略它并向左移至第 8 步。
    • 第 4 步:继续忽略 Z、A、Y 和 D,向左移动。如果找到 X 忽略它并向右移动并转到第 1 步。
    • 第 5 步:继续忽略 Y 并向右移动。如果找到 D,则将其设为 Y 并向右移动至第 6 步。
    • 第 6 步:继续忽略 D 和 Z 并向右移动。将 C 转换为 Z 并向左移动并转到第 7 步。如果 B 忽略它向左移动并转到第 11 步。
    • 步骤 7:继续忽略 D 和 Z 并向左移动。如果找到 Y 忽略它并向右移动并转到第 5 步。
    • 第 8 步:继续忽略 D、Y 和 A,然后向左移动。忽略 X 向右移动并转到第 9 步。如果 D 忽略并向右移动并转到第 11 步
    • 步骤 9:将 A 转换为 X 并向右移动并转到步骤 10。
    • 步骤 10:继续忽略 Y 和 A 并向右移动。如果 D 使它成为 Y 并向右移动并转到第 8 步。
    • 第 11 步:停止机器(接受字符串)。

    状态转移图:

    这里, Q0表示初始状态, Q1、Q2、Q3、Q4、Q5、Q6、Q8、Q9、Q10表示过渡状态, Q7 和 Q11表示最终状态。 A、C、D 是使用的变量,R、L 表示左右。

    解释:

    • 使用 Q0,当找到 A 时,将其设为 X 并向右移动并进入 Q1。并且,当找到 Y 时忽略它并向右移动并进入 Q4
    • 在状态 Q1 上,忽略所有 A 和 Y 并向右移动。如果 D 找到,则将其设为 Y 并直接进入下一个状态 Q2。
    • 在 Q2 中,忽略所有 D、Z 并向右移动。如果 B 找到忽略它,向左移动并进入状态 Q4,如果 C 找到,则使其 Z 向左移动并进入 Q3。
    • 在 Q3 状态下,忽略所有 Z、D、Y、A 并向左移动。如果发现 X 忽略它向右移动到 Q0。
    • 在 Q4 中,忽略所有 Y 并向右移动。如果找到 D,则将其设为 Y 并向右移动到 Q5。
    • 在 Q5 状态下,忽略所有 D、Z 并向右移动。如果找到 C 则使其 Z 向左移动到状态 Q6。如果找到 B,则忽略向左移动到状态 Q7
    • 在 Q6 中,忽略所有 D、Z 并向左移动。如果找到 Y 忽略它并向右移动到状态 Q4。
    • 如果达到 Q7 状态,它将产生接受字符串的结果。
    • 在 Q8 中,忽略所有 A、Y、D 并向左移动。如果发现 X 忽略它,它向右移动到状态 Q9。如果找到 B 忽略它并向右移动到 Q11。
    • 在 Q9 状态下,如果 A 找到,则使其 X 向右移动到状态 Q10
    • 在 Q10 中,忽略所有 A、Y 并向右移动。如果找到 D,则将其设为 Y 并向右移动到状态 Q8。
    • 如果达到 Q11 状态,它将产生接受字符串的结果。

    注: |A|、|D|、|C|的比较,使用了图灵机作为比较器的概念