形式語言

無向圖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也被稱爲一條路徑或通路。blog

迴路:設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的一條迴路。若圖中無任何迴路,稱該圖爲無迴路圖。字符串

一個無迴路的無向圖稱爲森林。一個無迴路的連通無向圖稱爲樹(或自由樹),若是樹中某一個結點被特別地標記爲根結點,則這棵樹稱爲根樹。it

樹是包含n個結點的有窮集合S(n > 0),在S上定義一個關係R,R知足以下三個條件:io

  1. 有且僅有一個結點$t_0 \in S$,該結點對R 來講沒有前驅,結點$t_0$稱爲樹根
  2. 除結點$t_0$外,每一個結點都有且僅有一個直接前驅(不然出現迴路)
  3. 除結點$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^*$。gc

鏈接

假設x和y是$\Sigma$上的字符串,則把y的各個字符依次寫在x以後獲得的符號序列稱爲x與y的鏈接,記做xy。im

假設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的長度,即字符個數。

字符串與語言

定義:

  1. 一個字符集是符號的一個有限集合
  2. 字符集A上的一個字符串是由A中的字符所組成的有序序列,其中容許字符重複出現,字符串的長度就是序列中字符的個數(包括重複字符)
  3. 空字符串爲$\epsilon$,且是惟一的,其長度爲0。注意與空集$\emptyset$區分
  4. 若是S 和 T 是兩個字符串的集合,那麼$ST = \lbrace xy | x \in S and y \in T \rbrace$
  5. 字符集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$

集合大小與可數性

  1. 給定兩個集合S, T,若是存在一個 一對一的滿射(或稱雙射)函數 $f: S \rightarrow T$,那麼S 和 T 的大小相等,$|S|=|T|$
  2. 若是存在一個 一對一的函數(單射,但不必定是滿射)函數 $f: S \rightarrow T$,那麼$|S| \le |T|$
  3. 若是存在一個 一對一的函數 $f: S \rightarrow T$,可是不存在滿射函數,那麼 $|S| \lt |T|$

咱們稱集合S:

  1. 是有限的,若是 $|S| \lt |\Bbb N|$
  2. 是可數的,若是 $|S| \le |\Bbb N|$
  3. 是可數無限的,若是 $|S| = |\Bbb N|$
  4. 是不可數的,若是 $|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)$產生句子的過程能夠由派生樹(語法樹、分析樹、推導樹)表示。構造步驟以下:

  1. 對$\forall x \in N \cup \Sigma$,給一個標記做爲結點,令文法的初始符號S做爲樹的根結點
  2. 若是一個結點的標記爲A,且至少有一個除它自身以外的後裔結點,那麼$A \in N$
  3. 若是一個結點的標記爲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

統計天然語言處理,宗成慶

相關文章
相關標籤/搜索