形式语言理论

1 字符串

字符的有限集合$\Sigma$称为字符表,其中的元素相连组成的有限序列称为字符串。空串记为$\epsilon$

多个字符串相连称为连接运算。如字符串x=ab,字符串y=bc,则二者的连接xy=abbc。如果x和自己连接可以表示成幂的形式,如$x^2=abab$,$x^0=\epsilon$

给定字符串集合A,B,其乘积运算定义为元素级别的连接:$AB=\{xy|x\in A, y\in B\}$

给定字符串集合V,其闭包运算有2种:正闭包+和星闭包*,定义分别为$V^+=V^1 \cup V^2 \cup …$,$V^=V^0 \cup V^1 \cup …$。显然$V^=V^++\{\epsilon\}$

2 形式语法(文法)

形式语法(by乔姆斯基): 

$$G=(N,T,S,P)$$

  • N是非终结符集
  • T是终结符集,$N\cap T=\varnothing$,$N\cup T=V$称为单词表
  • S是初始符,$S\in N$
  • P是规则集,P中的重写规则r形如$\alpha \to \beta$,将$\alpha$替换成$\beta$。$\alpha$不是空串

根据文法产生的字符串集叫做语言,记作L(G)。根据P的细节,形式文法有下文4种形式

无约束文法(0型文法)

几乎没有约束,$\alpha$至少含有一个非终结符就行。$\alpha \in V^+$,$\beta \in V^*$。这种文法约束非常小,生成能力很强。产生的语言称为0型语言,能够被图灵机识别

上下文相关文法CSG(1型文法)

规则替换必须有上下文语境:$aAb \to a B b$,$a,b,B \in V^*$。a,b就是A的上下文语境。如果a,b同时为空,就变成了下面的上下文无关文法。上下文相关语言能够被线性界限自动机识别

上下文无关文法CFG(2型文法)

规则左边只能有一个非终结符:$A \to x$,$A \in N, x \in V^*$。上下文无关语言能够被下推自动机识别。上下文无关文法可以用推导树表示,也是短语结构语法PSG的基础

正则文法(3型文法)(有限状态文法FSG)

终结符只能在$\beta$最左边或最右边。对应左正则文法和右正则文法。用公式表示就是设A,B是于非终结符,x是终结符,则$A\to Bx$(右正则文法),$A\to xB$(右正则文法),$A\to x$(二者都有)。这种文法产生的语言能够被有限状态自动机FDA识别,所以又叫有限状态文法FSG

可以看到,从0型文法到3型文法,约束越来越多,并且$FSG\subset CFG\subset CSG\subset type0G$

2 短语结构语法

CFG产生句子的过程可以用推导树表示:

  • 节点$\in V$
  • 根节点=S
  • 非叶节点一定是非终结符
  • 从左向右排列的节点A1,A2,A3…是节点A的子节点,则必有A→A1A2A3…是P中的规则

yesterday a man saw Marry的推导树

支配关系和前于关系:父节点支配子节点,兄节点前于弟节点

3 依存语法

和短语结构语法不同的句子分析方式(by泰尼埃)

“我吃个苹果”的依存树

  • 动词是句子的中心,支配着别的成分,本身不受其他任何成分的支配,主语和宾语都在动词支配之下,可以相互调位置,形成被动句
  • 依存树中直接处于动词节点之下的,是名词词组和副词词组。名词词组形成行动元,副词词组形成状态元
    • 行动元的数目(即配价数目)不超过3:主语、直接宾语、间接宾语
    • 状态元可以是无限的(无限修饰)
    • 动词的行动元可以不饱和,即有些价可以空缺