参考文献:
幺半群:结构是 ( M , ⋅ , 1 ) (M,\cdot,1) (M,⋅,1),非空集合 M M M,二元运算 ⋅ \cdot ⋅,幺元 1 1 1,
如果 m 1 ⋅ m 2 = m 2 ⋅ m 1 , ∀ m 1 , m 2 ∈ M m_1 \cdot m_2 = m_2 \cdot m_1,\forall m_1,m_2 \in M m1⋅m2=m2⋅m1,∀m1,m2∈M,我们说它是交换的。一般地,交换幺半群记为 ( M , + , 0 ) (M,+,0) (M,+,0)。幺半群,可以视为不存在减法的群。
Kleene-iteration:给定集合
V
V
V,“Kleene star” 是对集合的一元运算 ,定义为
V
∗
=
⋃
n
∈
N
V
n
V^* = \bigcup_{n \in \mathbb N} V^n
V∗=n∈N⋃Vn
其中 V 0 = { ϵ } V^0=\{\epsilon\} V0={ϵ},迭代计算 V i + 1 = { w v ∣ w ∈ V i , v ∈ V } V^{i+1}=\{wv|w \in V^i,v \in V\} Vi+1={wv∣w∈Vi,v∈V},它是有限长字符串的集合。常用在正则表达式中。
字母表(alphabet) Σ \Sigma Σ 是非空集合, x i ∈ Σ x_i \in \Sigma xi∈Σ 叫做字母(letters), w = x 1 ⋯ x n ∈ Σ ∗ w=x_1\cdots x_n \in \Sigma^* w=x1⋯xn∈Σ∗ 叫做单词(words),长度(length) ∣ w ∣ = n |w|=n ∣w∣=n。当 n = 0 n=0 n=0 叫做空单词(empty word),简记为 ϵ \epsilon ϵ,注意与空集 ∅ \empty ∅ 做区分 { ϵ } ≠ ∅ \{\epsilon\} \neq \empty {ϵ}=∅
自由幺半群(free monoid):给定字母表 Σ \Sigma Σ,形如 ( Σ ∗ , ⋅ , ϵ ) (\Sigma^*,\cdot,\epsilon) (Σ∗,⋅,ϵ),单词的乘法定义为级联 w 1 ⋅ w 2 = w 1 w 2 ∈ Σ ∗ w_1 \cdot w_2 = w_1w_2 \in \Sigma^* w1⋅w2=w1w2∈Σ∗
态射(morphism):字母表
Σ
\Sigma
Σ,半群
(
M
,
⋅
,
1
)
(M,\cdot,1)
(M,⋅,1),半群
(
Σ
∗
,
⋅
,
ϵ
)
(\Sigma^*,\cdot,\epsilon)
(Σ∗,⋅,ϵ),任意的映射
h
:
Σ
→
M
h:\Sigma \to M
h:Σ→M,可以被唯一地扩展为幺半群的同态
h
#
:
Σ
∗
→
M
h^\#: \Sigma^* \to M
h#:Σ∗→M,
h
#
(
ϵ
)
=
1
h
#
(
x
1
⋯
x
n
)
=
h
(
x
1
)
⋯
h
(
x
n
)
h#(ϵ)=1h#(x1⋯xn)=h(x1)⋯h(xn)
对于一个交换幺半群 ( M , + , 0 ) (M,+,0) (M,+,0),
完备幺半群(complete monoid):幺半群
(
M
,
+
,
0
)
(M,+,0)
(M,+,0),令
I
I
I 是任意的指标集,定义无穷加法(infinitary sum operation)
∑
I
:
M
I
→
M
\sum_I: M^I \to M
∑I:MI→M。我们说幺半群是完备的,如果
∑
i
∈
∅
m
i
=
0
∑
i
∈
{
j
}
m
i
=
m
j
∑
i
∈
{
j
,
k
}
m
i
=
m
j
+
m
k
,
j
≠
k
∑
j
∈
J
∑
i
∈
I
j
m
i
=
∑
I
m
j
,
I
=
⋃
j
∈
J
I
j
,
I
j
∩
I
j
′
=
∅
,
∀
j
≠
j
′
∑i∈\emptymi=0∑i∈{j}mi=mj∑i∈{j,k}mi=mj+mk,j≠k∑j∈J∑i∈Ijmi=∑Imj,I=⋃j∈JIj,Ij∩Ij′=\empty,∀j≠j′
也就是说把(无限大)指标集 I I I 任意打乱顺序 “加括号”,不改变加和的计算结果。明显的,完备性导致交换性;反之,交换幺半群不一定是完备的。
半环:结构是 ( S , + , ⋅ , 0 , 1 ) (S,+,\cdot,0,1) (S,+,⋅,0,1),非空集合 S S S,二元运算 + , ⋅ +,\cdot +,⋅,零元 0 0 0,幺元 1 1 1,
如果 ( S , ⋅ , 1 ) (S,\cdot,1) (S,⋅,1) 是交换的,我们说半环是交换的。如果 ( S , + , 0 ) (S,+,0) (S,+,0) 是幂等的,我们说半环是幂等的。如果 ( S , + , 0 ) (S,+,0) (S,+,0) 是(正)有序的,我们说半环是**(正)有序的**。如果 ( S , + , 0 ) (S,+,0) (S,+,0) 是完备的,我们说半环是完备的。半环,可以视为不存在减法的含幺环。
半环的例子:
令
Σ
\Sigma
Σ 是有限字母表,任意子集
L
⊆
Σ
∗
L \subseteq \Sigma^*
L⊆Σ∗ 被称为形式语言(formal language),定义语言的乘积(单词的级联)
L
1
⋅
L
2
=
{
w
1
w
2
∣
w
1
∈
L
1
,
w
2
∈
L
2
}
L_1 \cdot L_2 = \{w_1w_2|\,\, w_1 \in L_1,w_2 \in L_2\}
L1⋅L2={w1w2∣w1∈L1,w2∈L2}
集合 U U U 的幂集(power set)定义为所有子集的收集,简记为 2 U 2^U 2U。那么 Σ ∗ \Sigma^* Σ∗ 的幂集 ( 2 Σ ∗ , ∪ , ⋅ , ∅ , { ϵ } ) (2^{\Sigma^*},\cup,\cdot,\empty,\{\epsilon\}) (2Σ∗,∪,⋅,∅,{ϵ}) 是一个半环,称为形式语言半环(semiring of formal languages)。
集合
U
U
U 上的二元关系(binary relation)可以表示为子集
R
⊆
U
×
U
R \subseteq U \times U
R⊆U×U,我们定义二元关系的乘积
R
1
⋅
R
2
=
{
(
u
1
,
u
2
)
∣
∃
u
∈
U
,
(
u
1
,
u
)
∈
R
1
,
(
u
2
,
u
)
∈
R
2
}
R_1 \cdot R_2 = \{(u_1,u_2)|\,\, \exists u \in U, (u_1,u) \in R_1,(u_2,u) \in R_2\}
R1⋅R2={(u1,u2)∣∃u∈U,(u1,u)∈R1,(u2,u)∈R2}
易知幂集 2 U × U 2^{U \times U} 2U×U 是所有二元关系的收集,定义关系 Δ = { ( u , u ) ∣ u ∈ U } \Delta=\{(u,u)| u\in U\} Δ={(u,u)∣u∈U},那么 ( 2 U × U , ∪ , ⋅ , ∅ , Δ ) (2^{U \times U},\cup,\cdot,\empty,\Delta) (2U×U,∪,⋅,∅,Δ) 是一个半环,称为二元关系半环(semiring of binary relations)
偏序集(partially ordered set) ( L , ≤ ) (L,\le) (L,≤),定义二元运算:最小上界(least upper bound) a ∨ b : = sup { a , b } a \vee b:=\sup\{a,b\} a∨b:=sup{a,b}、最大下界(greatest lower bound) a ∧ b : = inf { a , b } a \wedge b:=\inf\{a,b\} a∧b:=inf{a,b},假如 ∀ a , b ∈ L \forall a,b \in L ∀a,b∈L 使得 a ∨ b ∈ L , a ∧ b ∈ L a \vee b \in L, a\wedge b \in L a∨b∈L,a∧b∈L 总存在,那么称为格(lattice)。我们说它是分配的(distributive),如果 a ∧ ( b ∨ c ) = ( a ∧ b ) ∨ ( a ∧ c ) , ∀ a , b , c a \wedge(b\vee c)=(a \wedge b) \vee (a \wedge c),\forall a,b,c a∧(b∨c)=(a∧b)∨(a∧c),∀a,b,c;我们说它是有界的(bounded),如果存在最小元(smallest element,记为 0 0 0)和最大元(greatest element,记为 1 1 1)。给定任意的有界分配格,那么 ( L , ∨ , ∧ , 0 , 1 ) (L,\vee,\wedge,0,1) (L,∨,∧,0,1) 是半环。给定任意的分配格,那么 ( L , ∧ , ∨ , 1 , 0 ) (L,\wedge,\vee,1,0) (L,∧,∨,1,0) 是半环。
给定字母表
Σ
\Sigma
Σ 和半环
S
S
S,映射
r
:
Σ
∗
→
S
r:\Sigma^* \to S
r:Σ∗→S 叫做形式幂级数(formal power series),我们将单词
w
w
w 的像记作
r
(
w
)
:
=
(
r
,
w
)
∈
S
r(w):=(r,w) \in S
r(w):=(r,w)∈S,把映射写作 formal sum 的形式
r
=
∑
w
∈
Σ
∗
(
r
,
w
)
w
r = \sum_{w \in \Sigma^*} (r,w)w
r=w∈Σ∗∑(r,w)w
其中的
(
r
,
w
)
(r,w)
(r,w) 叫做系数。非零系数的单词叫做支撑(support),它是集合
s
u
p
p
(
r
)
=
{
w
∈
Σ
∗
∣
(
r
,
w
)
≠
0
S
}
supp(r) = \{w \in \Sigma^*| (r,w) \neq 0_S\}
supp(r)={w∈Σ∗∣(r,w)=0S}
我们定义一些关于幂级数的集合:
如果 r ∈ S ⟨ ⟨ Σ ∗ ⟩ ⟩ r \in S\langle\langle \Sigma^* \rangle\rangle r∈S⟨⟨Σ∗⟩⟩ 的系数要么是 0 S 0_S 0S 要么是 1 S 1_S 1S,称它是语言 L = s u p p ( r ) ⊆ Σ ∗ L=supp(r) \subseteq \Sigma^* L=supp(r)⊆Σ∗ 的特征级数(characteristic series),简记为 r = c h a r ( L ) r=char(L) r=char(L) 或者 r = 1 L r=\mathbb 1_L r=1L
类似于幂级数 ∑ n a n \sum_n a_n ∑nan 的运算,形式幂级数也有类似的运算,令 + , ⋅ +,\cdot +,⋅ 是半环 S S S 的二元运算,
加法(sum)
r
1
+
r
2
r_1+r_2
r1+r2,定义为
(
r
1
+
r
2
,
w
)
=
(
r
1
,
w
)
+
(
r
2
,
w
)
(r_1+r_2,w) = (r_1,w)+(r_2,w)
(r1+r2,w)=(r1,w)+(r2,w)
柯西乘法(cauchy product)
r
1
⋅
r
2
r_1 \cdot r_2
r1⋅r2,定义为
(
r
1
⋅
r
2
,
w
)
=
∑
w
1
w
1
=
w
(
r
1
,
w
1
)
⋅
(
r
2
,
w
2
)
(r_1\cdot r_2,w) = \sum_{w_1w_1=w}(r_1,w_1) \cdot(r_2,w_2)
(r1⋅r2,w)=w1w1=w∑(r1,w1)⋅(r2,w2)
阿达玛乘法(Hadamard product)
r
1
⊙
r
2
r_1 \odot r_2
r1⊙r2,定义为
(
r
1
⊙
r
2
,
w
)
=
(
r
1
,
w
)
⋅
(
r
2
,
w
)
(r_1 \odot r_2,w)=(r_1,w) \cdot (r_2,w)
(r1⊙r2,w)=(r1,w)⋅(r2,w)
标量乘法(scalar product)
a
r
,
r
a
ar,ra
ar,ra,定义为
(
a
r
,
w
)
=
a
⋅
(
r
,
w
)
(
r
a
,
w
)
=
(
r
,
w
)
⋅
a
(ar,w) = a \cdot (r,w)\\ (ra,w) = (r,w) \cdot a
(ar,w)=a⋅(r,w)(ra,w)=(r,w)⋅a
可以验证, ( S ⟨ ⟨ Σ ∗ ⟩ ⟩ , + , ⋅ , 0 , ϵ ) (S\langle\langle \Sigma^* \rangle\rangle,+,\cdot,0,\epsilon) (S⟨⟨Σ∗⟩⟩,+,⋅,0,ϵ) 和 ( S ⟨ Σ ∗ ⟩ , + , ⋅ , 0 , ϵ ) (S\langle \Sigma^* \rangle,+,\cdot,0,\epsilon) (S⟨Σ∗⟩,+,⋅,0,ϵ) 都是半环,这里的 0 = c h a r ( ∅ ) 0=char(\empty) 0=char(∅) 和 ϵ = c h a r ( { ϵ } ) \epsilon=char(\{\epsilon\}) ϵ=char({ϵ}) 都是幂级数。并且 ( S ⟨ ⟨ Σ ∗ ⟩ ⟩ , + , ⊙ , 0 , c h a r ( Σ ∗ ) ) (S\langle\langle \Sigma^* \rangle\rangle,+,\odot,0,char(\Sigma^*)) (S⟨⟨Σ∗⟩⟩,+,⊙,0,char(Σ∗)) 作为 ( S , + , ⋅ , 0 , 1 ) (S,+,\cdot,0,1) (S,+,⋅,0,1) 的完全笛卡尔积,也是半环。
令 B \mathbb B B 是布尔代数,那么形式语言半环 ( 2 Σ ∗ , ∪ , ⋅ , ∅ , { ϵ } ) (2^{\Sigma^*},\cup,\cdot,\empty,\{\epsilon\}) (2Σ∗,∪,⋅,∅,{ϵ}) 同构于特征级数半环 ( B ⟨ ⟨ Σ ∗ ⟩ ⟩ , + , ⋅ , 0 , ϵ ) (\mathbb B\langle\langle \Sigma^* \rangle\rangle,+,\cdot,0,\epsilon) (B⟨⟨Σ∗⟩⟩,+,⋅,0,ϵ),
任意指标集
I
I
I,一族幂级数
{
r
i
∈
S
⟨
⟨
Σ
∗
⟩
⟩
∣
i
∈
I
}
\{r_i \in S\langle\langle \Sigma^* \rangle\rangle |\,\, i\in I\}
{ri∈S⟨⟨Σ∗⟩⟩∣i∈I},定义
I
w
=
{
i
∣
(
r
i
,
w
)
≠
0
}
I_w=\{i|\,\, (r_i,w) \neq 0\}
Iw={i∣(ri,w)=0},如果对于任意的
w
∈
Σ
∗
w \in \Sigma^*
w∈Σ∗ 都使得
I
w
I_w
Iw 是有限的,我们称这族幂级数是局部有限的(locally finite),此时我们可以在它上面定义幂级数的无穷加法
∑
i
∈
I
r
i
\sum_{i \in I} r_i
∑i∈Iri,
(
∑
i
∈
I
r
i
,
w
)
=
∑
i
∈
I
(
r
i
,
w
)
,
∀
w
\left( \sum_{i \in I} r_i, w \right) = \sum_{i \in I}(r_i,w),\forall w
(i∈I∑ri,w)=i∈I∑(ri,w),∀w
如果幂级数 r ∈ S ⟨ ⟨ Σ ∗ ⟩ ⟩ r \in S\langle\langle \Sigma^* \rangle\rangle r∈S⟨⟨Σ∗⟩⟩ 满足 ( r , ϵ ) k = 0 , k > 0 (r,\epsilon)^k=0,k>0 (r,ϵ)k=0,k>0,称它是关于指标 k k k 无环的(cycle-free of index k)。如果 k k k 存在,我们称它是无环的。特别地,如果 k = 1 k=1 k=1 则称它是准正则的(proper/quasiregular)。
对无环幂级数
r
r
r,定义 star 一元运算
r
∗
r^*
r∗,
r
∗
=
∑
n
≥
0
r
n
r^* = \sum_{n \ge 0} r^n
r∗=n≥0∑rn
这里的
r
n
r^n
rn 是连续
n
−
1
n-1
n−1 个柯西乘积。可以证明
(
r
n
,
w
)
=
0
,
∀
n
≥
k
⋅
(
∣
w
∣
+
1
)
(r^n,w)=0,\forall n \ge k \cdot(|w|+1)
(rn,w)=0,∀n≥k⋅(∣w∣+1),于是幂级数族
{
r
n
∣
n
≥
0
}
\{r^n| n\ge 0\}
{rn∣n≥0} 是局部有限的,从而
(
r
∗
,
w
)
=
∑
0
≤
n
<
k
⋅
(
∣
w
∣
+
1
)
(
r
n
,
w
)
(r^*,w) = \sum_{0 \le n < k\cdot(|w|+1)} (r^n,w)
(r∗,w)=0≤n<k⋅(∣w∣+1)∑(rn,w)
因此 star 是 well-defined 的。而对于其他的幂级数,star 运算不一定是良的。
令 I , I ′ I,I' I,I′ 是任意的非空指标集,任意集合 U U U,那么矩阵(matrix)是一个映射 A : I × I ′ → U A:I \times I' \to U A:I×I′→U,定义为 ( i , i ′ ) ↦ A i , i ′ (i,i') \mapsto A_{i,i'} (i,i′)↦Ai,i′,我们称 A i , i ′ A_{i,i'} Ai,i′ 为矩阵的 ( i , i ′ ) (i,i') (i,i′)-entry,全部的矩阵收集为 U I × I ′ U^{I \times I'} UI×I′。如果 I , I ′ I,I' I,I′ 都是有限的,称它是有限矩阵(finite matrix)。
令
(
S
,
+
,
⋅
,
0
,
1
)
(S,+,\cdot,0,1)
(S,+,⋅,0,1) 是半环,对于集合
S
I
×
I
′
S^{I \times I'}
SI×I′ 定义矩阵加法
A
+
B
∈
S
I
×
I
′
A+B \in S^{I \times I'}
A+B∈SI×I′,
(
A
+
B
)
i
,
i
′
=
A
i
,
i
′
+
B
i
,
i
′
(A+B)_{i,i'}=A_{i,i'}+B_{i,i'}
(A+B)i,i′=Ai,i′+Bi,i′
定义零矩阵 O O O 为 O i , i ′ = 0 O_{i,i'}=0 Oi,i′=0,那么 ( S I × I ′ , + , O ) (S^{I \times I'},+,O) (SI×I′,+,O) 是交换幺半群。
对于矩阵 A ∈ S I × I ′ A \in S^{I \times I'} A∈SI×I′,如果指标集 ∀ i ∈ I , { j ∣ A i j ≠ 0 } \forall i \in I,\{j|A_{ij} \neq 0\} ∀i∈I,{j∣Aij=0} 都是有限的,我们称它是行有限的(row finite)。类似的,可定义列有限矩阵(column finite)。
如果
A
∈
S
I
1
×
I
2
A \in S^{I_1 \times I_2}
A∈SI1×I2 是行有限的、或者
B
∈
S
I
2
×
I
3
B\in S^{I_2 \times I_3}
B∈SI2×I3 是列有限的、又或者
S
S
S 是完备的(这三种条件下,无穷加法是良的),定义矩阵乘法
A
B
∈
S
I
1
×
I
3
AB \in S^{I_1 \times I_3}
AB∈SI1×I3,
(
A
B
)
i
1
,
i
3
=
∑
i
2
∈
I
2
A
i
1
,
i
2
B
i
2
,
i
3
(AB)_{i_1,i_3} = \sum_{i_2 \in I_2} A_{i_1,i_2}B_{i_2,i_3}
(AB)i1,i3=i2∈I2∑Ai1,i2Bi2,i3
定义单位阵 E ∈ S I × I E \in S^{I \times I} E∈SI×I 为 E i i = 1 E_{ii}=1 Eii=1 且 E i j = 0 E_{ij}=0 Eij=0,那么当 I I I 是有限的、或者 S S S 是完备的(可定义矩阵乘法),则 ( S I × I , + , ⋅ , O , E ) (S^{I \times I},+,\cdot,O,E) (SI×I,+,⋅,O,E) 是半环。而对于任意的半环 S S S 和任意的指标集 I I I,全体的行有限矩阵和列有限矩阵组成的 S I × I S^{I \times I} SI×I 的子集,也是半环。
在 Classical Automata 中,边的权重是 0/1,权重的运算是布尔逻辑 AND/OR,可用于判定 words 是否接受。而 Weighted Automata 是它的扩展,额外计算了 words 的代价、概率等信息。
给定任意的半环 S S S 和有限字母表 Σ \Sigma Σ,有限自动机(Finite Automation)是四元组 A = ( Q , R , A , P ) \mathcal A =(Q,R,A,P) A=(Q,R,A,P),
如果 A A A 是无环矩阵,我们称 A \mathcal A A 是无环的(cycle-free)。一般地,可以把无环有限自动机表示为有向图,
上述的权重都是幂级数(从 Σ ∗ \Sigma^* Σ∗ 到 S S S 的映射),权重的乘积就是幂级数的柯西乘积。集合 S ⟨ Σ ∪ { ϵ } ⟩ S\langle\Sigma \cup\{\epsilon\}\rangle S⟨Σ∪{ϵ}⟩ 上的有限矩阵的运算,所包含的 entry 的加法/乘法就是有限支撑幂级数半环 ( S ⟨ ⟨ Σ ∗ ⟩ ⟩ , + , ⋅ , 0 , ϵ ) (S\langle\langle\Sigma^*\rangle\rangle,+,\cdot,0,\epsilon) (S⟨⟨Σ∗⟩⟩,+,⋅,0,ϵ) 中定义的幂级数加法/柯西乘积,而幂级数的运算依赖于最底层半环 ( S , + , ⋅ , 0 , 1 ) (S,+,\cdot,0,1) (S,+,⋅,0,1) 的二元运算。
转移矩阵
A
A
A 的矩阵元是幂级数,矩阵的平方,
(
A
2
)
q
i
,
q
j
=
∑
q
k
∈
Q
A
q
i
,
q
k
A
q
k
,
q
j
∈
(
S
⟨
Σ
2
∪
Σ
∪
{
ϵ
}
⟩
)
Q
×
Q
(A^2)_{q_i,q_j} = \sum_{q_k \in Q}A_{q_i,q_k}A_{q_k,q_j} \in (S\langle\Sigma^2\cup\Sigma\cup\{\epsilon\}\rangle)^{Q \times Q}
(A2)qi,qj=qk∈Q∑Aqi,qkAqk,qj∈(S⟨Σ2∪Σ∪{ϵ}⟩)Q×Q
它是从
q
i
q_i
qi 到
q
j
q_j
qj 的所有长度恰好为
2
2
2 的路径权重的加和。因此转移矩阵的
k
k
k 次幂,
A
k
∈
(
S
⟨
⋃
0
≤
l
≤
k
Σ
l
⟩
)
Q
×
Q
A^k \in (S\langle\bigcup_{0 \le l \le k}\Sigma^l\rangle)^{Q \times Q}
Ak∈(S⟨0≤l≤k⋃Σl⟩)Q×Q
就是从
q
i
q_i
qi 到
q
j
q_j
qj 的所有长度恰好为
k
k
k 的路径权重的加和。定义转移矩阵的 star 运算,
A
∗
=
∑
k
≥
0
A
k
∈
(
∈
S
⟨
⟨
Σ
∗
⟩
⟩
)
Q
×
Q
A^* = \sum_{k \ge 0} A^k \in (\in S\langle\langle\Sigma^*\rangle\rangle)^{Q \times Q}
A∗=k≥0∑Ak∈(∈S⟨⟨Σ∗⟩⟩)Q×Q
这个矩阵记录了从
q
i
q_i
qi 到
q
j
q_j
qj 的所有路径的权重加和。我们定义无环自动机的行为(behavior),
∥
A
∥
=
∑
q
i
,
q
j
∈
Q
R
q
i
(
A
∗
)
q
i
,
q
j
P
q
j
=
R
A
∗
P
\|\mathcal A\| = \sum_{q_i,q_j \in Q}R_{q_i}(A^*)_{q_i,q_j}P_{q_j} = RA^*P
∥A∥=qi,qj∈Q∑Rqi(A∗)qi,qjPqj=RA∗P
容易看出 ∥ A ∥ ∈ S ⟨ ⟨ Σ ∗ ⟩ ⟩ \|\mathcal A\| \in S\langle\langle\Sigma^*\rangle\rangle ∥A∥∈S⟨⟨Σ∗⟩⟩ 是个幂级数,它是 “从任意起点到任意终点,之间的所有路径权重的加和,再乘以对应的起始权重和终止权重,最后全部加和”。
换一个视角:转移矩阵是一个映射 A : Σ → S Q × Q A: \Sigma \to S^{Q \times Q} A:Σ→SQ×Q,定义为 a ↦ A ( a ) a \mapsto A(a) a↦A(a),这里 A ( a ) q i , q j ∈ S A(a)_{q_i,q_j} \in S A(a)qi,qj∈S 是转移(transition) q i ⟶ a q j q_i \overset{a}{\longrightarrow} q_j qi⟶aqj 的权重。映射 A A A 可以唯一地扩展为幺半群的同态 A # : ( Σ ∗ , ⋅ , ϵ ) → ( S Q × Q , ⋅ , E ) A^\#: (\Sigma^*,\cdot,\epsilon) \to (S^{Q \times Q},\cdot,E) A#:(Σ∗,⋅,ϵ)→(SQ×Q,⋅,E),这是标签(label)为 w = a 1 ⋯ a n w=a_1\cdots a_n w=a1⋯an 的路径的转移矩阵。易知, ( ∥ A ∥ , w ) = R ⋅ A # ( w ) ⋅ P (\|\mathcal A\|,w) = R\cdot A^\#(w)\cdot P (∥A∥,w)=R⋅A#(w)⋅P,如果令 A ( ϵ ) = E A(\epsilon)=E A(ϵ)=E 那么 ( ∥ A ∥ , ϵ ) = R P (\|\mathcal A\|,\epsilon) = RP (∥A∥,ϵ)=RP 是各个节点权重的加和。
我们说幂级数 r ∈ ∈ S ⟨ ⟨ Σ ∗ ⟩ ⟩ r \in \in S\langle\langle\Sigma^*\rangle\rangle r∈∈S⟨⟨Σ∗⟩⟩ 是可识别的(recognizable),如果存在加权有限自动机 A \mathcal A A 使得 r = ∥ A ∥ r=\|\mathcal A\| r=∥A∥,定义 R e c ( S , Σ ∗ ) Rec(S,\Sigma^*) Rec(S,Σ∗) 是所有的可识别幂级数的收集。我们说两个无环自动机 A , A ′ \mathcal A,\mathcal A' A,A′ 是等价的(equivalent),如果它们识别的幂级数相同 ∥ A ∥ = ∥ A ′ ∥ \|\mathcal A\| = \|\mathcal A'\| ∥A∥=∥A′∥。由于幂级数 r r r 的支撑 L = s u p p ( r ) ⊆ 2 Σ ∗ L=supp(r) \subseteq 2^{\Sigma^*} L=supp(r)⊆2Σ∗ 是某个语言,我们说识别 r r r 的自动机可以识别这个语言。
我们说有限自动机 A = ( Q , R , A , P ) \mathcal A=(Q,R,A,P) A=(Q,R,A,P) 是标准化的(normalized),如果 n = ∣ Q ∣ ≥ 2 n=|Q| \ge 2 n=∣Q∣≥2, q 1 ≠ q n ∈ Q q_1 \neq q_n \in Q q1=qn∈Q,满足以下约束
任意的无环有限自动机都等价于某个标准化的无环有限自动机:给定无环自动机
A
=
(
Q
,
R
,
A
,
P
)
\mathcal A=(Q,R,A,P)
A=(Q,R,A,P),那么构造一个新的自动机,
A
′
=
(
{
q
0
}
∪
Q
∪
{
q
n
+
1
}
,
(
ϵ
,
0
⃗
,
0
)
,
(
0
R
0
0
A
P
0
0
0
)
,
(
0
0
⃗
ϵ
)
)
\mathcal A' = \left( \{q_0\} \cup Q \cup \{q_{n+1}\},\,\, (ϵ,→0,0)
其中 q 0 , q n + 1 q_0,q_{n+1} q0,qn+1 是新添的状态。容易验证,新自动机是一个标准化的无环有限自动机,并且两者识别相同的语言。
假如半环使用的是布尔代数 ( B , + , ⋅ , 0 , 1 ) (\mathbb B,+,\cdot,0,1) (B,+,⋅,0,1),再令 R , A , P R,A,P R,A,P 是集合 B ⟨ Σ ⟩ \mathbb B\langle\Sigma\rangle B⟨Σ⟩ 上的矩阵,那么加权自动机 A = ( Q , R , A , P ) \mathcal A =(Q,R,A,P) A=(Q,R,A,P) 就退化为了经典的有限自动机,
布尔代数 B \mathbb B B 的二元运算是 OR/AND,因此:矩阵 A k A^k Ak 记录了长度为 k k k 的某条路径是否通畅,而 A ∗ A^* A∗ 记录了任意两个状态之间是否存在通路。