我有这项练习作业:
假设我们有一种语言L.我们知道语言
pref(L)
(L
的所有前缀,包括L
本身中的所有单词)都是常规语言。这是否意味着语言L
也是常规的?
我取了pref(L)
的NFA并将其(通过2个epsilon转换从q0
)划分为2个单独的NFA,因为1定义了L
而另一个定义了pref(L)\L
我实际得到的是L
的NFA,这意味着它是常规的。
我不确定这是否合法。我很高兴再次领导。
提前致谢,
亚龙。
答案 0 :(得分:2)
如果pref(L)是规则的,那么L不一定是正常的。
例如,让Σ= {a}为一元字母。我要声明如果L是任何无限语言而不是Σ,那么pref(L)=Σ*。要看到这一点,首先要注意pref(L)⊆Σ*因为每个pref(L)都是Σ语言。现在,考虑Σ*中的任何字符串,其必须具有 n 的形式。如果L是Σ上的无穷大语言,则它必须包含至少一个形式为 m 的字符串,其中m≥n。然后 n 将是 m 的前缀,因此 n ∈pref(L)。这表明Σ*⊆pref(L)和pref(L)⊆Σ*,所以在这种情况下Σ* = pref(L)。
现在,我们需要做的就是在Σ= {a}上找到一种非正规语言。例如,采用语言{a 2 n |所有字符串的n∈N},其长度为2的幂。可以使用Myhill-Nerode定理或泵语法证明这种语言不规则。但是,通过上述结果,我们知道pref(L)是一种常规语言。
希望这有帮助!