第 3 章
「文脈自由言語」
3.1
文脈自由文法3.2
プッシュダウンオートマトン3.3
文脈自由文法とプッシュダウンオートマ トン3.4
正規文法と有限オートマトン3.5
文脈自由文法の性質形式言語と自然言語
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*
の要素の列w
0, …, w
n について、w
0⇒
Gw
1⇒
G ・・・ ⇒ Gw
n のとき、w
0 からw
が導出されるという。n
*
G は省略することもある
G が生成する語、言語
開始記号 S より w Σ* ∈ が G の生成規則に よって導出されるとき、 w は G の生成する語 とよばれる。また G の生成する言語を
L(G) = { w Σ* | S ∈ ⇒
Gw}
と書く。
言語 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* }
構文木
定義
構文木は次のように帰納的に定義される。ここで、
V = N S ∪
とする。(1)
各A V ∈
に対して、記号A
をラベルとする 1つの頂点のみからなる木(2)
生成規則A→ε
に対してA
A ε
導出の過程を Visualize する道具
定義つづき
(3) T
1, …, T
nを根のラベルが A
1, …, A
n∈ で V ある構文木とする。
G の生成規則 A A →
1…A
nに対して、
A を根とする木
(4) 上記 (1) ~ (3) の規則を使って定義される 有限の木のみを構文木という。
構文木(2)
A
A
1・・・ A
nT
1T
n構文木の例
例 3.8 ( 例 3.1 の導出木 )
S S S S S S
a a a a a a b b b 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 = w
1A
1w
2… w
kA
kw
k+1(A
i∈ N, w
j∈ Σ*) とする。
v = w
1A
1w
2A
2w
3… w
kA
kw
k+1A
i⇒ v
i(1 i k) ≦ ≦ v = w
1v
1w
2v
2w
3… w
kv
kw
k+1*
左側順走査による 最左導出とする
① ②
・・・ k3.2 プッシュダウンオートマト ン 概念図と基本動作
プッシュダウンストア
a
1a
2a
iq q
有限制御部
入力テープ
A B Z
0A B A
をpush
A
をpop
(1)
状態を変える。(2)
プッシュダウンストア の トップ記号を他の記号 列 で置き換える。(3)
入力ヘッドが記号を読 む 場合はヘッドの位置の 記号を取り去る。プッシュダウンオートマトンの 定義 定義
プッシュダウンオートマトン (pda) は7つ組 M=(K, Σ,Γ,δ, q
0, Z
0, F)
によって定義される。
K :
状態とよばれる空でない有限集合。
Σ:
入力アルファベット
Γ:
プッシュダウンストアのアルファベット
q
0:
初期状態q
0∈K
F :
最終状態F K
⊆
Z
0:
プッシュダウンストアの初期記号Z
0∈Γ
δ :
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
に対して、(q
0, w, Z
0) ├
M’(f,ε,γ)
となり、さらに
ε
動作で残りのγ
を取り除くような動作をするM’
を考えればよい。 (2)→(1)
上と似たやり方で、今度は逆に
M’
からM
を構成する。*
決定性 PDA と非決定性 PDA
決定性と非決定性
非決定性プッシュダウンオートマトン
計算状況に対して一意に次の計算状況が決まらない。
決定性プッシュダウンオートマトン
任意の計算状況に対して次の計算状況が一意に決まる。
決定性 PDA の定義
PDA M=(K,Σ,Γ,δ,q
0,Z
0,F) は、次の (1)(2)
の条件を満 たすとき決定性であるという。(1) |δ(q, a, Z)| 1
≦(a Σ {ε})
∈ ∪(2) δ(q,ε,Z) ≠φ
ならば、全てのa Σ
∈ に対してδ(q,a,Z)=φ
(2) が無いと、入力語を消費する前に ε 動作をするため、非決定的な動作になる。
決定性 PDA と非決定性 PDA の 違い
非決定性 PDA の場合は命題 3.2 が成り立つ
決定性 PDA の場合は成り立たない
決定性
PDA
がε
を最終状態と空ストアによって受理 するならば一意に(q
0,ε,Z
0)├
M(q,ε,ε) (q F)
∈となる。するとどんな入力に対しても
(q
0, x, Z
0)├
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
L
1,L
2∈NPDA
ならばL
1∪L
2∈NPDA
である。証明
省略(補題 2.2 と同様に証明できる)定理 3.4
CFL = NPDA
文脈自由言語のクラスと非決定性プッシュダウン オートマトンによって受理される言語のクラスは 一致する。
2 つの補題に分けてこの定理を証明する。
補題
3.5 CFL⊆NPDA
補題
3.6 NPDA⊆CFL
3.3 文脈自由文法と PDA
補題 3.5 CFL ⊆ NPDA
この補題の意味
任意の言語 L CFL について、
L NPDA
(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, Σ,Γ,δ, q
0, Z
0, F)
を(天下り的に)定義
K = {q
0}
Γ= N Σ
∪
q
0 が初期状態
S N
∈ が初期記号Z
0
F = {q
0}
遷移関係
は次のように与えられる。(i)δ(q
0,ε, A) = {(q
0,α) | A α P}
→ ∈(ii)δ(q
0, a, a) = {(q
0,ε)} (
ただしa Σ)
∈注:これは、文脈自由文法から等価な
PDA
を作る手法になる!補題 3.5 の証明 (2)
L(G) = N(M) を証明するぞ!
まずは
X N, u Σ*,
∈ ∈
∈N(N Σ)* {ε}
∪ ∪ とするとき次の
(a) (b)
が同値であることを示す。(a)
最左導出X uα
⇒ がある。(b) (q
0, u, X) (q
├ 0,ε,α)
となる。
(a) (b)
⇒ (導出の長さについての帰納法) 長さが
0
のときはu =ε, α= X
であるので自明。 最左導出の長さが
n
のとき成立すると仮定する。このとき長さ
n+1
の最左導出X u
⇒ をとる。ただし
u Σ*,α (N Σ)* {ε}
∈ ∈ ∪ ∪ とする。入力から u を消費してストアの X を α に変える
*
*
n+1
この最左導出は、
X v
⇒Aβ vγβ
⇒(
ただしv Σ*, A γ P)
∈ → ∈のように、長さ
n
の最左導出と、長さ1
の最左導出に分 解できる。ここでu = vx, x Σ*,γβ= xα
∈ と書ける。帰納法 の仮定より(q
0, v, X) (q
├ 0,ε, Aβ)
となる。したがって(q
0, vx, X) (q
├ 0, x, A)
(q
├ 0, x, x )
((i)
の遷移と = x
に よる)├
(q
0, , )
((ii)
の遷移による)このようにして
(q
0, u, X) (q
├ 0, , )
となる。よって
(a) (b)
⇒ が成り立つ。補題 3.5
nの証明 (3)
X
nA
v β
(xθ) γ
*
*
*
補題 3.5 の証明 (4)
(b) (a)
⇒ の証明 計算のステップ数についての帰納法で証明する。
ステップ数が 0 の場合は自明。
ステップ数が n 以下のとき成立すると仮定する。長さ n+1 の計 算 (q0, u0, a0) ├ ・・・├ (q0, un,an) (q├ 0, un+1,an+1)
をとる。ただし u0 = u, un+1 =ε, a0 = X, an +1 = a とする。
n+1 番目のステップで (i) の遷移( ε 動作)が使われている場合:
上の計算は
(q0, u, X)├n (q0,ε, Aβ) (q├ 0,ε,γβ)
と分解できる。ただし 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)
の遷移が適応されている。 すると、計算
(q
0, u, X)├
n+1(q
0,ε,α)
は (u = vx とおくと )(q
0, vx, X)├
m-2(q
0, x, Aβ )
(q
├ 0, x,γβ)
( m-1 回目の遷移は (i) の遷移)├ n-m+2
(q
0,ε,α)
(残りはすべて (ii) の遷移)と分解できる。また
(q
0, vx, X)├
m-2(q
0, x, Aβ)
ならば(q
0, v, X)├
m-2(q
0,ε, Aβ)
であるので、帰納法の仮定より最左導出X vAβ
⇒が存在する。すると
X vAβ vγβ
⇒ ⇒ は最左導出である。*
* ( m-1 回目の遷移に対応)
補題 3.5 の証明 (6)
以上により
(a)
と(b)
が同値であることがわかった。(a)
最左導出X u
⇒
がある。(b) (q
0, u, X) (q
├ 0, , )
となる。 補題
3.1
より、G
の導出は最左導出としておいてよいの で、w Σ*
∈ に対してS w (q
⇒ ⇔ 0, w, S) (q
├ 0, , )
となる。したがって
L(G) = N(M)
となる。命題
3.2
よりL NPDA
∈ となる。 【証明終】補題
3.1
G = (N, , P, S)
を文脈自由文法とする。導出u v ⇒
が あるならば、u
からv
への最左導出がある。補題
3.1
G = (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)
q
0 S {(q
0, aSb), (q
0, ab)}
q
0a a {(q
0, )}
q b b {(q , )}
現在の状態 入力ヘッダが見ている記号 ストアのヘッダが見ている記号
補題 3.6 NPDA CFL ⊆
この補題の意味
任意の言語L NPDA
について、L CFL
(L
を導出するCFL
がある) 証明のアイデア
L NPDA
∈ とし、このL
を最終状態と空ストアで受理する
npda
をM=(K,Σ,Γ,δ, q
0, Z
0, 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 (q
→ 0, Z
0, p)
は生成規則であ る。(ii) (p, Z
1・・・Z
k) δ(q, a, Z) (k
∈ ≧1, a S {ε})
∈ ∪ のとき 任意のq
1, q
2, …,q
k∈ に対してK
(q, Z, q
k) a(p, Z
→ 1, q
1)(q
1, Z
2, q
2)
・・・(q
k-1, Z
k, q
k)
は生成規則である(iii) (p,ε) δ(q, a, Z) (a S {ε})
∈ ∈ ∪ のとき(q, Z, p) a
→ は生成規則補題 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(q
⇒ 1, Z
1, q
2)(q
2, Z
2, q
3)
・・・(q
k, Z
k, p)
⇒x
と書ける。ただし(q
1, Z
1・・・Z
k) d (q, a, Z)
∈ である。すると、
x = ax
1・・・x
k(x
i∈Σ*)
と書けて、各i (1 i k)
≦ ≦ に 対して、長さn
以下の導出で(q
i, Z
i, q
i+1) x
⇒ iとなる。 ただし
q
k+1= p
とする。帰納法の仮定より
(q
i, x
i, Z
i) (q
├ i+1,ε,ε) (1 i k)
≦ ≦ となる。このとき(q
i, x
i, Z
i) (q
├ 1, x
1・・・x
k, Z
1・・・Z
k) (q
├ 2, x
2・・・x
k, Z
2・・・Z
k)
├ ・・・
(q
k, x
k, Z
k) (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, Z
├ 1・・・Z
k) ├
n(p,ε,ε)
となる。ここで
x = ay, a Σ {ε}
∈ ∪ であり、(r, Z
・・・Z ) δ(q, a, Z)
∈ である。補題 3.6 の証明 (5)
各 Zi はいずれポップされるので、
分解 y = y1・・・ yk (yi∈Σ*, 1 i k) ≦ ≦ と状態 q1・・・ qk が存在して
、
各 i (1 i k) ≦ ≦ に対して、 n 以下のステップ数で (qi, yi, Zi ) (q├ i+1,ε,ε)
となる。ただし q1 = r , qk+1 = p とする。
帰納法の仮定より
(qi, Zi, qi+1) y⇒ i (1 i k)≦ ≦ となる。 (ii) より
(q, Z, p) a(q⇒ 1, Z1, q2) ・・・ (qk, Zk, p ) だから
(q, Z, p) a(q⇒ 1, Z1, q2 ) ・・・ (qk, Zk, p ) ay⇒ 1・・・ 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 (q
⇒ 0, Z
0, p) x
⇒ と なる。したがって
(q
0, x, Z
0) (p,ε,ε)
├となり、
x
はM
によって受理される。逆に
x
がM
によって受理されれば、S x
⇒ となることも同様にわかる。 【証明終】*
*
*
*
*
*
M = (K,Σ,Γ,δ, q
0, Z
0, F)
を言語{a
nb
n| n
≧1}
を最終状態と空ストア で受理する例3.12
のnpda
とする。このとき補題3.6
で構成され る文脈自由文法G=(N, S, P, S)
は次のようになる。N = {q
0, q
1}×{A, Z
0}×{q
0, q
1} {S}
∪P
の生成規則は次のとおり。S (q
→ 0, Z
0, q
1)
(q
0, Z
0, q
0) a(q
→ 0, A, q
0) (q
0, Z
0, q
1) a(q
→ 0, A, q
1)
(q
0, A, q
0) a(q
→ 0, A, q
0) (q
0, A, q
0) (q
0, A, q
0) a(q
→ 0, A, q
1) (q
1, A, q
0) (q
0, A, q
1) a(q
→ 0, A, q
0) (q
0, A, q
1) (q
0, A, q
1) a(q
→ 0, A, q
1) (q
1, A, q
1) (q
0, A, q
1) 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 w
A wB (A, B N, w Σ* ) A w
右線形文法
A Bw (A, B N, w Σ* ) A w
A Bw (A, B N, w Σ* ) A w
左線形文法 正規文法
例 3.15 右線形文法の例
N = {S, A}
P = {S 1A, A 0A, A } S
A
1 0
A
0
A
0
A
例 3.16 左線形文法の例
N = {S}
P = {S S0, S 1}
S S
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 1 A f
0
M :
L(M) = L(G) を帰納法を用いて証明する。
証明 (2) (3) ⇒
M : q
0
1 q
10 0
1
G = (K,Σ, P, q
0)
P = { q
0 1q
1, q
0 0q
0, q
1 1q
0, q
1 0q
1, q
1 }
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
S
A
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
のうちε
を生成するものの集合N
n を作る。 こうして作った
G’
が(2)
と(3)
を満たすのは明ら か。 残る (1) L(G’ ) = L(G ) を証明する。
L(G’ ) L(G )
⊆ を証明
L(G’ ) L(G )
⊇ を証明証明の手引き
N N
nε
を導出する証明 (1)
証明
N = N {S ∪ }
P
は次のとおり(i) L(G )
ならばS
は生成規則(ii) S S
は生成規則(iii) A
1A
1
2 ・・・
kA
k
k+1 P,
A
i N Σ ∪ (1 i k),
k N
n*
ならば、 A A
1 ・・・A
k は生成規則この
P’
の作り方がε
生成規則を省く方法になる証明 (2)
L(G ) L(G) ⊆
(i)
から、 L(G ) L(G )
ここで、
S
Gw (w Σ
+)
ならば、S
GS
Gw
となる導出がある。 L(G ) L(G)
⊇
(b) A N Σ
∪ のとき,A
Gw, w Σ
∈ + ならばA
Gw
である。
(b)
を導出の長さの帰納法によって証明。
(b)
より,S
Gw, w Σ
∈ + ならばS
Gw
となるので、S
Gw
となる。*
* *
例 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
のうち、鎖生成規則であるような集合
N
n(A)
を作る。 こうして作った
G’
が (1) - (3) を満たすのは明 らか。 残る (4) L(G’ ) = L(G ) を証明する。
L(G’ ) L(G )
⊆ を証明
L(G’ ) L(G )
⊇ を証明N N
n(A)
鎖生成規則
証明 (1)
証明
N, S は同じ
P は次のとおり、
P = {A |
B N ∈
n(A) [B ∈P かつ N] }
N
n(A) = {B N | A *
GB } ( n = |N | )
証明 (2)
L(G ) L(G) ⊆
A P
ならば、あるB N
n(A)
が存在して、A
GB
G
となる。よってA
G
ということは、A
Gw
ならば必ずA
Gw
となるので、L(G ) L(G )
⊆ 。 L(G ) L(G ) ⊇
A N, w Σ
+ に対して、A
Gw
ならばA
Gw
これを導出の長さの帰納法によって証明(略)。
これより、S
Gw, w Σ
+ ならばS
Gw
となる。よって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 X
1X
2X
3X
4X
5 ・・・X
k(X
i (N ) {S}, k 2)
Y
1Z
1Z
1 Y
2Z
2Z
2 Y
3Z
3・
・
・
Y
i a
X
i 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 v
qw x
qy 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 の構文木は
高々 r
m個の葉しかもたないことに注意。
p(G) = r
2|N|とおく。
証明( w を導出する構文木)
p(G) = r
2|N| z L(G) は |z| > p(G) を満たしているとする。
S z を, z を生成する最短の導出と仮定し、
この導出に対応する構文木を T とする。
S
z ( |z| > r
2|N|) 2|N|+1
以上
*
証明(根から葉への最長パス
)
S
z ( |z| > r
2|N|) 2|N|+1
以上
X
1X
2X
ta
・・・・・・
・
・
・
パス
: S, X
1, X
2,
・・・, X
t, a
X
1 を根とするT
の部分木をT
i( 0 i t + 1 ) T
i に属する葉の個数をh
i とするとX
t+1X
0証明(抽き出し法)
h
0 h
1 ・・・ h
t+1= 1
h
0> r
2|N| 1 だから、ある s が存在して h
s> r
2|N| h
s+1となる。
・・・
・・・
・
・
・
・
・
・
・・・ ・・・
T
sT
s+1h h
s+12|N|+1
以上X
i= X
j= X
k= A (s i < j < k t)
X
i= X
j= X
k= A
(s i < j < k t)
証明( (3) |v w x| p(G) )
X
i= X
j= X
k= A (s i < j < k t)
X
i= X
j= X
k= A (s i < j < k t)
・・・
・・・
・
・
・
X
jX
kS
u v w x y
s i < j
だからS u X
jy X
j v X
kx X
k w
S u X
jy X
j v X
kx X
k w
*
*
*
証明( (2) v または x )
・・・
・・・
・
・
・
X
j=A X
k=A S
u v w x y
v = x =
とすると、A = X
j= X
k であるので、導出X
j X
k を短絡させて、より短い導出でz
を導出でき る。これは、S z
が最短の導出であることに矛盾する。
*
*
S u X
jy X
j v X
kx X
k w
S u X
jy X
j v X
kx X
k w
*
*
*
証明( (1)
q 0 に対して, u v
qw x
qy L(G) )
・・・
・・・
・
・
・
X
j=A X
k=A S
u v w x y
q 0
について、S uAy uvAxy
・・・ uv
qAx
qy uv
qwx
qy u v w x y L(G)
S u A y A v A x A w
S u A y A v A x A w
*
*
*