字母表和串
定義
字母表:指一個有限的非空符號集∑,∑中元素稱為字母
串:∑*為所有由∑中元素生成的有限長度序列全體,∑*中元素稱為∑上的詞(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 劉鐸 離散數學