📜  为语言 L = {0n1n2n | 构建图灵机n≥1}

📅  最后修改于: 2021-09-27 22:54:08             🧑  作者: Mango

先决条件——图灵机
语言 L = {0 n 1 n 2 n | n≥1} 代表一种我们只使用 3 个字符的语言,即 0、1 和 2。在开始的语言中,有一些 0 后跟相等数量的 1,然后是相等数量的 2。任何属于此类别的字符串都将被该语言接受。字符串的开头和结尾用 $ 符号标记。

例子 –

Input  : 0 0 1 1 2 2
Output : Accepted

Input  : 0 0 0  1 1 1 2 2 2 2
Output : Not accepted

假设:我们将用 X 替换 0,用 Y 替换 1,用 Z 替换 2

使用的方法——
首先用 X 替换前面的 0,然后继续向右移动直到找到 1 并用 Y 替换这个 1。再次向右移动直到找到 2,用 Z 替换它并向左移动。现在继续向左移动,直到找到一个 X。当你找到它时,向右移动,然后按照与上面相同的步骤进行操作。

当您发现 X 紧跟一个 Y 时,就会出现一个条件。此时我们继续向右移动并继续检查所有 1 和 2 是否已转换为 Y 和 Z。如果不是,则不接受字符串。如果我们达到 $ 则接受字符串。

  • 第1步:
    用 X 替换 0 并向右移动,转到状态 Q1。
  • 第2步:
    将 0 替换为 0 并向右移动,保持相同状态
    用 Y 替换 Y 并向右移动,保持相同状态
    用 Y 替换 1 并向右移动,进入状态 Q2。
  • 第 3 步:
    将 1 替换为 1 并向右移动,保持相同状态
    用 Z 替换 Z 并向右移动,保持相同状态
    用 Z 替换 2 并向右移动,转到状态 Q3。
  • 第四步:
    将 1 替换为 1 并向左移动,保持相同状态
    将 0 替换为 0 并向左移动,保持相同状态
    用 Z 替换 Z 并向左移动,保持相同状态
    用 Y 替换 Y 并向左移动,保持相同状态
    用 X 替换 X 并向右移动,进入状态 Q0。
  • 第 5 步:
    如果符号是 Y 用 Y 替换它并向右移动并转到状态 Q4
    否则转到步骤 1
  • 第 6 步:
    用 Z 替换 Z 并向右移动,保持相同状态
    用 Y 替换 Y 并向右移动,保持相同状态
    如果符号是 $ 用 $ 替换它并向左移动,字符串被接受,转到最终状态 Q5