有很多方法可以证明某种语言不是正规语言,但是我需要做些什么来证明某种语言是正规语言呢?
例如,如果给我是规则的,那么我怎么能证明后面的L ′也是规则的呢?
我可以画一个不确定的有限自动机来证明这一点吗?
有很多方法可以证明某种语言不是正规语言,但是我需要做些什么来证明某种语言是正规语言呢?
例如,如果给我是规则的,那么我怎么能证明后面的L ′也是规则的呢?
我可以画一个不确定的有限自动机来证明这一点吗?
Answers:
是的,如果您可以提出以下任何一项建议:
对于某些语言,则L是规则的。还有更多的等效模型,但以上是最常见的。
在“计算”世界之外,还有一些有用的属性。如果也是正规的
您可以通过对常规语言执行某些操作来构造它,而这些操作对于常规语言是封闭的,例如
还有更多,或者
在给定的示例中,我们有一些(常规)语言作为基础,并且想说一些关于从中衍生的语言L 的信息。遵循第一种方法-为L '构建一个合适的模型-我们可以假设我们想要的L的任何等效模型;当然,由于L未知,它将保持抽象。在第二种方法中,我们可以直接使用L并对其应用闭包属性,以获得对L '的描述。
基本方法
逻辑方法(通常用于形式验证)
先进的方法
复杂的抽水引理。例如,参见
[1] J. Jaffe,《常规语言的必要而充分的抽取引理》,Sigact News-SIGACT 10(1978)48-49。
[2] A. Ehrenfeucht,R。Parikh和G. Rozenberg,《常规集的抽水引理》,SIAM J. Comput。 10(1981),536-541。
[3] S. Varricchio,规则集的抽水条件,SIAM J. Comput。 26(1997)764-771。
好准订单。参见
[4] W. Bucher,A。Ehrenfeucht,D。Haussler,关于由导数关系产生的总调节器,Theor。计算 科学 40(1985)131–148。
[5] M. Kunz,语言不等式和良好拟序的正则解。
支持有理数列。
Ran G.的答案给出了相当广泛的等效模型列表,这些等效模型可用于指定常规语言(列表还在继续,双向自动机,MSO逻辑,但是在“更多等效模型”下的链接涵盖了')。正如拉斐尔(Raphael)强调的那样,我们需要一个论点来说服听众相信所选择的陈述确实是正确的。
重新考虑该问题,它添加了“例如 ”。这意味着我们必须给出一个有效的构造,在给定上述任何模型的情况下,我们假定指定语言L,都将该模型转换为L ′。通常,这将是同一类型的模型,但不必是:例如,我们可以从L的确定性FSA开始,到L '的确定性FSA 结束。
这包括可能使用闭合操作:在例子中,明确给出的操作,我们有。
因此,我的观点是,答案很不错,但是当我们不从头开始构建特定语言时,应该添加“从到L '的构造”。
上面的答案未涵盖的另一种方法是有限自动机转换。举一个简单的例子,让我们展示在shuffle操作下常规语言是关闭的,定义如下: 您可以使用闭包属性在shuffle下显示闭包,但也可以直接使用DFA显示它。假设甲我 = ⟨ Σ ,Q 我,˚F 我,δ
此方法的更复杂的版本涉及猜测。例如,让我们说明正则语言在反向(即 L下是关闭的 (这里(w 1 … w n )R = w n … w 1
(我们可以摆脱,如果我们允许多个初始状态。)这里的猜测成分是反转后的单词的最终状态。
猜测通常还涉及验证。一个简单的例子是下闭合转动: 假设大号由DFA接受⟨ Σ ,Q ,0 ⟩,其操作如下。NFA首先猜测q = δ (q 0,x )。然后验证δ
该技术的另一种变体包括有界计数器。作为一个例子,让我们考虑改变编辑距离闭合: 给定一个DFA ⟨ Σ ,Q ,˚F ,δ ,q 0 ⟩为大号,例如构建一个NFA ⟨ Σ ,Q '
语言是常规语言,如果您可以编写一个扫描程序来决定任意字符串,则是否使用不超过固定数量的内存即可确定它们是否属于该语言-即可以在O(1)空间中进行识别。
正则表达式转换是证明某些操作下关闭的一种方法。简单的两个例子是在封闭的逆转之下,封闭同态。