• 加权自动机:在 Semirings 上建模


    参考文献

    1. Handbook of weighted automata[M]. Springer Science & Business Media, 2009.
    2. Heinz J. Syntax and Semantics of MSO and FO Logics[J]. 2019.
    3. FSM, FAM, DFA, NFA 的区别与联系-CSDN博客
    4. 形式语言与自动机理论 - 知乎 (zhihu.com)
    5. 基本等价式、基本蕴含式-CSDN博客
    6. 柯西乘积(级数乘法) - 知乎 (zhihu.com)

    幺半群(Monoids)

    幺半群:结构是 ( M , ⋅ , 1 ) (M,\cdot,1) (M,,1),非空集合 M M M,二元运算 ⋅ \cdot ,幺元 1 1 1

    1. 二元运算是封闭的 ∀ m 1 , m 2 ∈ M , m 1 ⋅ m 2 ∈ M \forall m_1,m_2 \in M,m_1\cdot m_2 \in M m1,m2M,m1m2M
    2. 二元运算是结合的 ( m 1 ⋅ m 2 ) ⋅ m 3 = m 1 ⋅ ( m 2 ⋅ m 3 ) (m_1 \cdot m_2) \cdot m_3 = m_1 \cdot (m_2 \cdot m_3) (m1m2)m3=m1(m2m3)
    3. 存在幺元(neutral element), ∀ m ∈ M , 1 ⋅ m = m ⋅ 1 = m \forall m \in M, 1 \cdot m=m \cdot 1 = m mM,1m=m1=m

    如果 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 m1m2=m2m1,m1,m2M,我们说它是交换的。一般地,交换幺半群记为 ( 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=nNVn

    其中 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={wvwVi,vV},它是有限长字符串的集合。常用在正则表达式中。

    字母表(alphabet) Σ \Sigma Σ 是非空集合, x i ∈ Σ x_i \in \Sigma xiΣ 叫做字母(letters), w = x 1 ⋯ x n ∈ Σ ∗ w=x_1\cdots x_n \in \Sigma^* w=x1xnΣ 叫做单词(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^* w1w2=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#(x1xn)=h(x1)h(xn)

    h#(ϵ)h#(x1xn)=1=h(x1)h(xn)
    h#(ϵ)h#(x1xn)=1=h(x1)h(xn)

    对于一个交换幺半群 ( M , + , 0 ) (M,+,0) (M,+,0)

    • 幂等的(idempotent):如果 ∀ m ∈ M , m + m = m \forall m \in M, m+m=m mM,m+m=m
    • 有序的(ordered):如果装备了偏序关系 ≤ \le ,且 + + + 保持偏序关系
    • 正有序的(positively ordered):携带 ≤ \le 的有序幺半群,满足 0 ≤ m , ∀ m ∈ M 0 \le m,\forall m \in M 0m,mM
    • 自然有序的(naturally ordered):如果定义由 + + + 诱导的关系 $ m_1 \sqsubseteq m_2 \iff m_1+m=m_2,\exists m \in M$,它是个偏序关系

    完备幺半群(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:MIM。我们说幺半群是完备的,如果
    ∑ 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=0i{j}mi=mji{j,k}mi=mj+mk,jkjJiIjmi=Imj,I=jJIj,IjIj=\empty,jj

    i\emptymii{j}mii{j,k}mijJiIjmi=0=mj=mj+mk,jk=Imj,I=jJIj,IjIj=\empty,jj
    imii{j}mii{j,k}mijJiIjmi=0=mj=mj+mk,j=k=Imj,I=jJIj,IjIj=,j=j

    也就是说把(无限大)指标集 I I I 任意打乱顺序 “加括号”,不改变加和的计算结果。明显的,完备性导致交换性;反之,交换幺半群不一定是完备的。

    半环(Semirings)

    半环:结构是 ( S , + , ⋅ , 0 , 1 ) (S,+,\cdot,0,1) (S,+,,0,1),非空集合 S S S,二元运算 + , ⋅ +,\cdot +,,零元 0 0 0,幺元 1 1 1

    1. ( S , + , 0 ) (S,+,0) (S,+,0)交换幺半群
    2. ( S , ⋅ , 1 ) (S,\cdot,1) (S,,1)幺半群
    3. 满足左右分配律 ( a + b ) ⋅ c = a ⋅ c + b ⋅ c (a+b) \cdot c=a \cdot c+b \cdot c (a+b)c=ac+bc 以及 c ⋅ ( a + b ) = c ⋅ a + c ⋅ b c \cdot (a+b)=c \cdot a+c \cdot b c(a+b)=ca+cb
    4. 存在零元 0 ⋅ a = a ⋅ 0 = 0 , ∀ a ∈ a 0 \cdot a=a \cdot 0=0,\forall a \in a 0a=a0=0,aa

    如果 ( 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) 是完备的,我们说半环是完备的。半环,可以视为不存在减法的含幺环。

    半环的例子:

    • 布尔半环(Boolean semiring) B = { 0 , 1 } \mathbb B=\{0,1\} B={0,1},携带 OR、AND 运算, 1 + 1 = 1 , 1 ⋅ 1 = 1 1+1=1,1 \cdot 1=1 1+1=1,11=1
    • 所有的含幺环( Z \mathbb Z Z)、所有的域( Q , R , C \mathbb Q,\mathbb R,\mathbb C Q,R,C),携带的运算是自然的
    • 定义 N ∞ : = N ∪ { ∞ } \mathbb N^\infty:=\mathbb N \cup\{\infty\} N:=N{} 以及 N ‾ : = N ∪ { − ∞ , ∞ } \overline{\mathbb N}:=\mathbb N \cup\{-\infty,\infty\} N:=N{,},并规定 0 ⋅ ∞ = ∞ ⋅ 0 = 0 0 \cdot \infty = \infty \cdot 0=0 0=0=0 以及 ( − ∞ ) + ∞ = − ∞ (-\infty)+\infty=-\infty ()+=
      • ( N ∞ , + , ⋅ , 0 , 1 ) (\mathbb N^\infty,+,\cdot,0,1) (N,+,,0,1)
      • ( N ∞ , min ⁡ , + , ∞ , 0 ) (\mathbb N^\infty,\min,+,\infty,0) (N,min,+,,0),称为 tropical/min-plus semirings
      • ( N ‾ , max ⁡ , + , − ∞ , 0 ) (\overline{\mathbb N},\max,+,-\infty,0) (N,max,+,,0),称为 arctic/max-plus semirings
    • 定义 R + : = { a ∈ R ∣ a ≥ 0 } \mathbb R_+:=\{a \in \mathbb R|a \ge 0\} R+:={aRa0} R + ∞ : = R + ∪ { ∞ } \mathbb R_+^\infty:=\mathbb R_+ \cup\{\infty\} R+:=R+{} 以及 R ‾ + : = R + ∪ { − ∞ , ∞ } \overline{\mathbb R}_+:=\mathbb R_+ \cup\{-\infty,\infty\} R+:=R+{,}
      • ( R + , + , ⋅ , 0 , 1 ) (\mathbb R_+,+,\cdot,0,1) (R+,+,,0,1)
      • ( R + ∞ , + , ⋅ , 0 , 1 ) (\mathbb R_+^\infty,+,\cdot,0,1) (R+,+,,0,1)
      • ( R + ∞ , min ⁡ , + , ∞ , 0 ) (\mathbb R_+^\infty,\min,+,\infty,0) (R+,min,+,,0),称为 tropical/min-plus semirings
      • ( R ‾ + , max ⁡ , + , − ∞ , 0 ) (\overline{\mathbb R}_+,\max,+,-\infty,0) (R+,max,+,,0),称为 arctic/max-plus semirings
    • 维特比半环(Viterbi semiring) ( [ 0 , 1 ] , max ⁡ , ⋅ , 0 , 1 ) ([0,1],\max,\cdot,0,1) ([0,1],max,,0,1)

    Σ \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\} L1L2={w1w2w1L1,w2L2}

    集合 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 RU×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\} R1R2={(u1,u2)uU,(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)uU},那么 ( 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\} ab:=sup{a,b}最大下界(greatest lower bound) a ∧ b : = inf ⁡ { a , b } a \wedge b:=\inf\{a,b\} ab:=inf{a,b},假如 ∀ a , b ∈ L \forall a,b \in L a,bL 使得 a ∨ b ∈ L , a ∧ b ∈ L a \vee b \in L, a\wedge b \in L abL,abL 总存在,那么称为(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(bc)=(ab)(ac),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}

    我们定义一些关于幂级数的集合:

    1. 所有幂级数的收集,记为 S ⟨ ⟨ Σ ∗ ⟩ ⟩ S\langle\langle \Sigma^* \rangle\rangle S⟨⟨Σ⟩⟩
    2. 有限支撑的幂级数被称为多项式,它们的收集记为 S ⟨ Σ ∗ ⟩ ⊆ S ⟨ ⟨ Σ ∗ ⟩ ⟩ S\langle \Sigma^* \rangle \subseteq S\langle\langle \Sigma^* \rangle\rangle SΣS⟨⟨Σ⟩⟩
      • 多项式 r = 0 r=0 r=0,满足 ( 0 , w ) = 0 , ∀ w (0,w)=0,\forall w (0,w)=0,w,于是有 s u p p ( 0 ) = ∅ supp(0)=\empty supp(0)=
      • 多项式 r = a w , a ≠ 0 S r=aw,a \neq 0_S r=aw,a=0S,满足 ( a w , w ) = a (aw,w)=a (aw,w)=a 并且 ( a w , w ′ ) = 0 , ∀ w ′ ≠ w (aw,w')=0,\forall w' \neq w (aw,w)=0,w=w,于是有 s u p p ( a w ) = { w } supp(aw)=\{w\} supp(aw)={w}
    3. 那些 s u p p ( r ) ⊆ Σ ∪ { ϵ } supp(r) \subseteq \Sigma \cup \{\epsilon\} supp(r)Σ{ϵ} 的多项式收集,记为 S ⟨ Σ ∪ { ϵ } ⟩ ⊆ S ⟨ Σ ∗ ⟩ S\langle \Sigma \cup \{\epsilon\} \rangle \subseteq S\langle \Sigma^* \rangle SΣ{ϵ}⟩SΣ
    4. 类似的还有 S ⟨ Σ ⟩ , S ⟨ { ϵ } ⟩ S\langle\Sigma\rangle,S\langle\{\epsilon\}\rangle SΣ,S⟨{ϵ}⟩ 等等

    如果 r ∈ S ⟨ ⟨ Σ ∗ ⟩ ⟩ r \in S\langle\langle \Sigma^* \rangle\rangle rS⟨⟨Σ⟩⟩ 的系数要么是 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

    • 语言 ∅ \empty 的特征级数是 c h a r ( ∅ ) = 0 char(\empty) = 0 char()=0
    • 语言 { w } , ∀ w ∈ Σ ∗ \{w\},\forall w \in \Sigma^* {w},wΣ 的特征级数是 c h a r ( { w } ) = w char(\{w\}) = w char({w})=w

    类似于幂级数 ∑ n a n \sum_n a_n nan 的运算,形式幂级数也有类似的运算,令 + , ⋅ +,\cdot +, 是半环 S S S 的二元运算,

    1. 加法(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)

    2. 柯西乘法(cauchy product) r 1 ⋅ r 2 r_1 \cdot r_2 r1r2,定义为
      ( 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) (r1r2,w)=w1w1=w(r1,w1)(r2,w2)

    3. 阿达玛乘法(Hadamard product) r 1 ⊙ r 2 r_1 \odot r_2 r1r2,定义为
      ( r 1 ⊙ r 2 , w ) = ( r 1 , w ) ⋅ ( r 2 , w ) (r_1 \odot r_2,w)=(r_1,w) \cdot (r_2,w) (r1r2,w)=(r1,w)(r2,w)

    4. 标量乘法(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,ϵ)

    • 同构映射 ϕ : L ↦ c h a r ( L ) \phi: L \mapsto char(L) ϕ:Lchar(L),逆映射 ϕ − 1 : r ↦ s u p p ( r ) \phi^{-1}:r \mapsto supp(r) ϕ1:rsupp(r)
    • r 1 + r 2    ⟺    L 1 ∪ L 2 r_1+r_2 \iff L_1 \cup L_2 r1+r2L1L2
    • r 1 ⋅ r 2    ⟺    L 1 ⋅ L 2 r_1 \cdot r_2 \iff L_1 \cdot L_2 r1r2L1L2
    • r 1 ⊙ r 2    ⟺    L 1 ∩ L 2 r_1 \odot r_2 \iff L_1 \cap L_2 r1r2L1L2

    任意指标集 I I I,一族幂级数 { r i ∈ S ⟨ ⟨ Σ ∗ ⟩ ⟩ ∣    i ∈ I } \{r_i \in S\langle\langle \Sigma^* \rangle\rangle |\,\, i\in I\} {riS⟨⟨Σ⟩⟩iI},定义 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 iIri
    ( ∑ 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 (iIri,w)=iI(ri,w),w

    如果幂级数 r ∈ S ⟨ ⟨ Σ ∗ ⟩ ⟩ r \in S\langle\langle \Sigma^* \rangle\rangle rS⟨⟨Σ⟩⟩ 满足 ( 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=n0rn

    这里的 r n r^n rn 是连续 n − 1 n-1 n1 个柯西乘积。可以证明 ( r n , w ) = 0 , ∀ n ≥ k ⋅ ( ∣ w ∣ + 1 ) (r^n,w)=0,\forall n \ge k \cdot(|w|+1) (rn,w)=0,nk(w+1),于是幂级数族 { r n ∣ n ≥ 0 } \{r^n| n\ge 0\} {rnn0} 是局部有限的,从而
    ( 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)=0n<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×IU,定义为 ( 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+BSI×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'} ASI×I,如果指标集 ∀ i ∈ I , { j ∣ A i j ≠ 0 } \forall i \in I,\{j|A_{ij} \neq 0\} iI,{jAij=0} 都是有限的,我们称它是行有限的(row finite)。类似的,可定义列有限矩阵(column finite)。

    如果 A ∈ S I 1 × I 2 A \in S^{I_1 \times I_2} ASI1×I2 是行有限的、或者 B ∈ S I 2 × I 3 B\in S^{I_2 \times I_3} BSI2×I3 是列有限的、又或者 S S S 是完备的(这三种条件下,无穷加法是良的),定义矩阵乘法 A B ∈ S I 1 × I 3 AB \in S^{I_1 \times I_3} ABSI1×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=i2I2Ai1,i2Bi2,i3

    定义单位阵 E ∈ S I × I E \in S^{I \times I} ESI×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),

    1. 非空的有限状态集 Q = { q 1 , q 2 , ⋯   , q n } Q=\{q_1,q_2,\cdots,q_n\} Q={q1,q2,,qn}
    2. 转移矩阵(transition matrix) A ∈ ( S ⟨ Σ ∪ { ϵ } ⟩ ) Q × Q A \in (S\langle\Sigma \cup\{\epsilon\}\rangle)^{Q \times Q} A(SΣ{ϵ}⟩)Q×Q
    3. 初始状态行矢(initial state) R ∈ ( S ⟨ Σ ∪ { ϵ } ⟩ ) 1 × Q R \in (S\langle\Sigma \cup\{\epsilon\}\rangle)^{1 \times Q} R(SΣ{ϵ}⟩)1×Q
    4. 终止状态列矢(final state) P ∈ ( S ⟨ Σ ∪ { ϵ } ⟩ ) Q × Q P \in (S\langle\Sigma \cup\{\epsilon\}\rangle)^{Q \times Q} P(SΣ{ϵ}⟩)Q×Q

    如果 A A A 是无环矩阵,我们称 A \mathcal A A无环的(cycle-free)。一般地,可以把无环有限自动机表示为有向图

    • 包含 n n n节点,标记为 q 1 , ⋯   , q n q_1,\cdots,q_n q1,,qn
    • R R R 赋予了每个节点初始权重(initial weight),由 P P P 赋予了每个节点终止权重(final weight),而 R q P q R_{q}P_{q} RqPq 称为节点权重
    • 初始(终止)重量不是(零映射 ( 0 , w ) = 0 , ∀ w ∈ Σ ∗ (0,w)=0,\forall w \in \Sigma^* (0,w)=0,wΣ)的节点,是起点/终点
    • 如果 A q i , q j ≠ 0 S A_{q_i,q_j} \neq 0_S Aqi,qj=0S,那么存在从节点 q i q_i qi 到节点 q j q_j qj,记为 q i ⟶ A q i , q j q j q_i \overset{A_{q_i,q_j}}{\longrightarrow} q_j qiAqi,qjqj
    • 有限支撑幂级数 A q i , q j A_{q_i,q_j} Aqi,qj边的重量,记为 w t ( q i , A q i , q j , q j ) wt(q_i,A_{q_i,q_j},q_j) wt(qi,Aqi,qj,qj)
    • q i q_i qi q j q_j qj 之间的 k k k 条边首尾相连,叫做长度为 k k k路径,定义路径的重量是所有边的重量乘积

    上述的权重都是幂级数(从 Σ ∗ \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=qkQAqi,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(S0lkΣ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=k0Ak(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,qjQRqi(A)qi,qjPqj=RAP

    容易看出 ∥ A ∥ ∈ S ⟨ ⟨ Σ ∗ ⟩ ⟩ \|\mathcal A\| \in S\langle\langle\Sigma^*\rangle\rangle AS⟨⟨Σ⟩⟩ 是个幂级数,它是 “从任意起点到任意终点,之间的所有路径权重的加和,再乘以对应的起始权重和终止权重,最后全部加和”。

    换一个视角:转移矩阵是一个映射 A : Σ → S Q × Q A: \Sigma \to S^{Q \times Q} A:ΣSQ×Q,定义为 a ↦ A ( a ) a \mapsto A(a) aA(a),这里 A ( a ) q i , q j ∈ S A(a)_{q_i,q_j} \in S A(a)qi,qjS转移(transition) q i ⟶ a q j q_i \overset{a}{\longrightarrow} q_j qiaqj 的权重。映射 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=a1an 的路径的转移矩阵。易知, ( ∥ A ∥ , w ) = R ⋅ A # ( w ) ⋅ P (\|\mathcal A\|,w) = R\cdot A^\#(w)\cdot P (A,w)=RA#(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=Q2 q 1 ≠ q n ∈ Q q_1 \neq q_n \in Q q1=qnQ,满足以下约束

    1. 恰好一个起点: R q 1 = ϵ R_{q_1}=\epsilon Rq1=ϵ,并且 R q = 0 , ∀ q ≠ q 1 R_q=0,\forall q \neq q_1 Rq=0,q=q1
    2. 恰好一个终点: P q n = ϵ P_{q_n}=\epsilon Pqn=ϵ,并且 P q = 0 , ∀ q ≠ q n P_q=0,\forall q \neq q_n Pq=0,q=qn
    3. 起点的入度为零: A q , q 1 = 0 , ∀ q ∈ Q A_{q,q_1}=0,\forall q \in Q Aq,q1=0,qQ,也没有自己到自己的圈
    4. 终点的出度为零: A q n , q = 0 , ∀ q ∈ Q A_{q_n,q}=0,\forall q \in Q Aqn,q=0,qQ,也没有自己到自己的圈

    任意的无环有限自动机都等价于某个标准化的无环有限自动机:给定无环自动机 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)

    (ϵ,0⃗ ,0)
    ,\,\, (0R00AP000)
    000RA00P0
    ,\,\, (00ϵ)
    00⃗ ϵ
    \right) A= {q0}Q{qn+1},(ϵ,0 ,0), 000RA00P0 , 00 ϵ

    其中 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) 就退化为了经典的有限自动机

    • 转移矩阵 A : Σ → B Q × Q A: \Sigma \to \mathbb B^{Q \times Q} A:ΣBQ×Q,它将字母 a a a 映射到矩阵 A ( a ) ∈ S Q × Q A(a) \in S^{Q \times Q} A(a)SQ×Q
    • 矩阵元 A ( a ) p , q ∈ B A(a)_{p,q} \in \mathbb B A(a)p,qB 是状态转移 p → a q p \overset{a}{\to} q paq 的权重 w t ( p , a , q ) ∈ { 0 , 1 } wt(p,a,q) \in \{0,1\} wt(p,a,q){0,1}
    • 标签 w = a 1 ⋯ a n ∈ { 0 , 1 } n w=a_1\cdots a_n \in \{0,1\}^n w=a1an{0,1}n 的路径 P : q 0 → a 1 q 1 → a 2 ⋯ → a n q n P: q_0 \overset{a_1}{\to} q_1 \overset{a_2}{\to} \cdots \overset{a_n}{\to} q_n P:q0a1q1a2anqn ,重量为 w t ( q 0 , w , q n ) = R q 0 ⋅ A ( a 1 ) q 0 , q 1 ⋯ A ( a n ) q n − 1 , q n ⋅ P q n wt(q_0,w,q_n)=R_{q_0}\cdot A(a_1)_{q_0,q_1} \cdots A(a_n)_{q_{n-1},q_{n}} \cdot P_{q_n} wt(q0,w,qn)=Rq0A(a1)q0,q1A(an)qn1,qnPqn

    布尔代数 B \mathbb B B 的二元运算是 OR/AND,因此:矩阵 A k A^k Ak 记录了长度为 k k k 的某条路径是否通畅,而 A ∗ A^* A 记录了任意两个状态之间是否存在通路

    在这里插入图片描述

  • 相关阅读:
    Postgresql使用Plpgsql编译SELECT INTO细节
    OpenCV--图像的分割与融合方法
    docker从零部署jenkins保姆级教程(下)
    conda 的一些指令(jupyter notebook 在虚拟环境pytorch)
    【正点原子FPGA连载】 第十七章 HDMI彩条显示实验摘自【正点原子】DFZU2EG/4EV MPSoC 之FPGA开发指南V1.0
    《C陷阱与缺陷》之“语义”陷阱——数组越界导致的程序死循环问题
    UVa1311/LA2666 Servers
    Windows下同一电脑配置多个Git公钥访问不同的账号
    yolov8模型训练、目标跟踪
    Create demo project with EntityFramework Core
  • 原文地址:https://blog.csdn.net/weixin_44885334/article/details/133758523