71
第3第 第第第第第第第 「」 3.1 第第第第第第 3.2 第第第第第第第第第第第第第 3.3 第第第第第第第第第第第第第第第第第第第第 3.4 第第第第第第第第第第第第第 3.5 第第第第第第第第第 3.6 第第第第第第第第第第第第第第第第

第 3 章 「文脈自由言語」

  • Upload
    chad

  • View
    47

  • Download
    0

Embed Size (px)

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 Presentation

Citation preview

Page 1: 第 3 章 「文脈自由言語」

第 3 章「文脈自由言語」3.1 文脈自由文法3.2 プッシュダウンオートマトン3.3 文脈自由文法とプッシュダウンオートマトン3.4 正規文法と有限オートマトン3.5 文脈自由文法の性質3.6 決定性プッシュダウンオートマトン

Page 2: 第 3 章 「文脈自由言語」

形式言語と自然言語

※ 上図写真: 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

Page 3: 第 3 章 「文脈自由言語」

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 と書くこともある。

Page 4: 第 3 章 「文脈自由言語」

 文脈自由文法の例 例 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}

Page 5: 第 3 章 「文脈自由言語」

 語の導出導出の定義

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 は省略することもある

Page 6: 第 3 章 「文脈自由言語」

  G が生成する語、言語 開始記号 S より w∈Σ* が G の生成規則に

よって導出されるとき、 w は G の生成する語とよばれる。また G の生成する言語を

L(G) = { w∈Σ* | S⇒G w}と書く。

言語 L⊆Σ* に対して L = L(G) となるとき、G は L を生成するという。

Σ 上の言語 L⊆S* に対して、L を生成する文脈自由文法が存在するとき、L は文脈自由言語とよばれる。

Page 7: 第 3 章 「文脈自由言語」

 文脈自由言語と CFL

CFL の定義文脈自由言語のクラスを CFL と書くことにす

る。すなわち、

CFL = { L | L = L(G) となる文脈自由文法 G

がある }

と定義する。

集合の集合(族)

Page 8: 第 3 章 「文脈自由言語」

 導出の例 例 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* }

Page 9: 第 3 章 「文脈自由言語」

 構文木定義

構文木は次のように帰納的に定義される。ここで、 V = N∪S とする。

(1) 各 A∈V に対して、記号 A をラベルとする 1つの頂点のみからなる木

(2) 生成規則 A→ε に対して

A

A

ε

導出の過程を Visualize する道具

Page 10: 第 3 章 「文脈自由言語」

定義つづき(3) T1, …, Tn を根のラベルが A1, …, An∈V で

ある構文木とする。G の生成規則 A→A1…An に対して、A を根とする木

(4) 上記 (1) ~ (3) の規則を使って定義される 有限の木のみを構文木という。

 構文木(2)

A

A1 An・・・

T1 Tn

Page 11: 第 3 章 「文脈自由言語」

 構文木の例 例 3.8 ( 例 3.1 の導出木 )

SS

SS

SS

aa aa aa bb bb bb

L(G) はどのような言語か?

Page 12: 第 3 章 「文脈自由言語」

 最左導出 最左導出と左側順走査

導出の各ステップにおいて一番左にある非終端記号が置き換えられているとき、最左導出という。

最左導出 A⇒u に対する構文木の走査は左側順走査となる。

例 3.9 ( 例 3.6 の最左導出 )練習: 語 (())(()()) を最左導出する過程は?

*

Page 13: 第 3 章 「文脈自由言語」

 補題 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・・・

Page 14: 第 3 章 「文脈自由言語」

3.2 プッシュダウンオートマトン 概念図と基本動作

プッシュダウンストア

a1 a2 ai

qq有限制御部

入力テープ

A

B

Z0

A

B

A を push

A を pop

(1) 状態を変える。(2) プッシュダウンストアの  トップ記号を他の記号列  で置き換える。(3) 入力ヘッドが記号を読む  場合はヘッドの位置の  記号を取り去る。

Page 15: 第 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) と書く

δ を遷移関数とよび、 δ の要素を遷移とよぶ。

非決定的な定義であることに注

非決定的な定義であることに注

Page 16: 第 3 章 「文脈自由言語」

  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)

*

Page 17: 第 3 章 「文脈自由言語」

 命題 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 を構成する。

*

Page 18: 第 3 章 「文脈自由言語」

 決定性 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) が無いと、入力語を消費する前に ε 動作をするため、非決定的な動作になる。

Page 19: 第 3 章 「文脈自由言語」

 決定性 PDA と非決定性 PDA の違い 非決定性 PDA の場合は命題 3.2 が成り立つ 決定性 PDA の場合は成り立たない

決定性 PDA が ε を最終状態と空ストアによって受理するならば一意に

(q0,ε,Z0)├M (q,ε,ε) (q∈F)となる。するとどんな入力に対しても

(q0, x, Z0)├M (q, x,ε)となり、入力 x が読み込まれずに停止する。したがって、 ε N(M) N(M)={ε} ∈ ⇒ となる。

*

*

Page 20: 第 3 章 「文脈自由言語」

 クラス 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 と同様に証明できる)

Page 21: 第 3 章 「文脈自由言語」

定理 3.4 CFL = NPDA

文脈自由言語のクラスと非決定性プッシュダウンオートマトンによって受理される言語のクラスは一致する。

2 つの補題に分けてこの定理を証明する。 補題 3.5 CFL⊆NPDA 補題 3.6 NPDA⊆CFL

3.3 文脈自由文法と PDA

Page 22: 第 3 章 「文脈自由言語」

 補題 3.5 CFL⊆NPDA この補題の意味

任意の言語 LCFL について、 LNPDA ( L を受理する npda がある)

証明のアイデアL∈CFL とし、 L⊆Σ* を生成する文脈自由文

法を G = (N,Σ, P, S) とするこの G に対応する npda M をつくり、

L(G) = N(M) となることを示せばよい

NPDA

CFL

Page 23: 第 3 章 「文脈自由言語」

 補題 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 を作る手法になる!

Page 24: 第 3 章 「文脈自由言語」

 補題 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

Page 25: 第 3 章 「文脈自由言語」

この最左導出は、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θ)

*

*

*

Page 26: 第 3 章 「文脈自由言語」

 補題 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α なる最左導出が存在する。

*

*

*

Page 27: 第 3 章 「文脈自由言語」

 補題 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 回目の遷移に対応)

Page 28: 第 3 章 「文脈自由言語」

 補題 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 への最左導出がある。

*

* *

**

Page 29: 第 3 章 「文脈自由言語」

 例 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, )}

現在の状態 入力ヘッダが見ている記号 ストアのヘッダが見ている記号

Page 30: 第 3 章 「文脈自由言語」

 補題 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

Page 31: 第 3 章 「文脈自由言語」

 補題 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 から等価な文脈自由文法を作る手法になる!

Page 32: 第 3 章 「文脈自由言語」

 補題 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) の形のものである。

*

*

Page 33: 第 3 章 「文脈自由言語」

 補題 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,ε,ε)

となる。

*

*

*

**

Page 34: 第 3 章 「文脈自由言語」

 補題 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) である。

Page 35: 第 3 章 「文脈自由言語」

 補題 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 となる。

*

*

*

*

Page 36: 第 3 章 「文脈自由言語」

 補題 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 となることも同様にわかる。 【証明終】

**

**

*

*

Page 37: 第 3 章 「文脈自由言語」

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

無駄な生成規則が多いよ ( ・∀・ )

Page 38: 第 3 章 「文脈自由言語」

以下の補題が証明された補題 3.5 CFL⊆NPDA補題 3.6 NPDA⊆CFL

すなわち

文脈自由言語のクラスと非決定性プッシュダウンオートマトンによって受理される言語のクラスは一致する。(言語を定義する能力が等しい)

  3.3 節の結論

定理 3.4

CFL = NPDA

定理 3.4

CFL = NPDA

Page 39: 第 3 章 「文脈自由言語」

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

左線形文法

正規文法

Page 40: 第 3 章 「文脈自由言語」

 例 3.15 右線形文法の例

N = {S, A}P = {S 1A, A 0A, A }

SA

1 0

A

0

A

0

A

Page 41: 第 3 章 「文脈自由言語」

 例 3.16 左線形文法の例

N = {S}P = {S S0, S 1}

SS

1 0

S

0

S

0

S

0

Page 42: 第 3 章 「文脈自由言語」

 定理 3.7

定理 3.7 言語 L⊆Σ* に対して、次の (1) - (3) は同値であ

る。(1) L を生成する右線形文法がある。(2) L は有限オートマトンによって受理される。(3) L を生成する左線形文法がある。

正規文法正規文法

有限オートマトン有限オートマトン正規表現正規表現

Page 43: 第 3 章 「文脈自由言語」

 証明 (1) (2)⇒

N = {S, A}P = {S 1A, A 0A, A }

例 3.15 の場合

S A f1

0

M :

L(M) = L(G) を帰納法を用いて証明する。

Page 44: 第 3 章 「文脈自由言語」

 証明 (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 を奇数個含む語を受理するオートマトン

Page 45: 第 3 章 「文脈自由言語」

 証明 (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

Page 46: 第 3 章 「文脈自由言語」

3.5 文脈自由文法の性質 この節の内容

定理 3.8    ε 生成規則消去定理定理 3.9   鎖生成規則の消去定理定理 3.10   Chomsky 標準形への変形定理 3.11  挿入定理

Page 47: 第 3 章 「文脈自由言語」

 定理 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’ のどの生成規則の

  右辺にも現れない.

Page 48: 第 3 章 「文脈自由言語」

G に対して、条件に合うような G’ を(天下り的に)定義する。その前準備として、元の G の非終端記号 N のうち

ε を生成するものの集合 Nn を作る。 こうして作った G’ が (2) と (3) を満たすのは明ら

か。

残る (1) L(G’ ) = L(G ) を証明する。 L(G’ ) ⊆ L(G ) を証明 L(G’ ) ⊇ L(G ) を証明

 証明の手引き

N Nn

ε を導出する

Page 49: 第 3 章 「文脈自由言語」

 証明 (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’ の作り方が ε 生成規則を省く方法になる

Page 50: 第 3 章 「文脈自由言語」

 証明 (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 となる。

*

* *

Page 51: 第 3 章 「文脈自由言語」

 例 3.17

G = (N,Σ, P, S ) を次の生成規則をもつ文脈自由文法とする。

S AB

A ABAC | B | a

B C | b | C B | c |

ε 生成規則をなくした G’ をつくってみよう

Page 52: 第 3 章 「文脈自由言語」

 定理 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 を右辺に含まないということ

Page 53: 第 3 章 「文脈自由言語」

 証明の手引き 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)鎖生成規則

Page 54: 第 3 章 「文脈自由言語」

 証明 (1)

証明 N, S は同じ P は次のとおり、

P = {A |B∈Nn(A) [B∈P かつ N] }

Nn(A) = {BN | AG B } ( n = |N | )*

Page 55: 第 3 章 「文脈自由言語」

 証明 (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

Page 56: 第 3 章 「文脈自由言語」

 例 3.18

G = (N,Σ, P, S ) を次の生成規則をもつ文脈自由文法とする。

S A A AB | a B C | b C A | c

鎖生成規則をなくした G’ をつくってみよう

Page 57: 第 3 章 「文脈自由言語」

  Chomsky 標準形定義

G = (N,Σ, P, S ) はその生成規則の形が A BC (A, B, C∈N ) または, A a (A∈N, a∈Σ ) のとき Chomsky標準形であるという。

注: Chomsky標準形は空語 を含まない。

Page 58: 第 3 章 「文脈自由言語」

 定理 3.10 Chomsky 標準形への変形

定理 3.10文脈自由文法 G = (N,Σ, P, S ) に対して、

L(G ) {} を生成する Chomsky 標準形の文脈自由文法 G = (N,Σ, P, S ) を構成できる。

Page 59: 第 3 章 「文脈自由言語」

 証明証明

定理 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 ならば,

Page 60: 第 3 章 「文脈自由言語」

 例 3.19

G = (N,Σ, P, S ) を次の生成規則をもつ文脈自由文法とする。

S AaAA A a

等価な Chomsky 標準形の G’ をつくってみよう

Page 61: 第 3 章 「文脈自由言語」

 定理 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) である。

Page 62: 第 3 章 「文脈自由言語」

 証明の手引き (天下り的に )適当な p(G) をとる。

|z| > p(G) を満たす z∈L(G) について、z の導出に対応する構文木を解析する。

以上の p(G) 、 z について、 (1)(2)(3) がそれぞれ成り立つことを確かめる。

Page 63: 第 3 章 「文脈自由言語」

 証明( p(G))

r m 個

m

構文木の枝分かれの最大数は、 r = max{ || | A P }

m 1 に対して、高さ m の構文木は高々 rm 個の葉しかもたないことに注意。

p(G) = r2|N| とおく。

Page 64: 第 3 章 「文脈自由言語」

 証明( w を導出する構文木) p(G) = r2|N| zL(G) は |z| > p(G) を満たしているとする。 S z を, z を生成する最短の導出と仮定し、

この導出に対応する構文木を T とする。

S

z ( |z| > r2|N| )

2|N|+1以上

*

Page 65: 第 3 章 「文脈自由言語」

 証明(根から葉への最長パス )

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

Page 66: 第 3 章 「文脈自由言語」

 証明(抽き出し法)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)

Page 67: 第 3 章 「文脈自由言語」

 証明( (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

*

*

*

Page 68: 第 3 章 「文脈自由言語」

 証明( (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

*

*

*

Page 69: 第 3 章 「文脈自由言語」

 証明( (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

*

*

*

* * * * *

Page 70: 第 3 章 「文脈自由言語」

 例 3.20

L = {anbncn | n 0} が文脈自由言語でないことを挿入定理を用いて証明せよ。

Page 71: 第 3 章 「文脈自由言語」

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) 証明(略)