证明 CFL 在 union 和 star 下是封闭的,但在交集下不是?

CFL 在计算理论 (TOC) 中是指上下文无关语言。现在让我们了解 CFL 是如何在 Union 下关闭的。

CFL 在 UNION 下关闭

如果 L1 和 L2 是 CFL,则 L1 U L2 也是 CFL。

让 L1 和 L2 由上下文无关文法 (CFG) 生成。

G1=(V1,T1,P1,S1) and G2=(V2,T2,P2,S2) 不失一般性下标φ)。

后续步骤完全使用 G1 或 G2 的生产。

这样生成的每个单词要么是 L1 中的单词,要么是 L2 中的单词。

例子

令 L1 为回文,定义为:

S->aSa|bSb|a|b|^

令 L2 为 {anbn|n>=0},定义为 -

S->aSb|^

那么联合语言被定义为 -

S->S1|S2

S1->aS1a|bS1b|a|b|^

S2->aS2b|^

CFG 在 KLEENE 星下关闭

现在,让我们了解 CFG 在星下是如何闭合的。

证明

如果 L1 是 CFL,则 L1* 是 CFL。

令 L1 由 CFG G1=(V1,T1,P1,S1) 生成而不失一般性下标 G1 的每个非终端与 a1。

定义 CFG,G 生成 L1* 为 -

   G=(v1 U {S}, T1, P1 U {S->S1S{^},S}

每个单词生成 ^ 或 L1 中相同的单词序列。

L1* 中的每个单词都可以由 G 生成。

例子

令 L1 为 {anbn|n>=0} 由 S->aSb|^ 定义

然后 L1* 生成为:

S->S1S|^

S1->aS1b|^

CFG 在交叉路口下不闭合

现在让我们了解 CFG 在交叉点下是如何无法闭合的。

证明

如果 L1 和 L2 是 CFL,则 L1∩L2 可能不是 CFL。

L1={anbnam|n,m>=0} 由 CFG 生成 -

   S->XA

   X->aXb|^

   A->Aa|^

L2-{anbmam|n,n>=0} 由 CFG 生成 -

   S->AX

   X->aXb|^

   A->Aa|^

L1∩L2 ={anbnan|n>=0} 这不是 CFL。