720 likes | 1.18k Views
第 3 章 「文脈自由言語」. 3.1 文脈自由文法 3.2 プッシュダウンオートマトン 3.3 文脈自由文法とプッシュダウンオートマトン 3.4 正規文法と有限オートマトン 3.5 文脈自由文法の性質 3.6 決定性プッシュダウンオートマトン. 形式言語と自然言語. 1950 年代に米国の言語学者 N. Chomsky が形式言語理論を提唱。形式文法とそれによって定義される言語を自然言語の数学的モデルとして研究。. Noam Chomsky. 文の構造を研究. She loves Neo. 語の構造を研究. 文の意味を研究. S. NP. VP.
E N D
第3章「文脈自由言語」 3.1 文脈自由文法 3.2 プッシュダウンオートマトン 3.3 文脈自由文法とプッシュダウンオートマトン 3.4 正規文法と有限オートマトン 3.5 文脈自由文法の性質 3.6 決定性プッシュダウンオートマトン
形式言語と自然言語 1950年代に米国の言語学者N. Chomskyが形式言語理論を提唱。形式文法とそれによって定義される言語を自然言語の数学的モデルとして研究。 Noam Chomsky 文の構造を研究 She loves Neo 語の構造を研究 文の意味を研究 S NP VP P V NP 言葉の発音を研究 文脈における文の意味を研究 PN She loves Neo ※ 上図写真:http://web.media.mit.edu/~nitin/mideast/chomsky.html
3.1 文脈自由文法 定義 • 文脈自由文法とは4つ組G = (N, Σ, P, S)によって定義される。 • N: 空でない有限集合。Nの要素を非終端記号という。Σ: 空でない有限集合。Σの要素を終端記号という。S: S∈Nで開始記号という。P: P は N×(N∪Σ)* の有限部分集合。 • P の要素 (A, α) は生成規則とよばれ、A→α と書かれる。 • α=εのとき ε生成規則という。 • 非終端記号A を生成規則の左側にもつ P の要素をA →α1, …, A→αnとするとき、これらをまとめてA →α1| …|αnと書くこともある。
文脈自由文法の例 • 例3.1 (例3.3) • G=(N, Σ, P, S) • N = {S} • Σ= {a, b} • P = {S → ab, S → aSb} • 例3.2 (例3.4) • G=(N, Σ, P, S) • N = {S, A, B} • Σ= {x, 0, 1} • P = {S → xA, A → 0|1B, B → ε|0B|1B}
語の導出 G は省略することもある 導出の定義 • V = N∪Σとする。記号列 u,v∈V* が次を満たすとき u⇒Gvとかく。(1) u = xAy, v = xαy (x, y,α∈V*, A∈N) (2) A →α は G の生成規則 • ⇒Gの反射的推移閉包を ⇒Gとかく。 • 導出の長さが n の場合、⇒Gとかく。 • V* の要素の列 w0, …, wnについて、 w0 ⇒G w1 ⇒G・・・ ⇒G wnのとき、w0から wnが導出されるという。 * n
Gが生成する語、言語 • 開始記号Sより w∈Σ* が G の生成規則によって導出されるとき、w は G の生成する語とよばれる。また G の生成する言語をL(G) = { w∈Σ* | S⇒G w}と書く。 • 言語 L⊆Σ* に対して L = L(G) となるとき、G は L を生成するという。 • Σ上の言語 L⊆S* に対して、L を生成する文脈自由文法が存在するとき、L は文脈自由言語とよばれる。
文脈自由言語とCFL CFL の定義 • 文脈自由言語のクラスをCFLと書くことにする。すなわち、CFL = { L | L = L(G) となる文脈自由文法 G がある}と定義する。 集合の集合(族)
導出の例 • 例3.5 • N = {S,A,B}, Σ= {x, 0, 1, +, ・, ), ( } • P = {S → (S +S) | S・S | xA, A →ε| 1B, B →ε|0B|1B|0|1 } • 例3.6 • N = {S}, Σ= { ), ( } • P = {S →SS, S →(S), S →()} • 例3.7 • N = {S}, Σ= {0,1,φ,+,・,*,),( } • P = {S →φ|0|1|(S+S)|(S・S)|S* }
構文木 導出の過程をVisualizeする道具 定義 • 構文木は次のように帰納的に定義される。ここで、V = N∪S とする。 (1)各A∈Vに対して、記号Aをラベルとする 1つの頂点のみからなる木 (2)生成規則 A→εに対して A A ε
構文木(2) 定義つづき (3) T1, …, Tnを根のラベルが A1, …, An∈V である構文木とする。G の生成規則 A→A1…Anに対して、Aを根とする木 (4)上記(1)~(3)の規則を使って定義される 有限の木のみを構文木という。 A A1 ・・・ An T1 Tn
構文木の例 • 例3.8 (例3.1の導出木) S S S a a a b b b L(G) はどのような言語か?
最左導出 • 最左導出と左側順走査 • 導出の各ステップにおいて一番左にある非終端記号が置き換えられているとき、最左導出という。 • 最左導出 A⇒u に対する構文木の走査は左側順走査となる。 • 例3.9 (例3.6の最左導出) • 練習: 語 (())(()()) を最左導出する過程は? *
補題3.1 補題3.1 • G=(N,S,P,S)を文脈自由文法とする。導出 u⇒v があるならば、u から v への最左導出がある。 証明 • u = w1A1w2 … wkAkwk+1 (Ai∈N, wj∈Σ*) とする。 v = w1A1w2A2w3 … wkAkwk+1 * ① ② ・・・ Ai⇒vi (1≦i ≦k) k v = w1v1 w2 v2w3 … wkvkwk+1 左側順走査による最左導出とする
A B A B Z0 3.2 プッシュダウンオートマトン • 概念図と基本動作 (1) 状態を変える。 (2) プッシュダウンストアの トップ記号を他の記号列 で置き換える。 (3) 入力ヘッドが記号を読む 場合はヘッドの位置の 記号を取り去る。 A を push A を pop プッシュダウンストア q 有限制御部 a1 a2 ai 入力テープ
プッシュダウンオートマトンの定義 定義 • プッシュダウンオートマトン(pda)は7つ組M=(K, Σ,Γ,δ, q0, Z0, F)によって定義される。 • K : 状態とよばれる空でない有限集合。 • Σ: 入力アルファベット • Γ: プッシュダウンストアのアルファベット • q0: 初期状態 q0∈K • F : 最終状態 F⊆K • Z0: プッシュダウンストアの初期記号 Z0∈Γ • δ :K×(S∪{e})×G×K×G*の有限部分集合(q,a,Z,p,α)∈δのとき、(p,α)∈δ(q,a,Z)と書くδを遷移関数とよび、δの要素を遷移とよぶ。 非決定的な定義であることに注意
PDAによる語の受理 • 計算状況 • 状態 q∈K、入力 w∈S*、および a∈Γ* なる(q,w,α) を計算状況という。 • α=Zβ とかけるとき、Zがトップ記号である。 • K×Σ*×Γ*上の関係├M • (q,ax,Zα)├M (p,x,βα) ⇔ (p,β)∈δ(q,a,Z) • (q,ax,Zα) から (p,x,βα) へ動作するという • a =εのときをε動作という。 • 関係├Mの反射的推移閉包を├Mとかく • PDAによる語の受理 • 最終状態によって受理 → L(M) • 最終状態かつ空ストアによって受理 → N(M) *
命題3.2 命題3.2 • 言語L⊆Σ* に対して次の (1)(2)は同値である。(1)あるpda Mに対してL=L(M)となる。(2)あるpda Mに対してL=N(M)となる。 証明 • (1)→(2) • Mにおいて受理される w に対して、(q0, w, Z0)├M’ (f,ε,γ)となり、さらにε動作で残りのγを取り除くような動作をするM’を考えればよい。 • (2)→(1) • 上と似たやり方で、今度は逆に M’ から M を構成する。 *
決定性PDAと非決定性PDA • 決定性と非決定性 • 非決定性プッシュダウンオートマトン • 計算状況に対して一意に次の計算状況が決まらない。 • 決定性プッシュダウンオートマトン • 任意の計算状況に対して次の計算状況が一意に決まる。 決定性PDAの定義 • PDA M=(K,Σ,Γ,δ,q0,Z0,F)は、次の (1)(2) の条件を満たすとき決定性であるという。 (1) |δ(q, a, Z)| ≦ 1 (a∈Σ∪{ε}) (2) δ(q,ε,Z) ≠φ ならば、全ての a∈Σ に対して δ(q,a,Z)=φ (2) が無いと、入力語を消費する前にε動作をするため、非決定的な動作になる。
決定性PDAと非決定性PDAの違い • 非決定性PDAの場合は命題3.2が成り立つ • 決定性PDAの場合は成り立たない • 決定性PDAがεを最終状態と空ストアによって受理するならば一意に(q0,ε,Z0)├M (q,ε,ε) (q∈F)となる。するとどんな入力に対しても(q0, x, Z0)├M (q, x,ε)となり、入力 x が読み込まれずに停止する。したがって、ε∈N(M) ⇒ N(M)={ε} となる。 * *
クラスNPDAとDPDA 定義 • (1) NPDA={L | ある npda M に対して L=L(M)} • (2) DPDA={L | ある dpda M に対して L=L(M)} 命題3.3 • L1,L2∈NPDA ならば L1∪L2∈NPDA である。 証明 • 省略(補題2.2と同様に証明できる)
定理3.4 CFL = NPDA 文脈自由言語のクラスと非決定性プッシュダウンオートマトンによって受理される言語のクラスは一致する。 2つの補題に分けてこの定理を証明する。 補題3.5 CFL⊆NPDA 補題3.6 NPDA⊆CFL 3.3 文脈自由文法とPDA
この補題の意味 任意の言語 LCFL について、LNPDA (L を受理するnpdaがある) 証明のアイデア L∈CFLとし、L⊆Σ*を生成する文脈自由文法をG = (N,Σ, P, S) とする この G に対応する npda M をつくり、L(G) = N(M) となることを示せばよい NPDA 補題3.5 CFL⊆NPDA CFL
言語 Lを最終状態と空ストアで受理する npda M = (K,Σ,Γ,δ, q0, Z0, F) を(天下り的に)定義 K = {q0} Γ= N∪Σ q0 が初期状態 S∈N が初期記号 Z0 F = {q0} 遷移関係 は次のように与えられる。 (i)δ(q0,ε, A) = {(q0,α) | A→α∈P} (ii)δ(q0, a, a) = {(q0,ε)} (ただし a∈Σ) 補題3.5の証明 (1) 注:これは、文脈自由文法から等価なPDAを作る手法になる!
L(G) = N(M) を証明するぞ! まずは X∈N, u∈Σ*, ∈N(N∪Σ)*∪{ε} とするとき次の (a) (b) が同値であることを示す。 (a) 最左導出 X ⇒ uαがある。 (b) (q0, u, X)├ (q0,ε,α) となる。 (a)⇒(b) (導出の長さについての帰納法) 長さが 0 のときは u =ε, α= X であるので自明。 最左導出の長さが n のとき成立すると仮定する。このとき長さ n+1の最左導出X ⇒ uをとる。ただし u∈Σ*,α∈(N∪Σ)*∪{ε} とする。 補題3.5の証明 (2) * * 入力から u を消費してストアのXをαに変える n+1
X β v A γ (xθ) 補題3.5の証明 (3) n この最左導出は、X ⇒ vAβ⇒ vγβ (ただし v∈Σ*, A→γ∈P)のように、長さ n の最左導出と、長さ 1 の最左導出に分解できる。ここで u = vx, x∈Σ*,γβ= xαと書ける。帰納法の仮定より(q0, v, X)├ (q0,ε, Aβ)となる。したがって(q0, vx, X)├ (q0, x, A) ├ (q0, x, x) ((i)の遷移と = x による) ├ (q0, , ) ((ii)の遷移による)このようにして (q0, u, X)├ (q0, , )となる。よって(a)⇒(b)が成り立つ。 n * * *
(b)⇒(a)の証明 計算のステップ数についての帰納法で証明する。 ステップ数が 0 の場合は自明。 ステップ数が n 以下のとき成立すると仮定する。長さ n+1 の計算(q0, u0, a0)├ ・・・├ (q0, un,an)├ (q0, un+1,an+1)をとる。ただし u0 = u, un+1 =ε, a0 = X, an +1 = a とする。 n+1 番目のステップで (i) の遷移(ε動作)が使われている場合:上の計算は(q0, u, X)├n (q0,ε, Aβ)├ (q0,ε,γβ)と分解できる。ただし A→γ∈P,γβ=αである。帰納法の仮定により、最左導出X ⇒ uAβが存在する。 A→γ∈P であり、また u∈Σ*だから、X ⇒ uAβ⇒ uγβは最左導出である。よって X ⇒ uαなる最左導出が存在する。 補題3.5の証明 (4) * * *
n+1 番目のステップで (ii) の遷移が使われている場合:X は非終端記号なので、第1ステップ目では (ii) の遷移を適用できない。したがって、ある時点 m(2≦m≦n+1) が存在して、m-1ステップ目では (i)の遷移が使われ、すべての t(m≦t≦n+1)に対して t ステップ目では (ii) の遷移が適応されている。 すると、計算 (q0, u, X)├n+1 (q0,ε,α) は (u = vx とおくと) (q0, vx, X)├m-2 (q0, x, Aβ ) ├ (q0, x,γβ) (m-1回目の遷移は(i)の遷移) ├n-m+2 (q0,ε,α) (残りはすべて(ii)の遷移)と分解できる。また (q0, vx, X)├m-2 (q0, x, Aβ) ならば(q0, v, X)├m-2 (q0,ε, Aβ) であるので、帰納法の仮定より最左導出X ⇒ vAβ が存在する。するとX ⇒ vAβ⇒ vγβは最左導出である。γβ= xα, vx = u であるので X ⇒ uαがあることになる。 補題3.5の証明 (5) * (m-1回目の遷移に対応) * *
以上により (a) と (b) が同値であることがわかった。(a) 最左導出 X⇒uがある。(b) (q0, u, X)├ (q0, , ) となる。 補題3.1より、G の導出は最左導出としておいてよいので、w∈Σ*に対してS ⇒ w ⇔ (q0, w, S)├ (q0, , )となる。したがって L(G) = N(M) となる。命題3.2より L∈NPDA となる。 【証明終】 補題3.1 G = (N, , P, S) を文脈自由文法とする。導出 u ⇒ v が あるならば、 u から v への最左導出がある。 * 補題3.5の証明 (6) * * * *
例3.13 • 文脈自由文法 G = (N, Σ, P, S) を • N = {S} • Σ= {a, b} • P = {S → aSb, S → ab} とする。このとき補題3.5で構成されるnpdaの遷移関数δは次のようになる 現在の状態 入力ヘッダが見ている記号 ストアのヘッダが見ている記号
この補題の意味 任意の言語 LNPDA について、LCFL (L を導出するCFLがある) 証明のアイデア L∈NPDAとし、この Lを最終状態と空ストアで受理するnpdaを M=(K,Σ,Γ,δ, q0, Z0, F) とする この M に対応する文脈自由文法 G をつくり、 N(M) = L(G) となることを示せばよい CFL 補題3.6 NPDA⊆CFL NPDA
補題3.6の証明 (1) • L を生成する文脈自由文法 G=(N,Σ, P, S) を(天下り的に)定義 • N = (K×Γ×K)∪{S} • P は次の生成規則よりなる (i) 各 p∈F に対して S→(q0, Z0, p) は生成規則である。 (ii) (p, Z1・・・Zk)∈δ(q, a, Z) (k≧1, a∈S∪{ε})のとき 任意のq1, q2, …,qk∈K に対して(q, Z, qk) → a(p, Z1, q1)(q1, Z2, q2)・・・(qk-1, Zk, qk)は生成規則である (iii) (p,ε)∈δ(q, a, Z) (a∈S∪{ε}) のとき(q, Z, p) → a は生成規則 注:これは、PDAから等価な文脈自由文法を作る手法になる!
L(G) = N(M) を証明するぞ! その前に、次の (a) (b) が同値であることを示す。(a) (q, Z, p) ⇒ x(b) (q, x, Z)├ (p,ε,ε) (a)⇒(b)の証明(導出の長さについての帰納法で証明) 長さが 1 のときは、生成規則 (iii) によりx ∈ S ∪{ε} で (p,ε) ∈ d (q, x, Z )となっている。したがって (q, x, Z)├ (p,ε,ε) となる。長さ n 以下の導出に対して成立することを仮定する。 長さ n+1 ≧ 2 の導出(q, Z, p) ⇒ xをとる。導出の長さが 2 以上だから一番初めに適用される生成規則は (ii) の形のものである。 補題3.6の証明 (2) * *
このとき上の導出は(q, Z, p) ⇒ a(q1, Z1, q2)(q2, Z2, q3)・・・(qk, Zk, p) ⇒ xと書ける。ただし (q1, Z1・・・ Zk) ∈ d (q, a, Z) である。すると、x = ax1・・・ xk (xi∈Σ*) と書けて、各 i (1≦i≦k)に対して、長さ n 以下の導出で(qi, Zi , qi+1) ⇒ xiとなる。 ただし qk+1 = p とする。帰納法の仮定より(qi, xi, Zi)├ (qi+1,ε,ε) (1≦i≦k)となる。このとき(qi, xi, Zi )├ (q1, x1・・・ xk , Z1・・・ Zk ) ├ (q2, x2・・・ xk, Z2・・・ Zk ) ・・・ ├ (qk, xk, Zk ) ├ (p,ε,ε)となる。 補題3.6の証明 (3) * * * * *
(b)⇒(a)の証明(計算のステップ数についての帰納法)(b)⇒(a)の証明(計算のステップ数についての帰納法) (iii) より (q, Z, p) → x は P の要素となる。よってステップ数が 1 のときは成立する。n+1≧2 として(q, x, Z)├n+1 (p,ε,ε)とする。これを最初の1ステップと残りの n ステップに分解する。n≧1 だから第 1 ステップでは Z がポップされてεに置き換えられることはない。よって(q, x, Z) ├ (r, y, Z1・・・Zk ) ├n (p,ε,ε)となる。ここで x = ay, a ∈Σ∪{ε} であり、(r, Z1・・・Zk ) ∈δ(q, a, Z) である。 補題3.6の証明 (4)
各 Ziはいずれポップされるので、分解 y = y1・・・yk (yi∈Σ*, 1≦i≦k) と状態 q1・・・qkが存在して、各 i (1≦i≦k) に対して、n 以下のステップ数で(qi, yi, Zi )├ (qi+1,ε,ε)となる。ただし q1 = r , qk+1 = p とする。帰納法の仮定より(qi, Zi, qi+1) ⇒ yi (1≦i≦k)となる。 (ii)より(q, Z, p) ⇒ a(q1, Z1, q2) ・・・ (qk, Zk, p )だから(q, Z, p) ⇒ a(q1, Z1, q2 ) ・・・ (qk, Zk, p ) ⇒ ay1・・・ ykとなる。 よって (q, Z, p) ⇒ x となる。 補題3.6の証明 (5) * * * *
以上により (a) と (b) が同値であることがわかった。(a) (q, Z, p) ⇒ x(b) (q, x, Z)├ (p,ε,ε) そこで x∈Σ* に対して S ⇒x ならば (i) により、ある状態 p∈F が存在して、S ⇒ (q0, Z0 , p) ⇒ x となる。したがって (q0, x, Z0)├ (p,ε,ε)となり、 x は M によって受理される。逆に x が M によって受理されれば、S ⇒ x となることも同様にわかる。 【証明終】 補題3.6の証明 (6) * * * * * *
例3.14 • M = (K,Σ,Γ,δ, q0, Z0, F) を言語 {anbn | n≧1} を最終状態と空ストアで受理する例3.12の npda とする。このとき補題3.6で構成される文脈自由文法 G=(N, S, P, S) は次のようになる。N = {q0, q1}×{A, Z0}×{q0, q1}∪{S}P の生成規則は次のとおり。S → (q0, Z0, q1) (q0, Z0, q0) → a(q0, A, q0) (q0, Z0, q1) → a(q0, A, q1) (q0, A, q0) → a(q0, A, q0) (q0, A, q0) (q0, A, q0) → a(q0, A, q1) (q1, A, q0) (q0, A, q1) → a(q0, A, q0) (q0, A, q1) (q0, A, q1) → a(q0, A, q1) (q1, A, q1) (q0, A, q1) → b (q0, A, q1) → b 無駄な生成規則 が多いよ (・∀・)
3.3節の結論 • 以下の補題が証明された • 補題3.5 CFL⊆NPDA • 補題3.6 NPDA⊆CFL • すなわち • 文脈自由言語のクラスと非決定性プッシュダウンオートマトンによって受理される言語のクラスは一致する。(言語を定義する能力が等しい) 定理3.4 CFL = NPDA
3.4 正規文法と有限オートマトン 正規文法 右線形文法 A wB (A, B N, wΣ*) A w 左線形文法 A Bw (A, B N, wΣ*) A w
S A A A A 1 0 0 0 例3.15 右線形文法の例 N = {S, A} P = {S 1A, A 0A, A }
S S S S S 1 0 0 0 0 例3.16 左線形文法の例 N = {S} P = {S S0, S 1}
定理3.7 定理3.7 • 言語 L⊆Σ*に対して、次の (1)-(3) は同値である。 (1) L を生成する右線形文法がある。 (2) L は有限オートマトンによって受理される。 (3) L を生成する左線形文法がある。 正規文法 正規表現 有限オートマトン
1 S A f 0 証明 (1)⇒(2) 例3.15 の場合 N = {S, A} P = {S 1A, A 0A, A } M : L(M) = L(G) を帰納法を用いて証明する。
1 q0 q1 1 0 0 証明 (2)⇒(3) 例: 1 を奇数個含む語を受理するオートマトン M : G = (K,Σ, P, q0) P = {q0 1q1, q0 0q0, q1 1q0, q1 0q1, q1 } L(M) = L(G) を帰納法を用いて証明する。
S S A A A A A A A S A 1 0 0 0 1 0 0 0 証明 (1)⇒(3); (3)⇒(1) N = {S, A} P = {S 1A, A 0A, A } N = {S, A}∪{S} P = {S A S1, A A0, S A }
3.5 文脈自由文法の性質 • この節の内容 • 定理3.8ε生成規則消去定理 • 定理3.9 鎖生成規則の消去定理 • 定理3.10Chomsky標準形への変形 • 定理3.11 挿入定理
定理3.8 ε生成規則消去定理 定理3.8 • 文脈自由文法 G = (N,Σ, P, S ) に対して、次の (1)-(3)を満たす文脈自由文法G’ = (N’,Σ, P’, S’ ) を構成できる。(1)L(G ) = L(G )(2) ε∈L(G ) のときのみ G’ はε生成規則を持ち、 それは S’ε に限る。(3) G’ の開始記号 S’ は P’ のどの生成規則の 右辺にも現れない.
N Nn εを導出する 証明の手引き • G に対して、条件に合うような G’ を(天下り的に)定義する。 • その前準備として、元の G の非終端記号 N のうちεを生成するものの集合 Nnを作る。 • こうして作った G’ が (2) と (3) を満たすのは明らか。 • 残る(1) L(G’ ) = L(G ) を証明する。 • L(G’ ) ⊆ L(G ) を証明 • L(G’ ) ⊇ L(G ) を証明
証明 (1) 証明 • N = N∪{S} • P は次のとおり(i) L(G ) ならば S は生成規則(ii) S S は生成規則(iii) A 1 A1 2・・・k Ak k+1P, Ai N∪Σ (1 i k), kNn*ならば、AA1・・・Ak は生成規則 このP’の作り方がε生成規則を省く方法になる 注:αkはεを導出する
証明 (2) • L(G) ⊆ L(G) • (i) から、 L(G ) L(G ) ここで、SG w (wΣ+) ならば、SG S Gw となる導出がある。 • L(G) ⊇ L(G) • (b) AN∪Σのとき,AG w, w∈Σ+ならばAG w である。 • (b) を導出の長さの帰納法によって証明。 • (b) より, S G w, w∈Σ+ならばS G w となるので、S G w となる。 * * *