联合是正则表达式与集合中的联合不同吗?
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
当且仅当 x
是 L(u) ∪ L(v)
的成员。
在数学集中我们有
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
当且仅当 x
是 L(u) ∪ L(v)
的成员。