联合是正则表达式与集合中的联合不同吗?

Is union is regular expression different from union in set?

在数学集中我们有

A={1,2,3} B={4,5,6}

A U B = B U A = {1,2,3,4,5,6} ={6,5,2,3,4,1} //顺序无关紧要

但在计算理论中我们得到

a u b 是 a 或 b 但不是两者

同样在 a* u b* 中,我们得到 aaa 或 bbb,但不是 aaabbb 或 bbbaaa,因为并集的顺序无关紧要。

这是为什么?

谢谢 拉赫曼

为什么?

这可能仍然属于数学溢出问题,您还没有真正提供足够的上下文来给出明确的答案,所以我将做一些假设。

Union Types 在大多数语言中可能会给你这样的表达:

type C = B union A

因此类型 C 是类型 B 或 C 中可能存在的所有值的 type/set。因此类型 B 的值 x 也是类型 C 的值。

许多语言确实如此。然而,堆栈溢出针对的是更具体的编程世界。数学溢出将有更多的理论家能够更好地回答您的问题。

没有。在形式语言理论中,正则表达式和正则集之间存在字母表 Σ 上的对应关系。函数L将一个正则表达式u映射到对应的正则集L(u);相反,每个正则集 A 对应于 L<sup>-1</sup>(A):

中的正则表达式
L(∅)   = ∅
L(λ)   = {λ}
L(a)   = {a}              (for all a ∈ Σ)
L(uv)  = L(u)L(v)       = {xy ∈ Σ* : x ∈ L(u) ∧ x ∈ L(v)}
L(u|v) = L(u) ∪ L(v)    = {x ∈ Σ* : x ∈ L(u) ∨ x ∈ L(v)}
L(u*)  = ∪[i ∈ ℕ] L(u)<sup>i</sup> = ∪[i ∈ ℕ] {x<sup>i</sup> ∈ Σ* : x ∈ L(u)}

正则表达式的并集对应于正则集的并集,也就是我们熟悉的集合论中的并集运算。正则表达式 u 匹配字符串 x 当且仅当 x 是相应集合 L(u) 的成员。因此,u|v 匹配 x 当且仅当 xL(u) ∪ L(v) 的成员。