我有以下语句定义的离散有限自动机:
{ω| ω是不在*∪b *}
中的任何字符串出于某种原因,我只是不理解“a *∪b *”部分。我知道联盟是什么,但这与a * b *有什么不同?这两个陈述的结果DFA是否相同?我需要首先为此语言的补充创建DFA,然后使用该DFA基于此创建上述语言的DFA。
有人能帮我理解吗?
答案 0 :(得分:0)
让我们分解定义,然后更简单地看到a* ∪ b*
和a* b*
之间的区别。
x*
是指符号x
的任何非负数(包括零)。这包括空字符串(ε
),x
,xx
,xxx
等等。XY
是指X
后跟Y
的任何符号
X = {1, 2}
和Y = {a, b}
,则XY = {1a, 1b, 2a, 2b}
X ∪ Y
是指X
和Y
描述的集合的并集。这包括可能在X
或Y
集合中的任何符号,但不一定是两者。
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, ...}
。请注意,没有任何元素同时具有符号a
和b
,因为它不在集合中。
最后,您可以询问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。