非上下文无关语言的子集是否可能是上下文无关的?

Is it possible for a subset of a non-context free language to be context-free?

例如,如果我有 B 的非上下文无关语言,是否存在这样的上下文无关语言 A,使得 A 是 B 的子集?我一直在想例子,但想不出任何有效的例子。 当我说 A = {A = {w | w is of even length and w ∈ {a, b, c}} 是上下文无关的,而 B = {ww | w ∈ {a,b,c}} 不是上下文无关的时,我想我明白了。但是,我意识到有些字符串 A 可以产生而 B 不能,因此,A 不是 B 的子集。

有谁知道在我的情况下可能有效的示例吗?

任何有限的字符串集都是上下文无关语言。 (实际上,它是一种常规语言。)因此,无论语言是什么,语言的任何有限子集都是上下文无关的。

另一个简单的例子是语言 L = L1 ∪ L2 其中 L1[ 的字母表=32=] 是 Σ1 而 L2 的字母表是 Σ2 和 Σ1∩Σ2=∅。现在,仅当 L1 和 L2 都是上下文无关的时,L 才是上下文无关的。 (如果字母表不相交,则情况并非如此。)因此,如果恰好 L1 和 L2 之一是上下文无关的,则它是非上下文无关语言 L 的一个子集。

如果您对这些都不够感兴趣,那么语言 { a* }(其中 a 是一个符号)是 { ww | 的子集赢; {a, b}* }。同一经典非上下文无关语言的另一个子集是 { ww |赢; {a, b}* ∧ w = wR }(即所有重复的偶数长度回文的语言)它是上下文无关的,因为它与 { ww R |赢; {a, b}* ∧ w = wR },作为第二个条件的结果。