【问题标题】:Context free and regular language with push-down automata and infinite elements具有下推自动机和无限元素的无上下文和常规语言
【发布时间】:2017-04-11 00:22:39
【问题描述】:

我正在为我的理论课做硬件作业,遇到了一个我什至不知道从哪里开始的问题。我们正在介绍下推自动机部分。

“令 L1 为上下文无关语言,L2 为正则语言。证明存在一种算法来确定 L1 和 L2 是否有无限数量的共同元素。”

我不确定如何解决这个问题。我无法让我的头脑理解这个想法。我确实知道常规语言不允许模棱两可,我想知道这是否是这个问题需要考虑的事情。此外,由于它位于“下推式自动机”部分,我假设它可能需要创建一个 npda 或 pda。谁能至少引导我朝着正确的方向前进。不是寻求硬件解决,而是寻求硬件帮助!

【问题讨论】:

  • 您为什么认为常规语言“不允许歧义”?考虑 S = a A. S = a B. A = b. B = b. 定义的语言显然是正则的,对于输入 ab 显然有两个不同的解析树。

标签: regular-language formal-languages context-free-language pushdown-automaton


【解决方案1】:
  1. 给定 L1 的 PDA A1 和 L2 的 DFA A2,构造 A3,它使用笛卡尔积机器构造识别 L1 和 L2 的交集,就像在两个 DFA 之间一样。正式的结构有点混乱,但基本上你有新的状态来跟踪旧状态的组合并根据需要添加转换/堆栈更改。

  2. 使用标准构造从 A3 构造 CFG G3。同样,证明是混乱的,你最终会得到混乱的语法,但这也是可以做到的。

  3. 从 G3 中删除无用的变量、空乘和单位乘积。如果您习惯于乔姆斯基范式 (CNF),这基本上是一种类似的过程。

  4. 创建非终结符的依赖图。如果你的依赖图中存在循环,则 G3 的语言是无限的。

  5. 由于 G3 是 L1 和 L2 之间的共同词的语法,因此如果 L1 和 L2 有无限多的共同词,则 G3 会产生无限多的词。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-20
    • 2015-08-13
    • 2015-03-09
    • 2012-04-12
    • 1970-01-01
    • 2014-11-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多