📜  为语言 L = {wwr | 构建图灵机w∈{0, 1}}

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

先决条件——图灵机
语言 L = {ww r |赢; {0, 1}} 代表一种只使用2个字符的语言,即0和1。语言的第一部分可以是0和1的任意字符串。第二部分与第一部分相反。将这两个部分组合在一起就形成了字符串。任何属于此类别的字符串都将被该语言接受。字符串的开头和结尾用 $ 符号标记。

例如,如果第一部分 w = 1 1 0 0 1 那么第二部分 w r = 1 0 0 1 1。很明显 w r是 w 的反义词,所以字符串1 1 0 0 1 1 0 0 1 1 是给定语言的一部分。

例子 –

Input : 0 0 1 1 1 1 0 0
Output : Accepted
Input : 1 0 1 0 0 1 0 1 
Output : Accepted

基本表示 –

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

使用的方法 –
首先检查第一个符号,如果它是 0,则用 Y 替换它,如果它是 1,则用 X 替换它。然后转到字符串的末尾。所以最后一个符号与第一个相同。我们也根据它用 X 或 Y 替换它。
现在再次回到符号替换旁边的位置,并重复上述相同的过程。

需要注意的一件重要事情是,由于 w r是 w 的反转,因此它们将具有相同数量的符号。每次替换字符串开头的第 n 个符号时,从末尾替换相应的第 n 个符号。

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