联合是否是正则表达式,不同于集合中的联合?

问题描述 投票:-1回答:2

在数学集中,我们有

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,因为顺序在联合中无关紧要。

为什么?

谢谢拉曼

为什么?

set computation-theory
2个回答
0
投票

没有在形式语言理论中,正则表达式和正则集之间在字母Σ之间存在对应关系。函数L将正则表达式u映射到相应的正则集L(u);相反,每个A正则集都对应L-1(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)i = ∪[i ∈ ℕ] {xi ∈ Σ* : x ∈ L(u)}

正则表达式的并集对应于正则集的并集,这是集合理论中熟悉的并集操作。如果u是相应集合x的成员,则正则表达式x与字符串L(u)匹配。因此,如果u|vx的成员,则xL(u) ∪ L(v)匹配。


0
投票

这可能仍然属于数学溢出,并且您实际上没有提供足够的上下文来确定答案,所以我将做一些假设。

在大多数语言中,[Union Types可能会给您这样的表达式:

type C = B union A

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

而且对于许多语言来说确实如此。但是,堆栈溢出的目标是更具体的编程领域。数学溢出将有更多的理论家来更好地回答您的问题。

© www.soinside.com 2019 - 2024. All rights reserved.