1.1|有穷自动机
有穷自动机的状态图
- 起始状态用一个指向它的无出发点的箭头表示
- 接受状态带有双圈
- 从一个状态指向另一个状态的箭头称为转移
有穷自动机的形式化定义
-
有穷自动机是一个 5 5 5元组 ( Q , Σ , δ , q 0 , F ) (Q , \Sigma , \delta , q_{0} , F) (Q,Σ,δ,q0,F),其中
- Q Q Q是一个有穷集合,称为状态集
- Σ \Sigma Σ是一个有穷集合,称为字母表
- δ : Q × Σ → Q \delta : Q \times \Sigma \rightarrow Q δ:Q×Σ→Q是转移函数
- q 0 ∈ Q q_{0} \in Q q0∈Q是起始状态
- F ⊆ Q F \subseteq Q F⊆Q是接受状态集
-
若 A A A是机器 M M M接受的全部字符串集,则称 A A A是机器 M M M的语言,记作 L ( M ) = A L(M) = A L(M)=A,又称 M M M识别 A A A
-
如果机器不接受任何字符串,它仍然识别一个语言,即空语言 ∅ \emptyset ∅
有穷自动机计算的形式化定义
-
设 M = ( Q , Σ , δ , q 0 , F ) M = (Q , \Sigma , \delta , q_{0} , F) M=(Q,Σ,δ,q0,F)是一台有穷自动机, w = w 1 w 2 ⋯ w n w = w_{1} w_{2} \cdots w_{n} w=w1w2⋯wn是一个字符串并且其中任一 w i w_{i} wi是字母表 Σ \Sigma Σ的成员,如果存在 Q Q Q中的状态序列 r 0 r_{0} r0, r 1 r_{1} r1, ⋯ \cdots ⋯, r n r_{n} rn满足下述条件
-
r 0 = q 0 r_{0} = q_{0} r0=q0
-
δ ( r i , ω i + 1 ) = r i + 1 , i = 0 , ⋯ , n − 1 \delta(r_{i} , \omega_{i + 1}) = r_{i + 1} , i = 0 , \cdots , n - 1 δ(ri,ωi+1)=ri+1,i=0,⋯,n−1
-
r n ∈ F r_{n} \in F rn∈F
-
-
则 M M M接受 w w w
正则语言
- 如果一个语言被一台有穷自动机识别,则称它是正则语言
正则运算
并
A ∪ B = { x ∣ x ∈ A 或 x ∈ B } A \cup B = \set{x \mid x \in A 或 x \in B} A∪B={ x∣x∈A或x∈B}
连接(并置)
A ∘ B = { x y ∣ x ∈ A 且 y ∈ B } A \circ B = \set{xy \mid x \in A 且 y \in B} A∘B={ xy∣x∈A且y∈B}
星号
A ∗ = { x 1 x 2 ⋯ x k ∣ k ≥ 0 且每一个 x i ∈ A } A^{*} = \set{x_{1} x_{2} \cdots x_{k} \mid k \geq 0 且每一个 x_{i} \in A} A∗={ x1x2⋯xk∣k≥0且每一个xi∈A}
定理 1 1 1
- 正则语言类在并运算下封闭,换言之,如果 A 1 A_{1} A1和 A 2 A_{2} A2是正则语言,则 A 1 ∪ A 2 A_{1} \cup A_{2} A1∪A2也是正则语言
证明
-
设 M 1 M_{1} M1识别 A 1 A_{1} A1, M 2 M_{2} M2识别 A 2 A_{2} A2,其中 M 1 = ( Q 1 , Σ , δ 1 , q 1 , F 1 ) M_{1} = (Q_{1} , \Sigma , \delta_{1} , q_{1} , F_{1}) M1=(Q1,Σ,δ1,q1,F1), M 2 = ( Q 2 , Σ , δ 2 , q 2 , F 2 ) M_{2} = (Q_{2} , \Sigma , \delta_{2} , q_{2} , F_{2}) M2=(Q2,Σ,δ2,q2,F2),构造识别 A 1 ∪ A 2 A_{1} \cup A_{2} A1∪A2的 M M M,这里 M = ( Q , Σ , δ , q 0 , F ) M = (Q , \Sigma , \delta , q_{0} , F) M=(Q,Σ,δ,q0,F)
-
Q = { ( r 1 , r 2 ) ∣ r 1 ∈ Q 1 且 r 2 ∈ Q 2 } Q = \set{(r_{1} , r_{2}) \mid r_{1} \in Q_{1} 且 r_{2} \in Q_{2}} Q={ (r1,r2)∣r1∈Q1且r2∈Q2}
-
转移函数 δ \delta δ定义如下:对每一对 ( r 1 , r 2 ) ∈ Q (r_{1} , r_{2}) \in Q (r1,r2)∈Q和每一个 a ∈ Σ a \in \Sigma a∈Σ,令 δ ( ( r 1 , r 2 ) , a ) = ( δ 1 ( r 1 , a ) , δ 2 ( r 2 , a ) ) \delta((r_{1} , r_{2}) , a) = (\delta_{1}(r_{1} , a) , \delta_{2}(r_{2} , a)) δ((r1,r2),a)=(δ1(r1,a),δ2(r2,a))
-
q 0 q_{0} q0是有序对 ( q 1 , q 2 ) (q_{1} , q_{2}) (q1,q2)