第 3 章 「文脈自由言語」
DESCRIPTION
第 3 章 「文脈自由言語」. 3.1 文脈自由文法 3.2 プッシュダウンオートマトン 3.3 文脈自由文法とプッシュダウンオートマトン 3.4 正規文法と有限オートマトン 3.5 文脈自由文法の性質 3.6 決定性プッシュダウンオートマトン. 形式言語と自然言語. 1950 年代に米国の言語学者 N. Chomsky が形式言語理論を提唱。形式文法とそれによって定義される言語を自然言語の数学的モデルとして研究。. Noam Chomsky. 文の構造を研究. She loves Neo. 語の構造を研究. 文の意味を研究. S. NP. VP. - PowerPoint PPT PresentationTRANSCRIPT
第 3 章「文脈自由言語」3.1 文脈自由文法3.2 プッシュダウンオートマトン3.3 文脈自由文法とプッシュダウンオートマトン3.4 正規文法と有限オートマトン3.5 文脈自由文法の性質3.6 決定性プッシュダウンオートマトン
形式言語と自然言語
※ 上図写真: http://web.media.mit.edu/~nitin/mideast/chomsky.html
Noam Chomsky
1950 年代に米国の言語学者 N. Chomsky が形式言語理論を提唱。形式文法とそれによって定義される言語を自然言語の数学的モデルとして研究。
構文論syntax
意味論semantics
語用論pragmatics
音韻論phonology
形態論morphology
言語学
文の構造を研究
語の構造を研究 文の意味を研究
文脈における文の意味を研究言葉の発音を研究
She loves Neo
S
NP VP
V NP
PN
P
She loves Neo
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}
語の導出導出の定義
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 は省略することもある
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.7N = {S}, Σ= {0,1,φ,+, ・ ,*,),( }P = {S →φ|0|1|(S+S)|(S ・ S)|S* }
構文木定義
構文木は次のように帰納的に定義される。ここで、 V = N∪S とする。
(1) 各 A∈V に対して、記号 A をラベルとする 1つの頂点のみからなる木
(2) 生成規則 A→ε に対して
A
A
ε
導出の過程を Visualize する道具
定義つづき(3) T1, …, Tn を根のラベルが A1, …, An∈V で
ある構文木とする。G の生成規則 A→A1…An に対して、A を根とする木
(4) 上記 (1) ~ (3) の規則を使って定義される 有限の木のみを構文木という。
構文木(2)
A
A1 An・・・
T1 Tn
構文木の例 例 3.8 ( 例 3.1 の導出木 )
SS
SS
SS
aa aa aa bb bb bb
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)
v = w1v1 w2 v2w3 … wkvkwk+1
*
左側順走査による最左導出とする
① ② k・・・
3.2 プッシュダウンオートマトン 概念図と基本動作
プッシュダウンストア
a1 a2 ai
qq有限制御部
入力テープ
A
B
Z0
A
B
A を push
A を pop
(1) 状態を変える。(2) プッシュダウンストアの トップ記号を他の記号列 で置き換える。(3) 入力ヘッドが記号を読む 場合はヘッドの位置の 記号を取り去る。
プッシュダウンオートマトンの定義定義
プッシュダウンオートマトン (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.3L1,L2∈NPDA ならば L1∪L2∈NPDA である。
証明省略(補題 2.2 と同様に証明できる)
定理 3.4 CFL = NPDA
文脈自由言語のクラスと非決定性プッシュダウンオートマトンによって受理される言語のクラスは一致する。
2 つの補題に分けてこの定理を証明する。 補題 3.5 CFL⊆NPDA 補題 3.6 NPDA⊆CFL
3.3 文脈自由文法と PDA
補題 3.5 CFL⊆NPDA この補題の意味
任意の言語 LCFL について、 LNPDA ( L を受理する npda がある)
証明のアイデアL∈CFL とし、 L⊆Σ* を生成する文脈自由文
法を G = (N,Σ, P, S) とするこの G に対応する npda M をつくり、
L(G) = N(M) となることを示せばよい
NPDA
CFL
補題 3.5 の証明 (1) 言語 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∈Σ)
注:これは、文脈自由文法から等価な PDA を作る手法になる!
補題 3.5 の証明 (2) 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∪Σ)*∪{ε} とする。
入力から u を消費してストアの X を α に変える
*
*
n+1
この最左導出は、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) が成り立つ。
補題 3.5 の証明 (3) n
nX
Av β
γ(xθ)
*
*
*
補題 3.5 の証明 (4) (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 の証明 (5) 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α があることになる。
*
*
*
( m-1 回目の遷移に対応)
補題 3.5 の証明 (6)以上により (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.1G = (N, , P, S) を文脈自由文法とする。導出 u ⇒ v があるならば、 u から v への最左導出がある。
補題 3.1G = (N, , P, S) を文脈自由文法とする。導出 u ⇒ v があるならば、 u から v への最左導出がある。
*
* *
**
例 3.13 文脈自由文法 G = (N, Σ, P, S) を
N = {S} Σ= {a, b} P = {S → aSb, S → ab}
とする。このとき補題 3.5 で構成される npdaの遷移関数 δ は次のようになる
q x Z δ(q, x, Z)
q0 S {(q0, aSb), (q0, ab)}
q0 a a {(q0, )}
q0 b b {(q0, )}
現在の状態 入力ヘッダが見ている記号 ストアのヘッダが見ている記号
補題 3.6 NPDA⊆CFL
この補題の意味任意の言語 LNPDA について、
LCFL ( L を導出する CFL がある)
証明のアイデアL∈NPDA とし、この L を最終状態と空ストア
で受理する npda を M=(K,Σ,Γ,δ, q0, Z0, F) とする
この M に対応する文脈自由文法 G をつくり、 N(M) = L(G) となることを示せばよい
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 から等価な文脈自由文法を作る手法になる!
補題 3.6 の証明 (2) 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 の証明 (3) このとき上の導出は
(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 の証明 (4)
(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 の証明 (5) 各 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 の証明 (6)以上により (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 となることも同様にわかる。 【証明終】
**
**
*
*
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.14
無駄な生成規則が多いよ ( ・∀・ )
以下の補題が証明された補題 3.5 CFL⊆NPDA補題 3.6 NPDA⊆CFL
すなわち
文脈自由言語のクラスと非決定性プッシュダウンオートマトンによって受理される言語のクラスは一致する。(言語を定義する能力が等しい)
3.3 節の結論
定理 3.4
CFL = NPDA
定理 3.4
CFL = NPDA
3.4 正規文法と有限オートマトン
A wB (A, B N, wΣ* )A wA wB (A, B N, wΣ* )A w
右線形文法
A Bw (A, B N, wΣ* )A wA Bw (A, B N, wΣ* )A w
左線形文法
正規文法
例 3.15 右線形文法の例
N = {S, A}P = {S 1A, A 0A, A }
SA
1 0
A
0
A
0
A
例 3.16 左線形文法の例
N = {S}P = {S S0, S 1}
SS
1 0
S
0
S
0
S
0
定理 3.7
定理 3.7 言語 L⊆Σ* に対して、次の (1) - (3) は同値であ
る。(1) L を生成する右線形文法がある。(2) L は有限オートマトンによって受理される。(3) L を生成する左線形文法がある。
正規文法正規文法
有限オートマトン有限オートマトン正規表現正規表現
証明 (1) (2)⇒
N = {S, A}P = {S 1A, A 0A, A }
例 3.15 の場合
S A f1
0
M :
L(M) = L(G) を帰納法を用いて証明する。
証明 (2) (3)⇒
M : q0 q1
1
0 0
1
G = (K,Σ, P, q0 )P = { q0 1q1, q0 0q0,
q1 1q0, q1 0q1,q1 }
L(M) = L(G) を帰納法を用いて証明する。
例: 1 を奇数個含む語を受理するオートマトン
証明 (1) (3); (3) (1)⇒ ⇒
N = {S, A}P = {S 1A, A 0A, A }
S
A
1 0
A
0
A
0
A
N = {S, A}∪{S}P = {S A S1, A A0, S A }
A
1 0
A
0
A
S
SA
0
3.5 文脈自由文法の性質 この節の内容
定理 3.8 ε 生成規則消去定理定理 3.9 鎖生成規則の消去定理定理 3.10 Chomsky 標準形への変形定理 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’ のどの生成規則の
右辺にも現れない.
G に対して、条件に合うような G’ を(天下り的に)定義する。その前準備として、元の G の非終端記号 N のうち
ε を生成するものの集合 Nn を作る。 こうして作った G’ が (2) と (3) を満たすのは明ら
か。
残る (1) L(G’ ) = L(G ) を証明する。 L(G’ ) ⊆ L(G ) を証明 L(G’ ) ⊇ L(G ) を証明
証明の手引き
N Nn
ε を導出する
証明 (1)
証明 N = N∪{S} P は次のとおり
(i) L(G ) ならば S は生成規則(ii) S S は生成規則(iii) A 1 A1 2 ・・・ k Ak k+1 P,
Ai N∪Σ (1 i k), k Nn*ならば、A A1 ・・・ Ak は生成規則
注: αk は ε を導出する
この P’ の作り方が ε 生成規則を省く方法になる
証明 (2) L(G) ⊆ L(G)
(i) から、 L(G ) L(G ) ここで、 SG w (wΣ+) ならば、SG S G w となる導出がある。
L(G) ⊇ L(G) (b) AN∪Σ のとき, AG w, w∈Σ+ ならば
AG w である。 (b) を導出の長さの帰納法によって証明。 (b) より, S G w, w∈Σ+ ならば
S G w となるので、 S G w となる。
*
* *
例 3.17
G = (N,Σ, P, S ) を次の生成規則をもつ文脈自由文法とする。
S AB
A ABAC | B | a
B C | b | C B | c |
ε 生成規則をなくした G’ をつくってみよう
定理 3.9 鎖生成規則の消去定理定理 3.9
文脈自由文法 G = (N,Σ, P, S ) に対して、次の (1)-(3) を満たす文脈自由文法G = (N,Σ, P, S ) を構成できる。(1) ∈L(G ) のときのみ S (2) A ( | | 2, ∈((N∪Σ{S})*)(3) A a ( a )
(4) L(G) = L(G )注: S を右辺に含まないということ
証明の手引き G に対して、条件に合うような G’ を(天下り的
に)定義する。その前準備として、もとの G の非終端記号 N のうち、
鎖生成規則であるような集合 Nn(A) を作る。 こうして作った G’ が (1)- (3) を満たすのは明
らか。
残る (4) L(G’ ) = L(G ) を証明する。 L(G’ ) ⊆ L(G ) を証明 L(G’ ) ⊇ L(G ) を証明
N Nn(A)鎖生成規則
証明 (1)
証明 N, S は同じ P は次のとおり、
P = {A |B∈Nn(A) [B∈P かつ N] }
Nn(A) = {BN | AG B } ( n = |N | )*
証明 (2) L(G) ⊆ L(G)
A P ならば、ある BNn(A) が存在して、AG B G となる。よって AG
ということは、 AG w ならば必ず AG wとなるので、 L(G ) ⊆ L(G ) 。
L(G ) ⊇ L(G )AN, wΣ+ に対して、 AG w ならば AG wこれを導出の長さの帰納法によって証明(略)。これより、 S G w, wΣ+ ならば
S G w となる。よって L(G’)⊇L(G) 。
* * *
* *
t *
*
t
例 3.18
G = (N,Σ, P, S ) を次の生成規則をもつ文脈自由文法とする。
S A A AB | a B C | b C A | c
鎖生成規則をなくした G’ をつくってみよう
Chomsky 標準形定義
G = (N,Σ, P, S ) はその生成規則の形が A BC (A, B, C∈N ) または, A a (A∈N, a∈Σ ) のとき Chomsky標準形であるという。
注: Chomsky標準形は空語 を含まない。
定理 3.10 Chomsky 標準形への変形
定理 3.10文脈自由文法 G = (N,Σ, P, S ) に対して、
L(G ) {} を生成する Chomsky 標準形の文脈自由文法 G = (N,Σ, P, S ) を構成できる。
証明証明
定理 3.9 により、 G の S 以外の生成規則の形は A ( | | 2, ((N∪Σ{S})*) A a ( a ) であるとしてよい。このとき G の生成規則を次のように置き換える。
A X1 X2 X3 X4 X5 ・・・ Xk (Xi (N ){S}, k 2)
Y1 Z1
Z1 Y2 Z2
Z2 Y3 Z3
Zk-2 Yk-1 Yk
・・・ Yi a
Xi a ならば,
例 3.19
G = (N,Σ, P, S ) を次の生成規則をもつ文脈自由文法とする。
S AaAA A a
等価な Chomsky 標準形の G’ をつくってみよう
定理 3.11 挿入定理定理 3.11
G = (N, , P, S ) を文脈自由文法とする。このとき整数 p(G) が存在して、 |z| > p(G) なる任意の z L(G) に対して、 z の分解 z = u v w x yで次の (1)(3) を満たすものが存在する。(1) すべての q 0 に対して、
u vq w xq y L(G) である。(2) v または x である。(3) |v w x| p(G) である。
証明の手引き (天下り的に )適当な p(G) をとる。
|z| > p(G) を満たす z∈L(G) について、z の導出に対応する構文木を解析する。
以上の p(G) 、 z について、 (1)(2)(3) がそれぞれ成り立つことを確かめる。
証明( p(G))
r m 個
m
構文木の枝分かれの最大数は、 r = max{ || | A P }
m 1 に対して、高さ m の構文木は高々 rm 個の葉しかもたないことに注意。
p(G) = r2|N| とおく。
証明( w を導出する構文木) p(G) = r2|N| zL(G) は |z| > p(G) を満たしているとする。 S z を, z を生成する最短の導出と仮定し、
この導出に対応する構文木を T とする。
S
z ( |z| > r2|N| )
2|N|+1以上
*
証明(根から葉への最長パス )
S
z ( |z| > r2|N| )
2|N|+1以上
X1
X2
Xt
a ・・・・・・
・・・
パス : S, X1, X2 , ・・・ , Xt , a
X1 を根とする T の部分木を Ti ( 0 i t + 1 )Ti に属する葉の個数を hi とすると h0 h1 ・・・ ht+1 = 1
Xt+1X0
証明(抽き出し法)h0 h1 ・・・ ht+1 = 1
h0 > r2|N| 1 だから、ある s が存在してhs > r2|N| hs+1
となる。
・・・・・・
・・・
・・・
・・・ ・・・
Ts
Ts+1
hs
hs+1
2|N|+1以上
Xi = Xj = Xk = A(s i < j < k t)Xi = Xj = Xk = A
(s i < j < k t)
証明( (3) |v w x| p(G) )
Xi = Xj = Xk = A(s i < j < k t)Xi = Xj = Xk = A
(s i < j < k t)
・・・・・・
・・・
Xj
Xk
S
u v w x y
|v w x| hj hs+1 r2|N|s i < j だから
S u Xj y
Xj v Xk x
Xk w
S u Xj y
Xj v Xk x
Xk w
*
*
*
証明( (2) v または x )
・・・・・・
・・・
Xj=A
Xk=A
S
u v w x y
v = x = とすると、 A = Xj = Xk であるので、導出 Xj
Xk を短絡させて、より短い導出で z を導出できる。これは、 S z が最短の導出であることに矛盾する。
*
*
S u Xj y
Xj v Xk x
Xk w
S u Xj y
Xj v Xk x
Xk w
*
*
*
証明( (1)q 0 に対して, u vq w xq yL(G))
・・・・・・
・・・
Xj=A
Xk=A
S
u v w x y
q 0 について、 S uAy uvAxy ・・・ uvqAxqy uvqwxqyとなるので、 u vq w xq y L(G)
S u A y
A v A x
A w
S u A y
A v A x
A w
*
*
*
* * * * *
例 3.20
L = {anbncn | n 0} が文脈自由言語でないことを挿入定理を用いて証明せよ。
3.6 決定性プッシュダウンオートマトン DPDA は和集合の演算について閉じていない。
L1 = {anbn | n≧1} と L2 = {anb2n | n≧1} についてL1∪L2 ∈ NPDA は明らか。 (p43 命題 3.3)L1∪L2 DPDA ( 定理 3.13)
よって DPDA≠NPDA 。(系 3.13) 証明(略)