常规语言和连接

Cha*_*teA 2 concatenation finite-automata fsm regular-language

常规语言在串联下是封闭的 - 这可以通过将一种语言的接受状态与 epsilon 转换为下一种语言的开始状态来证明。

如果我们考虑语言 L = {a^n | n >=0},这种语言是正则的(它只是一个*)。如果我们将它与另一种语言连接起来 L = {b^n | n >=0},这也是正则,我们最终得到a^nb^n,但我们显然知道这不是正则。

我的逻辑哪里出了问题?

tem*_*def 7

两种语言 L 1和 L 2的连接的定义是所有字符串 wx 的集合,其中 w ∈ L 1和 x ∈ L 2。这意味着 L 1 L 2由将来自 L 1 的一个字符串和来自 L 2 的一个字符串配对形成的所有可能的字符串组成,这不一定与配对来自每种语言的匹配字符串相同。

结果,正如@Oli Charlesworth 指出的那样,你在这里得到的语言实际上并不是 { a n b n | n 在 N }。相反,它是语言 { a n b m | n in N and m in N },即语言 a*b*。这种语言是常规的,因为它是由常规语言给出的。

希望这可以帮助!

  • @anir 好问题!语言串联类似于笛卡尔积,但又不同。首先,涉及的类型不同:笛卡尔积是为任意集合定义的,而语言串联仅适用于字符串集合,两个集合的笛卡尔积形成一组对,而语言串联产生一组字符串。此外,集合的基数可能不同;{a, aa} $次;{a, aa} = {(aa, a), (aa, aa), (a, a), (a, aa) } 而 {a, aa}{a, aa} = {aa, aaa, aaaa} 。 (2认同)