设Σ是有限字母表,L⊆Σ 是一门语言。设Σ0⊆Σ。对于每个字符串 w = w1···wn∈Σ ,定义res(w,Σ 0 )= y1···yn其中yi = wi 如果wi∈Σ 0 ,和yi = if wi∈Σ\Σ 0 ,每1≤i≤n。 (例如res(abracadabra,{a,b})= abaaaba。)然后 定义res(L,Σ 0 )= {res(w,Σ 0 ):w∈L}
我对这些问题有一个非常普遍的方向和思考过程,但是,我不能完全确定我能为以下问题构建可行的证据。如果有人能指出我正确的方向,那将非常感激。
(a)表明如果L⊆Σ* ? 是常规和Σ0⊆Σ,res(L,Σ 0 )必须是正规的。
我知道这个,DFA不能用于这种语言。所以我将不得不想出一个不同的方式。任何常规语言的子集都不一定是常规语言。
(b)表明如果L⊆Σ* 无上下文和Σ0⊆Σ,res(L,Σ 0 )必须没有上下文。
我知道对于这个问题,解决问题的一种方法是提供无上下文语法
(c)表明如果L⊆Σ* 和res(L,Σ 0 )每当Σ0⊂Σ时,L是常规的,L不需要是常规的。
对于这个问题,我们可以说即使L不规则,空语言也是这种语言的常规子集。所有语言都是如此(无论是否定期)
答案 0 :(得分:0)
我也在研究这个问题,这是我的想法
对于a:如果L是常规的,它可以用正则表达式表示,因此应该可以为L'创建正则表达式。
对于b:做一个CFG,其中{V,E',R,S}的V和R中的终端只包括E'的终端
对于c:假设res(L,E')是规则的,所以只要字母表是真正的子集,因为它不能等于L的字母表.L不需要是规则的。
这些只是我最初的想法,所以带上一粒盐(也许其他人可以提供反馈)
答案 1 :(得分:0)
虽然很明显这是家庭作业,但(a)部分的建议是研究常规语言的闭包属性。
看一下L,res(L,Σ')中提供的语言。现在看看字母Σ'上的语言(我们称之为L')。
现在让我们来看看你的例子:
res(abracadabra, {a, b}) = abaaaba
在这种情况下,L∈{abracadabra}和L'∈{abaaaba}
在这两种语言L和L'之间,我们可以使用什么标准集合操作来创建一组只有每种语言共有的元素?
如果你看一下常规语言的闭包属性,我相信你会看到完美的合适!