第3章 「文脈自由言語」

Download Report

Transcript 第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
1
0
0
0
A
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 Z3
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
・・・
・ Ts+1
・
・・・・・・・
hs+1
hs
2|N|+1
以上
・・・
証明((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)
 証明(略)
