两种语言与不同字母表的交集是什么?

时间:2013-03-05 00:56:03

标签: theory regular-language dfa formal-languages

我做了一些谷歌搜索,并没有真正明确的弹出。

假设我有两种语言A和B.

A = {w是{a,b,c} *的子集,因此w的倒数第二个字符是b}

B = {w是{b,d} *的子集,因此最后一个字符是b}

如何定义这个?我认为字母表将是两者的结合,使它成为{a,b,c,d}但除此之外,我不知道如何制作这样的DFA。

如果有人能够对此有所了解,那就太棒了。

1 个答案:

答案 0 :(得分:3)

从集合论的角度来看,每种语言只是一些字母表上的一组字符串Σ 1 和Σ 2 。如果您使用两种语言相交,那么结果集中唯一可能出现的字符串就是那些由Σ 1 ∩Σ 2 中的字符组成的字符串,因为任何字符都不是在该集合中,必须完全属于一组字符串。

关于如何为此建立DFA - 我建议首先回答这个问题 - 假设任何常规语言L超过字母Σ,你如何修改DFA以使语言Σ∪{x},其中x∉ Σ?一种方法是添加一个新的“死状态”,在Σ∪{x}中的所有字符上转换为自身,然后添加从DFA中的每个状态到字符{x上的死状态的转换}。然后,您可以使用此方法通过Σ 1 和Σ 2 转换原始语言的DFA,使字母Σ 1 ∪Σ 2 。完成后,您可以使用常规算法交叉两个DFA来计算它们的内部结构,从而为两种语言的交集返回DFA。

希望这有帮助!