【问题标题】:Automata and Formal Languages自动机和形式语言
【发布时间】:2015-09-15 22:42:00
【问题描述】:

表示正则语言 L 的单词的反义词也是正则

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

【问题讨论】:

    标签: automata automata-theory


    【解决方案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,则G_l 中存在产生式'S -> \epsilon'。因为我们不接触这样的作品,所以它也出现在G_r

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

    3. 如果L 包含aZ,其中a 是一个终端,Z 是从L 中的单词中去掉第一个终端而构造的语言中的一个单词,那么L^r 包含(由于链接制作的更改)(Z^r)a。 Z 也是一种常规语言,因为它可以通过从 G_l 中删除左产生式的第一个“级别”来构建,这给我们留下了常规语法。

    我希望它有所帮助。通过反转相关有限自动机的边缘并稍微改变接受和进入状态,还有一种可以说更简单的方法。

    【讨论】:

      猜你喜欢
      • 2016-10-04
      • 2019-12-25
      • 2011-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-13
      • 2014-11-29
      • 2014-03-25
      相关资源
      最近更新 更多