【问题标题】:How would you prove an ordered language is regular?你如何证明有序语言是正规的?
【发布时间】:2013-10-29 23:07:40
【问题描述】:

我想知道如何证明具有顺序约束的语言是正则的。例如,如果您有 Σ = {1,2,3,4,5} 其中 L(Σ* 的子集)= (a1,a2,...an) 使得 an+1 大于 an你证明这是一种常规语言吗?

例如 α = (1,3,5) 会被接受,但 α = (1,4,5,2) 不会。

【问题讨论】:

    标签: regular-language automaton


    【解决方案1】:

    任何可以被 DFA(确定性有限自动机)识别的语言都是正则的。要证明您描述的语言是常规语言,您只需证明存在识别这种特定语言的 DFA。

    记住 Σ 是有限的。如果我正确理解了语言的约束,一个有效的结构将有一个起始状态(接受或不接受,取决于你是否想在你的语言中包含 ε),对于 Σ 中的每个符号都有一个接受状态和一个拒绝状态.如果当前状态是起始状态或对应于“较小”符号,则转换函数应导致与当前输入符号对应的状态,否则为拒绝状态。

    也可以使用快捷方式-每种有限语言都是常规的,如果我正确理解了您描述的语言的约束,它显然是有限的(因为 Σ 是有限的)。这意味着该语言也是常规的。

    【讨论】:

    • 这是我试图证明是常规语言的简化版本,我正在寻找一个可以应用于更困难问题的概念。您描述的方式是我试图为我的问题绘制 DFA,但我有一个问题需要加星标(我认为)。在更复杂的情况下,有这样的顺序约束,但与数字不同的是,它有,例如,p 可以跟随 r,t 可以跟随 p,但然后 r 可以跟随 t。但是,您的见解很有帮助,因为我完全忘记了拒绝状态以使其完整:)
    • 在任何情况下都适用相同的通用解决方案:如果您可以构造 DFA 或 NFA 来描述语言,那么它就是常规的。使用 Kleene 星号应该不是问题,因为很容易修改自动机以接受其原始语言的星号版本 --> 如果 A 是,则 A* 是常规的。如果这更容易,您可能还想证明该语言是几种常规语言的联合。正则语言在联合运算符上是封闭的,因此生成的语言也是正则的。
    • 我认为将语言分解为更小的 DFA,然后将它们联合起来可能是我最好的选择。感谢您的帮助。
    • 没问题,希望你成功!
    猜你喜欢
    • 2016-07-03
    • 1970-01-01
    • 2016-07-11
    • 1970-01-01
    • 2019-09-21
    • 1970-01-01
    • 2020-07-11
    • 1970-01-01
    相关资源
    最近更新 更多