先决条件——图灵机
语言 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