第一部分-第二章 正则语言(上)
2.1.1 有穷自动机的形式定义:
有穷自动机 M M M是一个5元组 ( Q , Σ , δ , q 0 , F ) (Q,\Sigma,\delta,q_0,F) (Q,Σ,δ,q0,F),其中
1) Q Q Q是一个有穷集合,叫做状态集。
2) Σ \Sigma Σ是一个有穷集合,叫做字母集。
3) δ \delta δ: Q × Σ → Q Q\times\Sigma \rightarrow Q Q×Σ→Q是转移函数(使用转移函数定义动作规则)。
4) q 0 ∈ Q q_0 \in Q q0∈Q是起始状态。
5) F ∈ Q F\in Q F∈Q是接受状态集。(注意:接受状态集是允许为空的。)
- 转移函数,可以用一个表格来表示。
A A A是机器 M M M接受的全部字符串集,称 A A A是机器 M M M的语言,记作 L ( M ) = A L(M)=A L(M)=A。为了混淆,通常倾向于说识别语言。
一个机器可能接受若干字符串,但是永远只能识别一个语言。
机器是可以识别空语言 ϕ \phi ϕ的。
如果起始状态就是接受状态,那么就代表机器接受空串 ε \varepsilon ε。
当状态图太大,或者其他情况导致不方便使用状态图时,选择使用形式描述来规定机器。(书P24)
定义2.7 如果一个语言被一台有穷自动机识别,则称它是正则语言。
2.1.4 设计有穷自动机
- 读者即自动机
- 因为是有穷,所以不需要记住所有信息,而是记住关键信息就行。
2.1.5 正则运算
- 对象是语言,工具是3种运算,称为正则运算。
- 并 A ∪ B A\cup B A∪B、连接 A ∘ B A\circ B A∘B、星号 A ∗ A^* A∗。
- 并与连接是作用于两个语言,而星号运算是作用于一个语言。空串也属于 A ∗ A^* A∗。
封闭
一般地说,如果把某种运算应用于一个对象集合的成员得到的对象仍在这个集合中,则称这个对象集合在该运算下封闭。
定理2.12 正则语言类在并运算下封闭。
证明 设 M 1 M_1 M1识别 A 1 A_1 A1,设 M 2 M_2