📌  相关文章
📜  图灵机检查给定字符串是否为偶回文

📅  最后修改于: 2022-05-13 01:54:10.598000             🧑  作者: Mango

图灵机检查给定字符串是否为偶回文

如果从左到右读取 w 与从右到左读取 w 得到相同的结果,则字符串w 称为回文。偶数回文具有偶数个符号。

例子:

输入:abaaba输出:YES输入:abba输出:YES输入:abbaba输出:NO输入:空字符串或\epsilon输出:是

基本表示:

计算开始:
磁带包含输入字符串w,磁带头在 w 的最左边符号,图灵机处于启动状态 Q0。

基本理念:
磁带磁头读取 w 的最左边的符号,删除该符号并通过状态“记住”它。然后磁带头移动到最右边的符号并测试它是否等于(已经删除的)最左边的符号。

如果相等,则删除最右边的符号,磁头移动到新的最左边符号,重复整个过程。否则机器无法达到最终状态,字符串将被拒绝。

所用符号的含义:
R, L – 任一侧一个单元的移动方向。
B-空白
a, b-要测试其组合字符串的符号

工作程序:

  • 第1步:
    我们从 Q0 状态开始,如果我们得到一个符号“a”作为输入,那么字符串的结尾也应该有“a”,那么只有字符串是回文,我们必须验证这一点。我们首先将 B 的当前输入“a”设为空白并进入状态 Q1 向右移动以遍历字符串直到我们到达末尾。保持输入符号 a 或 b 中的任何一个都应保持不变。

    当我们将空白作为输入符号时,我们可以到达字符串的末尾,然后我们将状态更改为 Q2 并测试前一个符号是否为“a”,然后我们更改为状态 Q3,然后只有我们将其替换为空白,我们有成功测试了字符串是回文直到现在我们将在字符串上向后或向左遍历(保持 a 和 b 不变),直到我们得到空白,这是我们在开始时设置为空白的符号,我们改变状态到 Q0。现在我们对“b”重复相同的过程作为输入。

  • 第2步:
    到此为止,如果字符串是回文,那么它将在所有迭代后返回到状态 Q0,如果字符串不是回文,那么我们将停留在状态 Q2 或 Q5,当停留在这些点时,我们无法到达 Q0,因此不能达到最终状态或接受状态 Q7。
  • 第 3 步:
    如果字符串是回文,那么将只剩下空白符号,因此我们在 Q0 测试它,如果我们得到空白,因此字符串被接受并且是回文,此时还包括另一个条件,它是空字符串或\epsilon因为空字符串也是回文因此被接受。