📌  相关文章
📜  为 L = {aibjck | 构建图灵机i< j< k;我≥1}

📅  最后修改于: 2021-09-27 15:18:37             🧑  作者: Mango

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

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

磁带表示:

方法:

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

脚步:

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

状态转移图:

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

解释:

  • 使用 Q0,当找到 A 时,将其设为 X 并向右移动并声明 Q1。并且,当发现 Y 时忽略它并向右移动并陈述 Q4
  • 在状态 Q1 上,忽略所有 A 和 Y 并向右移动。如果 D 找到,则将其设为 Y 并直接进入下一个状态 Q2。
  • 在 Q2 中,忽略所有 D、Z 并向右移动。如果找到 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 状态,它将产生接受字符串的结果。

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