形式语言
图
无向图G定义为一个二元组 $G = (N, E)$,其中N是顶点的非空有限集合,$N=\lbrace n_i | i = 0, 1, ..., k \rbrace$,E是边的有限集合,$E = \lbrace (n_i, n_j) | n_i, n_j \in N \rbrace$
有向图D定义为一个二元组 $D= (N, E), \quad N=\lbrace n_i | i = 0, 1, ..., k \rbrace , \quad E = \lbrace (n_i, n_j) | n_i, n_j \in N \rbrace , \quad (n_i, n_j) \neq (n_j,n_i) $。$(n_i,n_j) \in E$ 是顶点$n_i$的出边,是顶点$n_j$的入边。
连通图是一个无向图G或有向图D,对顶点集合N中的任意两个顶点$n_s$和$n_t$,存在一个顶点序列P,$P=(n_s = n_{i0}, n_{i1},...,n_{ik}=n_t)$,其中$n_{ij} \in N, \forall j = 0, 1, 2, ..., k$,且 $e_j=(n_{ij}, n_{i(j+1)}) \in E, \forall j = 0, 1, 2, ..., k-1$,P也被称为一条路径或通路。
回路:设P是有向图D的一条路径,$P=(n_{i0}, n_{i1},...,n_{ik})$,如果$n_{i0} = n_{ik}$,则称P是D的一条回路,即开始和终结于同一顶点的通路称为回路。如果$k=0$,则称P为自回路。若P是无向图G的一条路径,$P=(n_{i0}, n_{i1},...,n_{ik})$,且$k > 0$,则称P是G的一条回路。若图中无任何回路,称该图为无回路图。
树
一个无回路的无向图称为森林。一个无回路的连通无向图称为树(或自由树),如果树中某一个结点被特别地标记为根结点,则这棵树称为根树。
树是包含n个结点的有穷集合S(n > 0),在S上定义一个关系R,R满足如下三个条件:
- 有且仅有一个结点$t_0 \in S$,该结点对R 来说没有前驱,结点$t_0$称为树根
- 除结点$t_0$外,每个结点都有且仅有一个直接前驱(否则出现回路)
- 除结点$t_0$外任意结点$t \in S$,都存在一个结点序列$t_0, t_1, ... , t_k$,使得 $t_0$为树的根, $t_k = t$,有序对$<t_{i-1}, t_i > \in R (1 \leq i \leq k)$,则该结点序列称为从根结点$t_0$到结点 $t$的一条路径(连通性)
根树中,自上而下的路径末端结点称为树的叶结点,根结点与叶结点之间的结点称为中间结点(内结点)。
字符串
假设$\Sigma$是字符的有限集合(字符表),由$\Sigma$中字符相连而成的有限序列称为字符串,不包含任何字符的字符串称为空串,记作$\epsilon$。包括空串在内的$\Sigma$上的字符串全体记作$\Sigma^*$。
连接
假设x和y是$\Sigma$上的字符串,则把y的各个字符依次写在x之后得到的符号序列称为x与y的连接,记作xy。
假设x是$\Sigma$上的字符串,把x自身连接n($n \geq 0$)次得到的字符串
$$z=xx...x$$
称为x的n次方幂,记作$x^n$。当 n =0 时,$x^0 = \sigma$,当 $n \geq 1$时,$x^n = xx^{n-1} = x^{n-1}x$。
乘积
假设A和B是字符表$\Sigma$上的符号串的集合,则A和B的乘积定义为
$$AB=\lbrace xy|x \in A, y \in B \rbrace$$
其中,$A^0 = \lbrace \sigma \rbrace$。当$n \geq 1$时,$A^n = A^{n-1}A = AA^{n-1}$。
闭包
$\Sigma$上的符号串集合V的闭包定义为:
$$V^* = V^0 \cup V^1 \cup V^2 \cup ..., \quad V^+ = V^* - \lbrace \epsilon \rbrace$$
|x|表示字符串x的长度,即字符个数。
字符串与语言
定义:
- 一个字符集是符号的一个有限集合
- 字符集A上的一个字符串是由A中的字符所组成的有序序列,其中允许字符重复出现,字符串的长度就是序列中字符的个数(包括重复字符)
- 空字符串为$\epsilon$,且是唯一的,其长度为0。注意与空集$\emptyset$区分
- 如果S 和 T 是两个字符串的集合,那么$ST = \lbrace xy | x \in S and y \in T \rbrace$
- 字符集A 上的语言L 是闭包$A^*$的子集,$L \subset A^*$
定义自然数如下:
$0 = \emptyset$
$1 = \lbrace \emptyset \rbrace$
$2 = \lbrace \emptyset, \lbrace \emptyset \rbrace \rbrace$
一般地
$n+1 = \lbrace 0,1,2...n \rbrace$
整个自然数集合$\Bbb N$
$\Bbb N = \lbrace 0,1,2,... \rbrace$
集合大小与可数性
- 给定两个集合S, T,如果存在一个 一对一的满射(或称双射)函数 $f: S \rightarrow T$,那么S 和 T 的大小相等,$|S|=|T|$
- 如果存在一个 一对一的函数(单射,但不一定是满射)函数 $f: S \rightarrow T$,那么$|S| \le |T|$
- 如果存在一个 一对一的函数 $f: S \rightarrow T$,但是不存在满射函数,那么 $|S| \lt |T|$
我们称集合S:
- 是有限的,如果 $|S| \lt |\Bbb N|$
- 是可数的,如果 $|S| \le |\Bbb N|$
- 是可数无限的,如果 $|S| = |\Bbb N|$
- 是不可数的,如果 $|S| \gt |\Bbb N|$
例:
- 整数集合$\Bbb Z = \lbrace 0, 1, -1, 2, -2, ... \rbrace$是可数的
- 有理数集合$\Bbb Q = \lbrace q /q | p, q \in \Bbb Z , q \neq 0 \rbrace$ 是可数的
- 如果S 是可数的,那么S的笛卡尔乘积 $S^n, \forall n < \infty$ 也是可数的
- 对任意非空字符集A,$A^*$ 是可数无限的
集合S的幂集是S的所有子集所组成的集合:
$P(S) = \lbrace T | T \subset S \rbrace$
且有关系:
$|S| \lt |P(S)|$
所以对任何可数无限集合S,其幂集P(S) 是不可数的。比如,$P(\Bbb N)$就是不可数的,不难发现,实数集合$\Bbb R$与$P(S)$大小相等,$|\Bbb R|=|P(\Bbb N)|$
形式语言
形式语言用来描述一个语言。
形式语法
形式语法是一个四元组$G = (N, \Sigma, P, S)$,N是非终结符的有限集合,$\Sigma$是终结符的有限集合,$N \bigcap \Sigma = \varnothing $,$V=N \cup \Sigma$称为总词汇表。P是一组重写规则的有限集合$P=\lbrace \alpha \rightarrow \beta \rbrace$,其中$\alpha, \beta$是词汇表V中元素构成的字符串,且$\alpha$至少包含一个非终结符,$S \in N$称为句子符或初始符。
注意:这里不是以字符为单位,而是以词汇为单位,词汇包含一个或多个字符。
推导
$G=(N, \Sigma, P, S)$是一个文法,在$(N \cup \Sigma)^*$上定义关系$\Rightarrow \\ G$(直接派生或推导):如果$\alpha \beta \gamma$ 是$(N \cup \Sigma)^*$中的符号串,且$\lbrace \beta \rightarrow \delta \rbrace$是 P 中的一个产生式,那么,$\alpha \beta \gamma$ $\Rightarrow \\ G$ $\alpha \delta \gamma$。
形式语法的类型
(约定以英文大写表示非终结符,英文小写表示终结符,希腊小写表示由非终结符和终结符组成的符号串)
3型文法
又称正则文法:文法G的规则集P中所有规则均满足:$A \rightarrow Bx | x$,其中$A, B \in N, \quad x \in \Sigma$。
由于规则右端如果有非终结符的话,都是出现在最左边,所以又称左线性正则文法。类似的如果:$A \rightarrow xB$,则称为右线性正则文法。
例如:
$G=(N, \Sigma, P, S), \quad N=\lbrace S, A, B \rbrace, \quad \Sigma=\lbrace a, b \rbrace$
$P: (1) S \rightarrow aA $
$(2) A \rightarrow aA $
$(3) A \rightarrow bbB $
$(4) B \rightarrow bB $
$(5) B \rightarrow b $
上面第三条规则可以改写为,
$$ A \rightarrow bB'$$
$$ B' \rightarrow bB $$
于是,可以看出该文法为右线性正则文法,所识别的语言为$L(G) = \lbrace a^n b^m, \quad n \geq 1, m \geq 3 \rbrace$
2型文法:
又称上下文无关文法:如果文法G的规则集P中所有规则均满足如下形式:$A \rightarrow \alpha$,其中$A \in N, \quad \alpha \in (N \cup \Sigma)^*$
例如:
$G=(N, \Sigma, P, S), \quad N=\lbrace S, A, B, C \rbrace, \Sigma = \lbrace a, b, c \rbrace,$
$P:(1) S \rightarrow ABC$
$(2) A \rightarrow aA|a$
$(3) B \rightarrow bB|b$
$(4) C \rightarrow BA|c$
该文法为上下文无关文法,可识别语言为$L(G)=\lbrace a^n b^m a^k c^{\alpha}, \quad n \geq 1, m \ge1, \alpha \in \lbrace 0, 1 \rbrace$
从定义可见,2型文法比3型文法少了一层限制,其规则右端格式没有约束,即规则左端的非终结符可以被改写成任何形式。3型文法是2型文法的特例,即此时$\alpha$为$Bx|x$。
1型文法
又称上下文有关文法:如果文法G的规则集P中所有规则均满足如下形式:$\alpha A \beta \rightarrow \alpha \gamma \beta$,其中$A \in N, \quad \alpha, \beta, \gamma \in (N \cup \Sigma)^*$,且$\gamma$至少包含一个字符。
从上述定义可知,字符串$\alpha A \beta$中的A 可以被改写为$\gamma$需要有上文语境$\alpha$和下文语境$\beta$,即上下文含义所在。当$\alpha, \beta$均为$\epsilon$时,1型文法变成了2型文法,也就是说,2型文法是1型文法的特例,1型文法可识别的语言比2型文法识别的语言集合更大。
上下文有关文法的另一种定义:如果文法G为上下文有关文法,当且仅当$x \rightarrow y, \quad x \in (N \cup \Sigma)^+, y \in (N \cup \Sigma)^*$,并且$|y| \ge |x|$。
0型文法
又称无约束文法:如果文法G的规则集P中所有规则满足:$\alpha \rightarrow \beta$,其中$\alpha \in (N \cup \Sigma)^+, \beta \in (N \cup \Sigma)^*$。0型文法比1型文法少了$|y| \ge \x|$的约束。
从上面定义可见,从0型文法到3型文法,约束越来越多,所识别的语言集合越来越小,$L(G_0) \supset L(G_1) \supset L(G_2) \supset L(G_3)$
CRG识别句子的派生树表示
CRG(Context Free Grammar)上下文无关文法$G=(N, \Sigma, P, S)$产生句子的过程可以由派生树(语法树、分析树、推导树)表示。构造步骤如下:
- 对$\forall x \in N \cup \Sigma$,给一个标记作为结点,令文法的初始符号S作为树的根结点
- 如果一个结点的标记为A,且至少有一个除它自身之外的后裔结点,那么$A \in N$
- 如果一个结点的标记为A,它的k(k > 0)个直接后裔结点按从左到右的顺序依次标记为$A_1,A_2,...A_k$,那么$A \rightarrow A_1,A_2,...A_k$一定是P中的一个产生式
二义性文法
如果文法G对于同一句子存在两棵或以上的不同分析树,那么,该句子是二义性的,文法G为二义性文法。
例:
给定文法G(S)的一组规则:
$S \rightarrow P NP$ (S表示文法的初始符Start,而不是句子 Sentence)
$NP \rightarrow NN | NP Aux NP$ $P \rightarrow 关于$
$NN \rightarrow 鲁迅|文章$ $Aux \rightarrow 的$
其中NP =Noun Phrase, Aux = Auxiliary, NN = Noun, P=proposition
于是,字符串“关于鲁迅的文章”最左推导为
$S \Rightarrow P NP \Rightarrow 关于NP \Rightarrow 关于 NP Aux NP \Rightarrow 关于 NN Aux NP \Rightarrow 关于鲁迅 Aux NP \Rightarrow 关于鲁迅的 NP \Rightarrow 关于鲁迅的 NN \Rightarrow 关于鲁迅的文章$
派生树为
从上到下,从左到右,可见与上面的推导过程是一致的。
如果对上面的那组规则增加一条规则$S \rightarrow PP Aux NP$,那么规则集变为
$S \rightarrow P NP | PP Aux NP$ $PP \rightarrow P NP$
$NP \rightarrow NN | NP Aux NP$ $P \rightarrow 关于$
$NN \rightarrow 鲁迅|文章$ $Aux \rightarrow 的$
其中 PP = prepositional phrase(介词短语)
那么句子“关于鲁迅的文章”除了有上面那棵分析树,还可能是下面这棵分析树
于是,增加规则后文法变成二义性文法。
ref
统计自然语言处理,宗成庆