📜  为语言L = {a ^ nb ^ mc ^ nm构造图灵机,其中n> = 0且m> = 0}

📅  最后修改于: 2021-08-27 04:55:48             🧑  作者: Mango

先决条件–图灵机

语言L = {a n b m c nm | n> = 0且m> = 0}代表一种语言,我们仅使用3个符号,即a,b和c。在开始的语言中,n个数字为a,后跟m个数字为b,然后n * m个数字为c。任何属于此类的字符串都将被该语言接受。

例子:

输入: abbcc输出:输入: abbbcc输出: NO输入: \epsilon或空字符串输出:

基本表述:

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

基本思路:
磁带头读取w的最左边的符号,它是a,只有在开始时,我们才将其设置为Blank。然后我们遍历以使最左边的ba $并用Blank替换最右边的c,我们将执行这种曲折模式,将b用$替换b,将c用Blank替换,直到所有b不被$替换。之后我们将向左遍历直到我们得到最左边的a并在遍历中将所有$替换为b为止。此后,我们将字符串简化为n-1 b m c nm-m的形式,这样我们就可以确定是否所有的a都被Blank替换,并且如果该字符串属于Language L,那么就不会剩下c了,因此它将被接受。

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

工作程序:

  • 步骤1:
    我们首先将最左边的a替换为Blank,然后遍历以将最左边的b替换为$,将最右边的c替换为Blank。从状态Q1重复此步骤,直到没有剩余的b为止。
  • 第2步:
    在将所有b替换为$之后,我们也将m的最右边的c替换为Blanks,然后我们将移回最左端的a并将所有$替换为b的步骤。在此步骤之后,如果检查字符串,则将其简化为n-1 b m c nm-m形式。现在,我们将从步骤1开始重复,直到所有a都不为空白为止。
  • 步骤3:
    因此,在将所有a都设置为空白之后,如果该字符串属于语言L,则必须保留0 c,这将在状态Q0和Q6进行检查,因为仅会保留b,然后如果找到Blank,则所有c都必须替换为就像我们在字符串的最右端使c为Blank的地方那样Blank。
  • 第四步:
    因此,如果我们在状态Q6处得到一个Blank符号,则该字符串将在最终状态Q7下被接受。同样,如果字符串为空,那么它还将在状态Q0处被接受为空白符号输入,然后它将进入状态Q7并被接受。