正则语言和表达式
正则语言
DFSM和NFSM是等效的,我们将在方便的地方使用“FSM"。
FSM可以识别正则语言。
能用正则语言表述 《=》 对应的有限状态机
正则表达式:定义正则语言
每个正则表达式都等效于FSM:
- 对于任何正则表达式,都存在一个识别正则表达式定义的语言的FSM。
- 反之亦然:对于任何FSM,都存在定义FSM所识别语言的正则表达式。
由于FSM所识别的语言是正则的,因此,如果某个正则表达式对其进行了描述,那么语言就是正则的。
能够被FSM识别的语言一定是正则的。
语言是正则的《=》能用正则表达式描述它
一些相关的基本概念
正则表达式:表示字符串的模式。
正则表达式r完全由它匹配的字符串集定义。
集合称为r的语言,写为L(r)
集合元素称为符号
这组法律符号称为字母表,并写成希腊符号∑
基本概念和术语
字母表:一组非空有限元(符号)(例如{a, b, c, +, .})
字符串:任何有限的符号序列 (集合中的symbols)
正则操作
Union(并集):备选方案的选择,由元字符“|”或“∪”表示。
Concatenation(连接):由并列表示“○”
Repetition(重复)或 “closure”(结束),由元字符“*”表示
正则表达式:语法
语法:合法表达式
设∑为字母表。表达式R是正则的,如果R是以下表达式之一:
- 对于∑中的某个a
- 元字符ε(空字符串)
- Φ(空语言)
- R1 ∪ R2 其中R1和R2都是正则表达式
- R1 ○ R2 其中R1和R2都是正则表达式
- R*,其中A是正则表达式
其他一些正则表达式
R+表示R中具有非零长度的所有字符串的集合
R+ ∪ ε = R
正则表达式的限制
每一种有限语言都是正则的。
只有无限语言可以是非正则的,但并非所有无限语言都是非正则语言。
语言和正则表达式的关系
不是所有的语言可以用正则表达式表达出来。
不是所有的语言可以写成正则语言。
DFSM, NFSM, 正则语言, 正则表达式
DFSM和NFSM等效
- 每个DFSM都是NFSM
- 每个NFSM都可以转换为DFSM
FSM识别的语言(无论是确定性的还是非确定性的,因为它们是等价的)是正则的
正则表达式可用于定义语言
正则表达式等效于FSM
- 对于每个正则表达式,都有一个等效的FSM。
- 对于每个FSM,都有一个等价的正则表达式。
- 这意味着由正则表达式定义的语言是正则的,并且每个正则语言都有一个正则表达式。
证明语言的非正则
Interesting languages are nonregular (其中一些属于上下文无关语言类)
我们研究、证明并应用抽运引理作为证明语言非正则性的一种方法 (规则背后的直觉:无限语言有一些重复的结构)
证明语言的正则的方法
- 每个有限语言都是正则的
- 给出正则表达式
- 提供FSM
- 使用闭包性质
Thanks to Dr. John: Some contents are from their slides.