1、字母表
1、字母表
字母表(Alphabet)是一组符号的有限集合。这些符号可以包括字母、数
字、特殊字符等。
字母表通常用大写字母Σ表示
例如,一个简单的字母表可以是:Σ = {a, b, c},其中包含了三个小写字母。
注意
:字母表是形式语言的基础,用于构建单词(Word)和句子(Sentence)。单词由字母表中的符号按照一定规则组成,而句子则由一个或多个单词构成。
2、符号和符号串
1、符号(Symbol)
:符号是语言中的基本元素,可以是字母、数字、标点符号或其他字符。
2、符号串(String)
:符号串是由符号组成的有限序列。
例如,一个简单的字母表:Σ = {a, b, c}
符号表示为
a、b、c
符号串可以表示为
a
b
c
aa
ab
ac
ba
bb
bc
ca
cb
cc
aaa
aab
abb
bbb
bcc
ccc
这只是一部分可能的符号串示例,你可以根据需要进行更多组合和排列。
注意
:符号串可以包含一个或多个符号,并且可以为空串(不包含任何符号)。
3、符号串的长度
:符号串的长度是指其中包含的符号个数
例如:
aa: 长度为1
ab: 长度为2
ac: 长度为2
aaa: 长度为1
aab: 长度为2
4、空符号串
:空符号串可以用 ε 表示,其长度表示为0;
3、符号串的运算
1、符号串的头和尾
对于一个非空的符号串,它有一个头部(首字母)和尾部(末尾字母),用来表示符号串的起始和结束。
例如,对于符号串 "abc",其中 "a" 是头部,"c" 是尾部。
如果符号串只包含一个符号,那么它的头部和尾部是相同的。
对于空符号串,由于没有符号,因此没有定义的头部和尾部。
2、符号串的连接
符号串的连接是指将两个或多个符号串按顺序合并在一起形成一个新的符号串的操作。在符号串的连接中,第一个符号串的尾部与第二个符号串的头部相连。
以符号串 "abc" 和 "def" 为例,它们的连接结果是 "abcdef"。
连接三个符号串 "abc"、"def" 和 "ghi",则结果就是 "abcdefghi"。
3、符号串的方幂
在符号串中,如果将一个符号串重复多次并连接起来形成一个新的符号串,那么这个操作称为符号串的方幂。
例如,对于符号串 "abc",它的方幂表示为 "abc^n",其中 n 表示重复的次数。
如果 n = 0,则符号串的方幂结果是空符号串,即 "abc^0" = ""。
如果 n = 1,则符号串的方幂结果仍然是原符号串本身,即 "abc^1" = "abc"。
如果 n > 1,则符号串的方幂结果就是将原符号串重复 n 次并连接起来
即 "abc^3" = "abcabcabc"。
注意
,符号串的方幂操作只适用于非负整数次幂
。
3、符号串的闭包(克林闭包)运算
{a, b} 的闭包运算包括连接
、幂运算
连接(Concatenation):
“a” 和 “b” 的连接结果是 “ab”。
“ab” 和 “a” 的连接结果是 “aba”。
幂运算(Exponentiation):
“a” 的平方是 “aa”。
“b” 的三次幂是 “bbb”。
而克林闭包
:用于描述符号串的可能组合。在字母表上进行克林闭包运算时,可以生成包括空串在内的所有可能符号串的集合。
例如,对于字母表 {a, b} 来说,它的克林闭包 Σ* 包括以下符号串:{ε, a, b, aa, ab, ba, bb, aaa, aab, aba, abb, baa, bab, bba, bbb, …}。
4、符号串的正闭包运算
正闭包运与克林闭包差不多,只是正闭包不包含空串ε
总结:
闭包包括空串在内,生成所有可能的符号串,允许重复出现。
正闭包排除空串,生成至少由一个元素组成的符号串,允许重复出现。