正规式与正规集
正规式与正规集的关系:
- 正规集可以用正规式表示
- 正规式是表示正规集一种方法
- 一个字集合是正规集当且仅当它能用正规式表示
什么是正规式与正规集:
- 对给定的字母表Σ
- ε和Ø都是Σ上的正规式,它们所表示的正规集为{ε}和Ø;
- 任何a∈Σ , a是Σ上的正规式,它所表示的正规集为{a};
- 假定e1和e2都是Σ上的正规式,它们所表示的正规集为L(e1)和L(e2) ,则
- (e1|e2)为正规式 ,它所表示的正规集为L(e1)UL(e2)
- (e1.e2)为正规式 ,它所表示的正规集为L(e1)L(e2)
- (e1)* 为正规式,它所表示的正规集为(L(e1))*
仅由有限次使用上述三步骤而定义的表达式才是Σ上的正规式,仅由这些正规式表示的字集才是Σ上的正规集。
正规式的等价性
若两个正规式所表示的正规集相同,则称这两个正规式等价。如:
b(ab)* =(ba)*b
b(ab)* =L(b(ab)*)== L(b)L((ab)*)=L(b) (L(a)L(b))*={b} {ab}*= {b} {ε, ab, abab, ababab, …}= {b, bab, babab, bababab, …}
(ba)*b=L( (ba)b)= (L(ba))*L(b)== (L(b)L(a))* L(b)= {ba} {b}= {ε, ba, baba, bababa, …} {b}= {b, bab, babab, bababab, …}
正规式的性质
对正规式,下列等价成立
- e1|e2= e2|e1 交换律
- e1 |(e2|e3) = (e1|e2)|e3 结合律
- e1(e2e3) = (e1e2)e3 结合律
- e1(e2|e3) = e1e2le1e3 分配律
- (e2|e3)e1= e2e1|e3e1 分配律
- eε=εe=e
- e1e2 <> e2e1
确定有限自动机(DFA)
确定有限自动机是对状态图进行形式化定义
确定有限自动机(Deterministic Finite Automata DFA) M是一个五元式M=(S, Σ,f, S0,F),其中:
- S:有穷状态集,就是状态图的各个状态结点
- Σ :输入字母表(有穷),就是所有出现在状态转移弧上的字母
- f: 状态转换函数,为SxZ- >S的单值部分映射, f(s,a)=S’表示:当现行状态为S ,输入字符为a时,将状态转换到下一-状态s’ , s’称为S的一个后继状态
- S0∈S是唯一 的一个初态
- F⊆S :终态集(可空)
例子:
DFA M=({0,1,2,3},{a,b},f,0,{3}),其中f定义如下:
f(0 , a)=1 f(0 , b)=2
f(1 , a)=3 f(1 , b)=2
f(2 , a)=1 f(2 , b)=3
f(3 , a)=3 f(3 , b)=3
将f转化为状态转化矩阵:
a | b | |
---|---|---|
0 | 1 | 2 |
1 | 3 | 2 |
2 | 1 | 3 |
3 | 3 | 3 |
根据状态转化矩阵画出状态图:
- 对于Σ*中的任何字a ,若存在一条从初态到某一终态的道路,且这条路上所有弧上的标记符连接成的字等于a ,则称a为DFA M所识别(接收)
- DFA M所识别的字的全体记为L(M)
非确定有限自动机(NFA)
非确定有限自动机也是对状态图进行形式化定义
非确定有限自动机((Nondeterministic Finite Automata , NFA)) M是一个五元式M=(S, Σ,f, S0,F),其中:
- S:有穷状态集,就是状态图的各个状态结点
- Σ :输入字母表(有穷),就是所有出现在状态转移弧上的字母
- f: 状态转换函数,为SxZ- >2S的部分映射, f(s,a)=S’表示:当现行状态为S ,输入字符为a时,将状态转换到下一状态集合s’ , s’称为S的一个后继状态集合
- S0⊆S是非空的初态集
- F⊆S :终态集(可空)
非确定有限自动机(NFA)与确定有限自动机(DFA)有三点不同:
- NFA可以有多个初态
- 弧上的标记可以是Σ*中的一个字(甚至可以是一一个正规式) ,而不一定是单个字符
- 同一个字可能出现在同状态射出的多条弧上
我们可以说DFA是NFA的特例。