先决条件——图灵机
在给定语言中 L = {a i b j c k | i>j>k; k≥1},’a’、’b’和’c’的每一个字符串都有一定数量的a,然后是一定数量的b,然后是一定数量的c。条件是第三个符号的计数应至少为 1。 ‘a’ 和 ‘b’ 之后可以有相同数量,但 c 的计数小于 ‘b’ 的计数并且 ‘b’ 的计数小于 ‘ 的计数一种’。假设字符串以“$”结尾。
例子:
Input: a a a b b c
Here a = 3, b = 2, c = 1
Output: ACCEPTED
Input: a a b b c c c
Here a = 2, b = 2, c = 3 but |a|>|b|>|c|
Output: NOT ACCEPTED
磁带表示:
方法:
- 通过将 A & D 作为单个元素来压缩两个元素。
- 之后比较 A & D。
- 如果|C|大于|(A, D)|,则不被接受。
- 如果|D|大于 |A|,则不被接受。
- 否则接受。
脚步:
- 步骤 1:将 A 转换为 X 并向右移动并转到步骤 2。
- 步骤 2:继续忽略 A 和 Y 并向右移动。将 D 转换为 Y 并向右移动并转到第 3 步。
- 步骤3:继续忽略D和Z并向右移动。如果找到C,则将其设为Z并向左移动到步骤4。如果找到B,则忽略它并向左移动并转到步骤5。
- Step-4:继续忽略Z、A、Y、D向左移动。如果找到X则忽略并向右移动并转到步骤1。
- 步骤 5:继续忽略 D、Y 和 A,向左移动。忽略 X 向右移动并转到第 6 步。
- 第 6 步:将 A 转换为 X 并向右移动并转到第 7 步。
- Step-7:继续忽略Y和A向右移动。如果找到B,则忽略它并向左移动并转到步骤8。如果D使其成为Y并向右移动并转到步骤5。
- 步骤 8:停止机器(接受字符串)
状态转移图:
这里, Q0表示初始状态, Q1、Q2、Q3、Q4、Q5、Q6表示过渡状态, Q7表示最终状态。 A、C、D 是使用的变量,R、L 表示左右。
解释:
- 使用 Q0,当找到 A 时,将其设为 X 并向右转到 Q1。
- 在状态 Q1 上,忽略所有 A 和 Y 并向右移动。如果 D 找到,则将其设为 Y 并向右进入下一个状态 Q2。
- 在 Q2 中,忽略所有 D、Z 并向右移动。如果 B 找到则忽略它,向左移动并进入状态 Q4,如果找到 C,则使其 Z 向左移动并进入 Q3。
- 在 Q3 状态,忽略所有 Z、D、Y、A 并向左移动。如果找到 X,则忽略它向右移动到 Q0。
- 在 Q4 中,忽略所有 A、Y、D 并向左移动。如果找到 X,则忽略它向右移动到状态 Q6。
- 在 Q6 状态下,如果 A 找到,则使其 X 向右移动到状态 Q5
- 在 Q5 中,忽略所有 A、Y 并向右移动。如果找到 D,则将其设为 Y 并向右移动到状态 Q4。如果找到 B 则忽略它并向左移动到 Q7
- 如果达到 Q7 状态,它将产生接受字符串的结果。
注意:对于|A|、|D|、|C| 的比较,使用了图灵机作为比较器的概念。