A A A是一个有限字母集,我们定义 A A A上的串结构:
空串:没有任何字母的串 λ \lambda λ是 A A A上的串,
单个字符的串:对于 A A A中的任意字母 a a a是 A A A上的串,
加法(拼接):对于 A A A上任意两个字符串 s s s和 t t t, s + t s+t s+t也是 A A A中的字符串,
模:所有的串都有有限的长度,由空串 λ \lambda λ每次添加一个 A A A中的字符得到串 s s s所进行的加法次数称为串 s s s的长度,空串的长度为0,
偏序结构:对于 A A A上的串 δ \delta δ和 θ \theta θ,如果存在 A A A上的串 α , ω \alpha,\omega α,ω使得 δ = α + θ + ω \delta=\alpha+\theta+\omega δ=α+θ+ω,则称 θ \theta θ是 δ \delta δ的子串,记作 δ ≥ θ \delta \geq \theta δ≥θ,
子串的替换:对于 A A A上的串 s s s和 t t t,如果 s ≥ t s\geq t s≥t,对于任意 A A A上的串 c c c, s : t → c s:t\to c s:t→c也是 A A A上的串.特别的,当 c c c是空串时,记作 s − t s-t s−t.
我们记 A ∗ A^* A∗为字母集 A A A上所有的串构成的集合,显然 A ∗ A^* A∗是可数集。
注1:加法不满足交换律,并且 A ∗ A^* A∗对无限次加法不一定封闭(无限次加空串是封闭的)
串的运算之间的关系:
字符串集上的运算:
一个短语结构文法 G G G是一个四元组 ( A ∗ , T , S , P ) (A^*,T,S,P) (A∗,T,S,P),其中 A ∗ A^* A∗是字母表 A A A生成的所有串的集合, T T T是 A ∗ A^* A∗的子集, S S S是 A ∗ A^* A∗的一个元素, P P P是一系列替换规则。
设 G = ( A ∗ , T , S , P ) G=(A^*,T,S,P) G=(A∗,T,S,P)是一个文法,由 G G G生成的语言是初始符 S S S能够派生的所有终结符串构成的集合,记作 L ( G ) = { ω ∈ A ∗ ∣ S → ω } L(G)=\{\omega\in A^*|S\to\omega\} L(G)={ω∈A∗∣S→ω}
单调性:在产生式 ω 1 → ω 2 \omega_1 \to \omega_2 ω1→ω2中,如果 ∣ ω 1 ∣ ≤ ∣ ω 2 ∣ |\omega_1|\leq|\omega_2| ∣ω1∣≤∣ω2∣则称该产生式是非缔约的,如果一个文法所有的产生式都是非缔约的,则称这个文法是 非缔约的或者单调的。
对于上下文无关的语言,将其派生用有序根树表示成的图形叫做派生树,树根表示初始符,树的内部节点表示派生过程中产生的非终结符,叶结点表示终结符。
巴克斯—诺尔范式(BNF)是一种表示2型文法的方法。
带输出的有限状态机是一个六元组 M = ( S , I , O , f , g , s 0 ) M=(S,I,O,f,g,s_0) M=(S,I,O,f,g,s0):
M M M是一个有限状态机, L ⊆ I L\subseteq I L⊆I,对于 L L L中的 x x x,如果 M M M的输出的最后一位是1,则称 M M M能识别 L L L.
有限状态集的类型:
米兰机:输出与状态之间的转移相对应
摩尔机:输出仅由状态决定
不带输出的有限状态自动机是一个五元组 M = ( S , I , f , s 0 , F ) M=(S,I,f,s_0,F) M=(S,I,f,s0,F):
M M M是一个有限状态自动机,如果 x ∈ L x\in L x∈L将 s 0 s_0 s0转变为一个终结状态,就称 M M M能识别 L L L.
有限状态自动机的等价:如果两个有限状态自动机能识别相同的语言,就说它们是等价的
图灵机是一个四元组 T = ( S , I , f , s 0 ) T=(S,I,f,s_0) T=(S,I,f,s0)
图灵机主要由控制器和带组成:带被分成无限个小方格,但任何时候带上只有有限个非空白符;在每一步,控制器读取当前方格中的符号 x x x,如果控制处于状态 s s s,且 f f f将 ( s , x ) (s,x) (s,x)映到 ( s ′ , x ′ , d ) (s',x',d) (s′,x′,d),控制器进入状态 s ′ s' s′,擦掉当前方格中的 x x x并写上 x ′ x' x′,如果 d = R d=R d=R就右移一个方格, d = L d=L d=L就左移一个方格;如果部分函数 f f f在 ( s , x ) (s,x) (s,x)处没有定义,图灵机停机。
我们将每一记作 ( s , x , s ′ , x ′ , d ) (s,x,s',x',d) (s,x,s′,x′,d)
当输入 x x x时图灵机能够停机且停机时 y y y在带上,则称 T ( x ) = y T(x)=y T(x)=y,若输入 x x x时图灵机不停机,则 T ( x ) T(x) T(x)无定义
设 V ⊆ I V\subseteq I V⊆I,图灵机 ( S , I , f , s 0 ) (S,I,f,s_0) (S,I,f,s0)能识别 V V V上的串 x ⟺ T x \iff T x⟺T在初始状态时将 x x x写在带上 T T T能够停机;称 T T T能识别集 A A A如果 ( T (T (T能识别串 x ⟺ x ∈ A ) x \iff x\in A) x⟺x∈A)