这两个离散有限自动机有何不同?

时间:2016-10-04 02:27:55

标签: regular-language finite-automata

我有以下语句定义的离散有限自动机:

{ω| ω是不在*∪b *}

中的任何字符串

出于某种原因,我只是不理解“a *∪b *”部分。我知道联盟是什么,但这与a * b *有什么不同?这两个陈述的结果DFA是否相同?我需要首先为此语言的补充创建DFA,然后使用该DFA基于此创建上述语言的DFA。

有人能帮我理解吗?

2 个答案:

答案 0 :(得分:0)

让我们分解定义,然后更简单地看到a* ∪ b*a* b*之间的区别。

  • 集合x*是指符号x的任何非负数(包括零)。这包括空字符串(ε),xxxxxx等等。
  • 集合XY是指X后跟Y的任何符号
    • 如果X = {1, 2}Y = {a, b},则XY = {1a, 1b, 2a, 2b}
  • 集合X ∪ Y是指XY描述的集合的并集。这包括可能在XY集合中的任何符号,但不一定是两者。
    • 如果X = {1, 2}Y = {a, b},则X ∪ Y = {1, 2, a, b}

从上面我们可以推断,a* b*中的元素集是集合a*中的任何元素,后跟集合b*中的任何元素(请记住,因为我们是使用*表示法,包含空字符串)。 a* = {ε, a, aa, aaa, aaaa, ... }b* = {ε, b, bb, bbb, bbbb, ... }。因此a* b* = {ε, a, b, ab, aa, aab, aabb, bb, abb, aabb, ...}

同样,我们现在知道a* ∪ b*包含集合a*b*中的所有元素。因此a* ∪ b* = {ε, a, b, aa, bb, aaa, bbb, aaaa, bbbb, ...}。请注意,没有任何元素同时具有符号ab,因为它不在集合中。

最后,您可以询问a* b*但不在a* ∪ b*中的元素是什么。 a* b* \ a* ∪ b* = { x ∈ a* b* | x ∉ a* ∪ b*} = { ab, abb, abbb, ... aab, aabb, aabbb, ..., aaab, aaabb, ... }。这些元素中包含 符号a b

答案 1 :(得分:0)

a* U b*仅是a的所有字符串的语言,仅与b的所有字符串一起使用:{empty, a, b, aa, bb, aaa, bbb, ...}。不是这种语言的字符串不仅包含a s或b s,而且包含{ab, ba, aab, aba, baa, abb, bab, bba, ...}a*b*是另一种语言,其中包含任何a在所有b之前的所有字符串:{empty, a, b, aa, ab, bb, ...}a*b*a* U b*的超集,但它不等于它。它既不是a* U b*中的字符串语言的子集也不是超集,但它在许多地方都重叠。由于所有三种语言都是不同的,所以这三种语言都有不同的DFA。