【问题标题】:Context Free Grammar for which a RegEx is impossible不可能使用正则表达式的上下文无关语法
【发布时间】:2011-02-25 16:57:50
【问题描述】:

我正在尝试找出是否有可能提供一个 CFG 示例,它不可能给出一个可以接受相同语言的正则表达式。

【问题讨论】:

  • 如果你对这两个是什么有点了解,答案应该很明显了......来吧,你有没有尝试过?如果是这样,请告诉我们。
  • 这显然是一道作业题……
  • S -> { S } S S -> ε 平衡括号的语言似乎可行,但我不确定。

标签: regex context-free-grammar


【解决方案1】:

任何需要计数/记忆的语言都不能表示为正则表达式。

例如,检查平衡括号的语言:

S -> { S } S

S -> ε

【讨论】:

    【解决方案2】:

    由于常规机器/表达式只有有限(预定义)数量的状态,它不能“记住”(无限)输入的早期部分。

    因此,对于状态机来说,识别以下表达式是不可能的:anbn (n∈ℕ)

    你可以为 n ≤ x 制造这样的机器,其中 x∈ℕ,但没有状态机可以为 ℕ 中的每个可能值做到这一点。

    【讨论】:

    • 您是说(有限)正则表达式无法捕获无限表达式。这是一个有争议的问题,因为无限表达式不存在,如果存在,它们将被无限正则表达式捕获!
    • 你可以创建一个接受 $a^x b^x$ 的状态机,其中 $x=10000$,或 $x=1000000$。您无法为任意 $x$ 制作状态机。您可以制作一个接受任意 $x$ 的堆栈机/下推自动机或图灵机。有关更详细的说明,请参阅this link
    猜你喜欢
    • 2021-06-29
    • 2014-05-24
    • 2016-04-11
    • 2020-03-03
    • 1970-01-01
    • 1970-01-01
    • 2017-04-20
    • 1970-01-01
    • 2014-02-21
    相关资源
    最近更新 更多