📜  为 L = {aibjck | 构建图灵机i>j>k; k≥1}

📅  最后修改于: 2021-09-28 11:08:16             🧑  作者: Mango

先决条件——图灵机
在给定语言中 L = {a i b j c k | i>j>k; k≥1},’a’、’b’和’c’的每一个字符串都有一定数量的a,然后是一定数量的b,然后是一定数量的c。条件是第三个符号的计数应至少为 1。 ‘a’ 和 ‘b’ 之后可以有相同数量,但 c 的计数小于 ‘b’ 的计数并且 ‘b’ 的计数小于 ‘ 的计数一种’。假设字符串以“$”结尾。
例子:

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

磁带表示:

方法:

  1. 通过将 A & D 作为单个元素来压缩两个元素。
  2. 之后比较 A & D。
  3. 如果|C|大于|(A, D)|,则不被接受。
  4. 如果|D|大于 |A|,则不被接受。
  5. 否则接受。

脚步:

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

状态转移图:

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

解释:

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

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