自动机和正式语言

时间:2015-09-15 22:42:01

标签: automata automata-theory

显示常规语言L的单词的反向也是常规的

我对如何处理这个问题很困惑,我已经被困了好几个小时:对于一个单词x,我们使用x ^ r来表示它的反向。对于语言L,我们使用L ^ r来表示{x ^ r,其中x在L的集合中}。证明如果L是规则的那么L ^ r

1 个答案:

答案 0 :(得分:1)

如果L是常规的,那么存在一些生成它的常规语法。它可以始终表示为左常规语法或右常规语法。让我们假设它是左常规语法G_l(右边常规语法的证明是类似的)。

这种语法有两种类型的作品;终止类型:

A -> a, where A is non-terminal and a is either a terminal or empty string (epsilon)

或链接类型:

B -> Ca, where B, C are non-terminals and a is a terminal

当我们将反向应用于常规语言时,我们基本上也将它应用于制作的尾部(因为头部只是单个非终端)。它将在稍后证明。所以我们得到了一个新的语法G_r,其中包括:

A -> a, where A is non-terminal and a is either a terminal or empty string (epsilon)
B -> aC, where B, C are non-terminals and a is a terminal

但是,嘿,这是一个正确的常规语法!所以它接受的语言也是常规的。

有一件事要做 - 表明倒车尾巴实际上做了它应该做的事情。我们将非常简单地证明:

  1. 如果L包含\ epsilon,则有生产' S - > \小量'在G_l。由于我们不接触这样的作品,因此它也出现在G_r中。

  2. 如果L包含a,一个由单个终端组成的单词,那么它与上述类似

  3. 如果L包含aZ,则其中a是终端,而Z是从{{1}中的单词中删除第一个终端构造的语言中的单词然后L包含(因为链接产品的更改)L^r。 Z也是一种常规语言,因为它可以通过删除第一个"级别来构建。来自(Z^r)a的左制作,留给我们一个正常的语法。

  4. 我希望它有所帮助。通过扭转相关有限自动机的边缘并稍微改变接受和进入状态,这也可以说是一种更容易实现的方法。