📌  相关文章
📜  为 L = {aibjck | 构建图灵机i < j < k 或 i > j > k}

📅  最后修改于: 2021-09-28 09:21:41             🧑  作者: Mango

先决条件——图灵机
语言 L = {a i b j c k | i < j < k or i > j > k} 等同于两种语言的并集 L1={a i b j c k | i < j < k } 并且 L2={a i b j c k | i > j > k }
在这种语言中,’a’、’b’ 和 ‘c’ 的每个字符串都有一定数量的 a,然后是一定数量的 b,然后是一定数量的 c。

    条件是
  • 第一个符号的计数应至少为 1。 ‘b’ 和 ‘c’ 之后可以有相同数量,但 a 的计数小于 ‘b’ 的计数,并且 ‘b’ 的计数小于 ‘c’ 的计数。
  • 第三个符号的计数应至少为 1。 ‘a’ 和 ‘b’ 之后可以有相同数量,但 c 的计数小于 ‘b’ 的计数并且 ‘b’ 的计数小于 ‘a’ 的计数

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

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

    磁带表示:

    方法:

    1. 通过将两个元素作为单个元素来压缩两个元素。
    2. 之后,将被视为单个元素的元素再次进行比较。
    3. 如果|第一|大于 |(第二,第三)|和|第二|大于|Third|,则被接受。
    4. 如果|第三|大于 |(First, Second)|和|第一|大于 |Second|,则被接受。
    5. 否则不予受理。

    脚步:

    • 步骤1:将A转换为X并向右移动并转到步骤2。如果找到Y则忽略它并向右移动到步骤5。
    • 步骤 2:继续忽略 A 和 Y 并向右移动。将 D 转换为 Y 并向右移动并转到第 3 步。
    • 步骤3:继续忽略D和Z并向右移动。如果找到C,则将其设为Z并向左移动到步骤4。如果找到B,则忽略它并向左移动并转到步骤8。
    • Step-4:继续忽略Z、A、Y、D向左移动。如果找到X则忽略并向右移动并转到步骤1。
    • 第 5 步:继续忽略 Y 并向右移动。忽略 Z 向左移动并转到第 11 步。如果找到 D,则将其设为 Y 并向右移动到第 6 步。
    • 第6步:继续忽略D和Z向右移动。将C转换为Z向左移动并转到第7步。
    • Step-7:继续忽略 D 和 Z 向左移动。如果找到 Y 忽略它并向右移动并转到 step-5。
    • 第 8 步:继续忽略 D、Y 和 A,然后向左移动。忽略 X 向右移动并转到第 9 步。
    • 步骤 9:将 A 转换为 X 并向右移动并转到步骤 10。
    • 第10步:继续忽略Y和A向右移动。如果找到B,则忽略它并向左移动并转到第11步。如果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 并向右移动。如果找到 Z,则忽略它向左移动到状态 Q6。如果找到 D,则使其 Y 并向右移动到 Q5。
    • 在 Q5 状态,忽略所有 D、Z 并向右移动。如果找到 C,则使 Z 向左移动到状态 Q6
    • 在 Q6 中,忽略所有 D、Z 并向左移动。如果找到 Y,则忽略它并向右移动到状态 Q4。
    • 如果达到 Q7 状态,它将产生接受字符串的结果。
    • 在 Q8 中,忽略所有 A、Y、D 并向左移动。如果找到 X,则忽略它向右移动到状态 Q9。
    • 在 Q9 状态下,如果 A 找到,则使其 X 向右移动到状态 Q10
    • 在 Q10 中,忽略所有 A、Y 并向右移动。如果找到 D,则将其设为 Y 并向右移动到状态 Q8。如果找到 B,则忽略它并向左移动到 Q11
    • 如果达到 Q11 状态,它将产生接受字符串的结果。

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