字母表和串
定义
字母表:指一个有限的非空符号集∑,∑中元素称为字母
串:∑*为所有由∑中元素生成的有限长度序列全体,∑*中元素称为∑上的词(world)或串(string),即串是有限长度的符号序列
空串:∑*中的空序列称为空串,习惯上使用λ或ε表示,用Λ表示集合{λ}
概念
串的长度:串w中所含字母的个数(即序列的项数),记作|w|
可以这样理解,字母表是有限的符号集,串是有限长度的符号序列
连接运算:假设$w_1 = s_{1}s_{2}s_{3}...s_{n}$和$w_{2} = t_{1}t_{2}t_{3}...t_{n}$都是字母表∑上的串,则$w_1$和$w_2$的连接定义为$s_{1}s_{2}s_{3}...s_{n}t_{1}t_{2}t_{3}...t_{n}$,记作$w_{1}°w_{2}$或$w_{1}w_{2}$,°称作∑*上的连接运算
常见的字母表有:
- ∑={0,1},二进制字母表
- ∑={a,b,c,...z},所有小写字母的集合
- 所有ASCII字符的集合,或者所有课打印的ASCII字符的集合
w的n次幂:假设w是字母表∑上的串,则可以定义w上的n次幂wn为:(递归定义)
- w0 = λ
- wn = wn-1°w,n≥1
前缀、真前缀、后缀、真后缀:
假设x,y,z是字母表∑上的串,且x=yz,则
- 称y是x的前缀(prefix)
- 如果z∉λ,则称y是x的真前缀(proper prefix)
- 称z是x的后缀(suffix)
- 如果y∉λ,则称y是x的真后缀(proper suffix)
字串:假设x,y是字母表Σ上的串,且存在字母表∑上的串z,w,使得x = zyw,则称y是x的字串(substring)
易知,字符串w的前缀个数|x|+1,后缀个数|x|+1,字串个数n(n+1)/2 + 1
形式语言
语言
分为自然语言和形式语言
自然语言:词汇、发音及其组合方法,以在一个社会群体中使用和理解,这通常称为自然语言(nature language)
形式语言:一种由标记和符号组成的形式化系统,包括该系统所容许的表达式的形成和转换的规则,这通常称为形式语言(formal language)
后者常用于建立自然语言模型及同计算机通信。
自然语言的规则及其复杂且难以规则化,而形式语言可以通过一些确定的语言构造。
语言的定义
语言是符合语法的句子的集合,下面来定义形式的“语言”:
设∑是有限字母表,∑*上的任一个子集都称为∑上的语言(language),语言L的元素称为句子
- ∑上语言的串不必包含∑上的所有符号
- 语言可分为有穷语言和无穷语言
语言的运算
连接运算:设L1和L2是有限字母表∑上的两个语言,则可定义L1与L2的连接L1°L2为
L1°L2={αβ|α∈L1,β∈L2}
L1°L2也可简写做L1L2,通常来讲L1L2 ≠ L2L1,即不满足交换律
假设∑是一个字母表,则φ(∑*)即为∑上所有语言的全体,它在语言的连接运算下也形成特定的代数结构
定理:假设∑是一个字母表,则(φ(∑*),°)构成一个半群
n次幂:设L是有限字母表∑上的语言,定义L的n次幂Ln为
- L0 = Λ
- Ln = Ln-1 ° L,n≥1
正闭包和星闭包:
设L是有限字母表∑上的语言
L的正闭包$L^{+} = L^{1}{cup}L^{2}{cup}L^{3}{cup}...$
L的星闭包$L^{*} = {Lambda}{cup}{L^{+}} = L^{0}{cup}L^{1}{cup}L^{2}{cup}L^{3}{cup}...$
例如,${Lambda}^{+} = {Lambda}^{*} = {Lambda}$
参考链接:中国大学mooc 刘铎 离散数学