無向圖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
根樹中,自上而下的路徑末端結點稱爲樹的葉結點,根結點與葉結點之間的結點稱爲中間結點(內結點)。語法
假設$\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的長度,即字符個數。
定義:
定義天然數以下:
$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:
例:
集合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(Context Free Grammar)上下文無關文法$G=(N, \Sigma, P, S)$產生句子的過程能夠由派生樹(語法樹、分析樹、推導樹)表示。構造步驟以下:
若是文法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
統計天然語言處理,宗成慶