第3章 「文脈自由言語」

第3章
「文脈自由言語」
3.1 文脈自由文法
3.2 プッシュダウンオートマトン
3.3 文脈自由文法とプッシュダウンオートマトン
3.4 正規文法と有限オートマトン
3.5 文脈自由文法の性質
3.6 決定性プッシュダウンオートマトン
形式言語と自然言語
1950年代に米国の言語学者N. Chomskyが形式言語
理論を提唱。形式文法とそれによって定義される言語
を自然言語の数学的モデルとして研究。
Noam Chomsky
語の構造を研究
文の構造を研究
She loves Neo
文の意味を研究
S
NP
P
言葉の発音を研究
VP
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}

語の導出
導出の定義
V
G は省略することもある
= N∪Σとする。
記号列 u,v∈V* が次を満たすとき u⇒Gv とかく。
(1) u = xAy, v = xαy
(x, y,α∈V*, A∈N)
(2) A →α は G の生成規則
*
 ⇒G の反射的推移閉包を ⇒G とかく。
n
 導出の長さが n の場合、⇒G とかく。
 V* の要素の列 w0, …, wn について、
w0 ⇒G w1 ⇒G ・・・ ⇒G wn のとき、w0 から wn が
導出されるという。
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

例3.7
N
= {S}, Σ= { ), ( }
 P = {S →SS, S →(S), S →()}
N
= {S}, Σ= {0,1,φ,+,・,*,),( }
 P = {S →φ|0|1|(S+S)|(S・S)|S* }
構文木
導出の過程をVisualizeする道具
定義
 構文木は次のように帰納的に定義される。
ここで、V = N∪S とする。
(1) 各A∈Vに対して、記号Aをラベルとする
1つの頂点のみからなる木
A
(2) 生成規則 A→εに対して
A
ε
構文木(2)
定義つづき
(3) T1, …, Tn を根のラベルが A1, …, An∈V である
構文木とする。
G の生成規則 A→A1…An に対して、
Aを根とする木
A
A1
An
・・・
T1
Tn
(4) 上記(1)~(3)の規則を使って定義される
有限の木のみを構文木という。
構文木の例

例3.8 (例3.1の導出木)
S
S
S
a
a
a
b
b
L(G) はどのような言語か?
b
最左導出

最左導出と左側順走査
 導出の各ステップにおいて一番左にある非終端
記号が置き換えられているとき、最左導出という。
* に対する構文木の走査は
 最左導出 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
①
②
・・・
k
v = w1v1 w2 v2w3 … wkvkwk+1
* (1≦i ≦k)
Ai⇒v
i
左側順走査による
最左導出とする
3.2 プッシュダウンオートマトン

概念図と基本動作
(1) 状態を変える。
(2) プッシュダウンストアの
トップ記号を他の記号列
で置き換える。
(3) 入力ヘッドが記号を読む
場合はヘッドの位置の
記号を取り去る。
有限制御部
入力テープ
a1 a2
A を push
A を pop
q
ai
A
B
A
B
Z0
プッシュダウンストア
プッシュダウンオートマトンの定義
定義
 プッシュダウンオートマトン(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 に対して、
* (f,ε,γ)
(q0, w, Z0)├M’
となり、さらにε動作で残りのγを取り除くような動作をする
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
定義
NPDA={L | ある npda M に対して L=L(M)}
 (2) DPDA={L | ある dpda M に対して L=L(M)}
 (1)
命題3.3
 L1,L2∈NPDA
ならば L1∪L2∈NPDA である。
証明
 省略(補題2.2と同様に証明できる)
3.3 文脈自由文法とPDA
定理3.4

CFL = NPDA


文脈自由言語のクラスと非決定性プッシュダウン
オートマトンによって受理される言語のクラスは
一致する。
2つの補題に分けてこの定理を証明する。
補題3.5 CFL⊆NPDA
 補題3.6 NPDA⊆CFL

補題3.5 CFL⊆NPDA


この補題の意味
 任意の言語 LCFL について、
LNPDA (L を受理するnpdaがある)
NPDA
CFL
証明のアイデア
 L∈CFLとし、L⊆Σ* を生成する文脈自由文法をG
= (N,Σ, P, S) とする
 この G に対応する npda M をつくり、
L(G) = N(M) となることを示せばよい
補題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,ε,α) となる。
 まずは
入力から u を消費してストアのXをαに変える
 (a)⇒(b)


(導出の長さについての帰納法)
長さが 0 のときは u =ε, α= X であるので自明。
最左導出の長さが n のとき成立すると仮定する。
このとき長さ n+1の最左導出
n+1
X ⇒ u
をとる。ただし u∈Σ*,α∈(N∪Σ)*∪{ε} とする。
補題3.5の証明 (3)
n
X
v A β
γ
(xθ)
この最左導出は、
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)が成り立つ。
補題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,γβ=αである。
帰納法の仮定により、最左導出
* uAβ
X⇒
が存在する。 A→γ∈P であり、また u∈Σ* だから、
* uAβ⇒ uγβ
X⇒
は最左導出である。
* uαなる最左導出が存在する。
よって X ⇒
補題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β) であるので、帰納法の仮定より最左導出
* vAβ
X⇒
(m-1回目の遷移に対応)
が存在する。すると
* vAβ⇒ vγβ
X⇒
は最左導出である。
*
γβ= xα, vx = u であるので X ⇒ uαがあることになる。
補題3.5の証明 (6)
(a) と (b) が同値であることがわかった。
*
(a) 最左導出 X⇒u
がある。
(b) (q0, u, X)├*(q0, , ) となる。
 以上により
 補題3.1より、G
の導出は最左導出としておいてよいので、
w∈Σ* に対して
* w ⇔ (q , w, S)├ *(q , , )
S⇒
0
0
となる。したがって L(G) = N(M) となる。
命題3.2より L∈NPDA となる。
【証明終】
補題3.1
* vが
G = (N, , P, S) を文脈自由文法とする。導出 u ⇒
あるならば、 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
q0
q0

a
b
S
a
b
{(q0, aSb), (q0, ab)}
{(q0, )}
{(q0, )}
補題3.6 NPDA⊆CFL
この補題の意味
 任意の言語 LNPDA について、
LCFL (L を導出するCFLがある)
 証明のアイデア

 L∈NPDAとし、この
CFL
NPDA
L を最終状態と空ストアで受
理するnpdaを M=(K,Σ,Γ,δ, q0, Z0, F) とする
 この M に対応する文脈自由文法 G をつくり、
N(M) = L(G) となることを示せばよい
補題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) が同値であることを示す。
* x
(a) (q, Z, p) ⇒
(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 以下の導出で
* x
(qi, Zi , qi+1) ⇒
i
となる。 ただし 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 とする。
帰納法の仮定より
* y
(qi, Zi, qi+1) ⇒
(1≦i≦k)
i
となる。 (ii)より
(q, Z, p) ⇒ a(q1, Z1, q2) ・・・ (qk, Zk, p )
だから
(q, Z, p) ⇒ a(q1, Z1, q2 ) ・・・ (qk, Zk, p )
* ay ・・・ y
⇒
1
k
* x となる。
となる。 よって (q, Z, p) ⇒
補題3.6の証明 (6)
(a) と (b) が同値であることがわかった。
* x
(a) (q, Z, p) ⇒
(b) (q, x, Z)├* (p,ε,ε)
 以上により
* ならば (i) により、
x∈Σ* に対して S ⇒x
ある状態 p∈F が存在して、S ⇒ (q0, Z0 , p) ⇒*x となる。
したがって
(q0, x, Z0)├ * (p,ε,ε)
となり、 x は M によって受理される。
逆に x が M によって受理されれば、
* x となることも同様にわかる。
S⇒
【証明終】
 そこで
例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w
(A, B  N, wΣ* )
左線形文法
A  Bw
Aw
(A, B  N, wΣ* )
例3.15 右線形文法の例
N = {S, A}
P = {S  1A, A  0A, A  }
S
A
A
A
A
1
0
0
0

例3.16 左線形文法の例
N = {S}
P = {S  S0, S  1}
S
S
S
S
S
1
0
0
0
0
定理3.7
定理3.7
言語 L⊆Σ* に対して、次の (1)-(3) は同値である。
(1) L を生成する右線形文法がある。
(2) L は有限オートマトンによって受理される。
(3) L を生成する左線形文法がある。

正規文法
正規表現
有限オートマトン
証明 (1)⇒(2)
例3.15 の場合
N = {S, A}
P = {S  1A, A  0A, A  }
M:
S
1
A

f
0
L(M) = L(G) を帰納法を用いて証明する。
証明 (2)⇒(3)
例: 1 を奇数個含む語を受理するオートマトン
M:
q0
0
1
1
q1
0
G = (K,Σ, P, q0 )
P = { q0  1q1, q0  0q0,
q1  1q0, q1  0q1,
q1   }
L(M) = L(G) を帰納法を用いて証明する。
証明 (1)⇒(3); (3)⇒(1)
N = {S, A}
P = {S  1A, A  0A,
A  }
S
A
A
N = {S, A}∪{S}
P = {S  
A  S1, A  A0,
S
S A }
A
A
A
A
A
1
0
0
0
A
S


1
0
0
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 は次のとおり この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 はεを導出する
証明 (2)

L(G) ⊆ L(G)


(i) から、 L(G )  L(G )
*
ここで、S
(wΣ+) ならば、
G w
* S
*
S
G
G w となる導出がある。
L(G) ⊇ L(G)



(b) AN∪Σのとき,AG w, w∈Σ+ ならば
AG 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∈N (A) [B∈P かつ N] }
n

* B}
Nn(A) = {BN | A
G
( n = |N | )
証明 (2)

L(G) ⊆ L(G)
 A
P ならば、ある BNn(A) が存在して、
* B
*  となる。よって A
* 
A
G
G
G
*
*
 ということは、 A
G w ならば必ず AG w
となるので、L(G ) ⊆ L(G ) 。

L(G ) ⊇ L(G )
 AN,
wΣ+
t
に対して、AG w ならば A*G w
 これを導出の長さの帰納法によって証明(略)。
t
 これより、S G w, wΣ+ ならば
* w となる。よって L(G’)⊇L(G) 。
S
G
例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 ) を構成できる。
 文脈自由文法
証明
証明
の S   以外の生成規則の形は
A  ( | |  2,   ((N∪Σ{S})*)
A a
( a  )
であるとしてよい。
このとき G の生成規則を次のように置き換える。
 定理3.9により、G
A X1 X2 X3 X4 X5 ・・・ Xk
Y1
Z1
Z2
Z1  Y2
Y3 Z 3
Z2 
Zk-2 
・
・
・ Y Y
k-1 k
(Xi  (N  ){S}, k  2)
Xi  a ならば,
Yi  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=uvwxy
で次の (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 = max{ || | A P }
m  1 に対して、高さ m の構文木は
高々 rm 個の葉しかもたないことに注意。
p(G) = r2|N| とおく。
m
rm個
証明(wを導出する構文木)
p(G) = r2|N|
 zL(G) は |z| > p(G) を満たしているとする。
* z を,z を生成する最短の導出と仮定し、
S 
この導出に対応する構文木を T とする。

S
2|N|+1
以上
z
( |z| > r2|N| )
証明(根から葉への最長パス )
S パス  : S, X1, X2 , ・・・ , Xt , a
X0
Xt+1
X1
X2
2|N|+1
以上
・
・
・
Xt
・・・
a
・・・
z ( |z| > r2|N| )
X1 を根とする T の部分木を Ti ( 0  i  t + 1 )
Ti に属する葉の個数を hi とすると
h0  h1  ・・・  ht+1 = 1
証明(抽き出し法)
h0 > r2|N|
h0  h1  ・・・  ht+1 = 1
 1 だから、ある s が存在して
hs > r2|N|  hs+1
となる。
Xi = Xj = X k = A
(s  i < j < k  t)
・
・
・
Ts
・・・
・・・
・
・
・
2|N|+1
以上
Ts+1
・・・
・・・
hs+1
hs
証明((3) |v w x|  p(G) )
Xi = Xj = X k = A
(s  i < j < k  t)
* uX y
S 
j
* vX x
Xj 
k
* w
Xk 
S
Xj
・
・
・
Xk
・・・
u
v
・・・
w
x
s  i < j だから
|v w x|  hj  hs+1  r2|N|
y
証明((2) v   または x   )
S
* uX y
S 
j
* vX x
Xj 
k
* w
Xk 
Xj=A
・
・
・
Xk=A
・・・
u
v
・・・
w
x
y
* X
v = x =  とすると、A = Xj = Xk であるので、導出Xj 
k
を短絡させて、より短い導出で z を導出できる。
* z が最短の導出であることに矛盾する。
これは、S 
証明((1)q  0 に対して,u vq w xq yL(G))
S
* uAy
S 
* vAx
A 
* w
A 
Xj=A
・
・
・
Xk=A
・・・
u
q
v
・・・
w
x
y
 0 について、
* uvAxy 
* uvqwxqy
* uAy 
* ・・・ 
* uvqAxqy 
S
となるので、u vq w xq y  L(G)
例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)
 証明(略)
