• Tidak ada hasil yang ditemukan

A M が存在するか 認識可能な言語はどのようなものか

N/A
N/A
Protected

Academic year: 2024

Membagikan "A M が存在するか 認識可能な言語はどのようなものか"

Copied!
32
0
0

Teks penuh

(1)

有限オートマトンでの計算可能性問題

言語 AΣ に対し、

A を認識する有限オートマトン M が存在するか ?

有限オートマトンによって

認識可能な言語はどのようなものか ? 定理 :

L : 正規言語 m

L が或る有限オートマトンで認識される

(2)

有限オートマトンでの計算可能性問題 有限オートマトンで認識できる

⇐⇒ 待ちが有限種類

`w →Σ v7−→wv

: “左平行移動”

言語 L∈ P) に対し、

SL P) : “待ちの集合 w7−→{vΣ wvL}=`−1w(L)

#ImSL<∞ ⇐⇒M:L=L(M)

(3)

有限オートマトンでの計算可能性問題 非決定性有限オートマトンで認識できない

言語が存在する!!

(⇐⇒ 正規でない言語が存在する)

: A={anbn n0} (a と b との個数が同じ)

実際 wn=anb に対する SL(wn) が全て異なる 一般には、証明には部屋割り論法

(の一種のpumping lemma

を利用することが多い

(4)

Pumping Lemma(注入補題・反復補題)

正規言語 A に対し、

nN:

wA,|w|n:

x, y, z Σ :w=xyz (1) y6

(2) |xy|n

(3) k0:xykzA

(5)

有限オートマトンで認識できる/ない言語の例 Σ={a, b}

a と b との個数が同じ

a が幾つか続いた後に b が幾つか続いたもの

a で始まり a, b が交互に並んで b で終わる

• 同じ文字列 2 回の繰返しから成る

回文 (palindrome)

などなど このうちで、

有限オートマトンで認識できる言語は?

(6)

有限オートマトンで認識できない言語が存在する

より強力な計算モデルが必要

プッシュダウンオートマトン

チューリングマシン

(7)

有限オートマトンで認識できない言語が存在する

より強力な計算モデルが必要

プッシュダウンオートマトン

チューリングマシン

(8)

有限オートマトンで認識できない言語が存在する

有限オートマトンより強力な計算モデル

正規言語より広い範囲の言語を扱う

生成規則による言語の記述(生成文法)

(9)

有限オートマトンで認識できない言語が存在する

有限オートマトンより強力な計算モデル

正規言語より広い範囲の言語を扱う

生成規則による言語の記述(生成文法)

(10)

: “文法に適っている数式とは

どのようなものか?

簡単のため二項演算子のみ考えることにすれば、

単独の文字(変数名)は式

式と式とを演算子で繋いだものは式

式を括弧で括ったものは式

• それだけ

→ これは式を作り出す規則とも考えられる

(11)

: “文法に適っている数式とは

どのようなものか?

簡単のため二項演算子のみ考えることにすれば、

• 単独の文字(変数名)は式

式と式とを演算子で繋いだものは式

式を括弧で括ったものは式

それだけ

→ これは式を作り出す規則とも考えられる

(12)

例 : “文法に適っている”数式とは

どのようなものか?

簡単のため二項演算子のみ考えることにすれば、

単独の文字(変数名)は式

式と式とを演算子で繋いだものは式

• 式を括弧で括ったものは式

それだけ

→ これは式を作り出す規則とも考えられる

(13)

文法に適っている数式

初期記号(開始変数)E から出発して、

次の規則のいづれかを

非決定的に適用して得られるもの のみ

E→A

E→EBE

E→(E)

A→変数名のどれか

B→演算子のどれか

• 変数名・演算子・(・) は

それ以上書換えない(終端記号)

→ 生成規則(書換規則)

(14)

文法に適っている数式

初期記号(開始変数)E から出発して、

次の規則のいづれかを

非決定的に適用して得られるもの のみ

E→A

E→EBE

E→(E)

A→変数名のどれか

B→演算子のどれか

• 変数名・演算子・(・) は

それ以上書換えない(終端記号)

→ 生成規則(書換規則)

(15)

生成規則・生成文法

生成規則を与えることでも

言語を定めることが出来る

→ 生成文法 (generative grammar)

生成規則による文法に適っている語の生成

初期変数を書く

今ある文字列中の或る変数を

生成規則のどれかで書換える

変数がなくなったら終わり

(16)

生成規則・生成文法

生成規則を与えることでも

言語を定めることが出来る

→ 生成文法 (generative grammar)

生成規則による“文法に適っている”語の生成

初期変数を書く

今ある文字列中の或る変数を

生成規則のどれかで書換える

変数がなくなったら終わり

(17)

: {a2nb2m+1 n, m0}

(a が偶数個(0 個も可)続いた後に、

b が奇数個続く)

正規表現で表すと、(aa)b(bb)

S→aaS

S→bB

B→bbB

B→ε

まとめて次のようにも書く

S→aaS bB

B→bbB ε

(18)

: {a2nb2m+1 n, m0}

(a が偶数個(0 個も可)続いた後に、

b が奇数個続く)

正規表現で表すと、(aa)b(bb)

S→aaS

S→bB

B→bbB

B→ε

まとめて次のようにも書く

S→aaS bB

B→bbB ε

(19)

: {a2nb2m+1 n, m0}

(a が偶数個(0 個も可)続いた後に、

b が奇数個続く)

正規表現で表すと、(aa)b(bb)

S→aaS

S→bB

B→bbB

B→ε

まとめて次のようにも書く

S→aaS bB

B→bbB ε

(20)

生成規則・生成文法

実際の(自然言語を含めた)文法では、

或る特定の状況で現われた場合だけ

適用できる規則もあるだろう そのような生成規則は例えば次の形 :

uAv→uwv u, v Σ : 文脈 (context)

変数 A が uAv の形で現われたら、

語 wΣ で書換えることが出来る

(21)

生成規則・生成文法

実際の(自然言語を含めた)“文法”では、

或る特定の状況で現われた場合だけ

適用できる規則もあるだろう そのような生成規則は例えば次の形 :

uAv→uwv u, v Σ : 文脈 (context)

変数 A が uAv の形で現われたら、

語 wΣ で書換えることが出来る

(22)

生成文法の形式的定義

G= (V, Σ, R, S)

V : 有限集合(変数の集合)

Σ : 有限集合(終端記号の集合)

ここに VΣ=

R : 有限集合(VΣ)×(VΣ)

(規則の集合)

SV : 開始変数

(v, w)R が生成規則 v→w を表す

(23)

文脈自由文法 (context-free grammar) 文脈が全て空列 ε

即ち、規則が全て A→w (AV) の形 文脈自由文法の形式的定義

• V : 有限集合(変数の集合)

Σ : 有限集合(終端記号の集合)

ここに VΣ=

R : 有限集合V×(VΣ) (規則の集合)

SV : 開始変数

(A, w)R が生成規則 A→w を表す

(24)

文脈自由文法 (context-free grammar) 文脈が全て空列 ε

即ち、規則が全て A→w (AV) の形 文脈自由文法の形式的定義

• V : 有限集合(変数の集合)

Σ : 有限集合(終端記号の集合)

ここに VΣ=

R : 有限集合V×(VΣ) (規則の集合)

SV : 開始変数

(A, w)R が生成規則 A→w を表す

(25)

: 言語 A={anbnn0} は

正規言語ではないが文脈自由言語である

S→aSb ε

従って、

文脈自由言語は正規言語より真に広い!!

さて、正規言語を計算するモデルが

有限オートマトンであった 文脈自由言語を計算するモデル

· · · プッシュダウンオートマトン

(26)

: 言語 A={anbnn0} は

正規言語ではないが文脈自由言語である

S→aSb ε 従って、

文脈自由言語は正規言語より真に広い!!

さて、正規言語を計算するモデルが

有限オートマトンであった 文脈自由言語を計算するモデル

· · · プッシュダウンオートマトン

(27)

: 言語 A={anbnn0} は

正規言語ではないが文脈自由言語である

S→aSb ε 従って、

文脈自由言語は正規言語より真に広い!!

さて、正規言語を計算するモデルが

有限オートマトンであった 文脈自由言語を計算するモデル

· · · プッシュダウンオートマトン

(28)

: 言語 A={anbnn0} は

正規言語ではないが文脈自由言語である

S→aSb ε 従って、

文脈自由言語は正規言語より真に広い!!

さて、正規言語を計算するモデルが

有限オートマトンであった 文脈自由言語を計算するモデル

· · · プッシュダウンオートマトン

(29)

: 言語 A={anbnn0} は

正規言語ではないが文脈自由言語である

S→aSb ε 従って、

文脈自由言語は正規言語より真に広い!!

さて、正規言語を計算するモデルが

有限オートマトンであった 文脈自由言語を計算するモデル

· · · プッシュダウンオートマトン

(30)

プッシュダウンオートマトン

(非決定性)有限オートマトンに

プッシュダウンスタックを取り付けたもの

a b

a b

a

c b

a

a d

a push a push b push c pop pop push d

無限(非有界)の情報を保持できるが、

読み書きは先頭だけ

· · · LIFO (Last In First Out)

(31)

プッシュダウンオートマトンの形式的定義 M= (Q, Σ, Γ, δ, s, F)

Q : 有限集合 · · · 状態の集合

Σ : 有限集合 · · · alphabet

Γ : 有限集合 · · · stack alphabet Σε:= Σ{ε}, Γε:=Γ {ε} と置く

δ:Q×Σε×ΓεP(Q×Γε)

: 遷移関数(非決定的)· · · 可能な遷移先全体

sQ · · · 初期状態

FQ · · · 受理状態の集合

(32)

δ:Q×Σε×ΓεP(Q×Γε)

(r, y)δ(q, a, x) とは、

「入力 a を読んだとき、

状態 q でスタックの先頭が x なら、

スタックの先頭を y に書換えて、

状態 r に移って良い」

ということ (pop; push y)

x=y は書き換え無し

x=ε は push のみ

y=ε は pop のみ

a=ε は入力を読まずに遷移

Referensi

Dokumen terkait

の最善の利益は、子どもが自分のために自分の選択をできるようになること」と語る。 BFSW は、子どもの最善の利益のために児童養護施設、大人がすべきことを 2 つ挙げて いる。「1 つ目に、子どもが安心して過ごしてもらえるような居場所づくりをすること。2 つ目に、何か困ったとき、話をしたいときにお話ができるような、子どもが信頼を寄せら

2009)の概念)に着目することにより複数の言語が機能的に棲み分けるブータンの多言語社会におい て複数の言語能力をもつ話者がどのように言語を切り替え,その部分能力を相補的に用いているかを明らかにする. 2.2 言語社会化 本研究が依拠する第2の理論,言語社会化論は,「言語を適切に用いるための社会化」と「言語の使用を通した社 会化」の2つから定義される(Ochs,

はじめに 言語の対照研究は,複数の言語を比較対照し,様々な言語現象において観察される相違点と類似点から分析対象とする諸 言語の言語体系やコミュニケーションの特徴を明らかにすることを目的としている.対照研究は社会言語科学と非常に関連 性の強い研究分野であり,これまでも社会言語科学会において対照研究をテーマにしたシンポジウムやワークショップが開

置換を許す体系はどんな文字列の対応関係でも 記述できるのだが,見通しが効かないのである. この点の下で,次のことにも注意しておくと 有益だろう: 注意3: 変形に置換を含め,sとtの型が同じで あるという制約を外した場合,変形は写 像と等しい.従って,それはすべてのこ とが扱える. 具体的に言えば,h s, t i の型として ih 統語 構造, 統語構造

成立以来,認知言語学の手法は少なからず直観基盤 intuition-basedであった.この点で,認知言語学は,決 戦を挑んだ相手である生成言語学と何も変らない.こ のため,両者の違いは,最終的には単なる説明用語やイ メージの好みの違いに堕落する可能性がある. 認知言語学の枠組みであれ生成言語学の枠組みであ れ,直観に過度に依存し作例を中心とした研究法は,次

一下p4『この 本で 学ぶ こと』 ・ ・一年下巻巻頭には、『ひろがることば この 本で 学ぶ こと』を設け、どんなこと を学ぶのか、どんな国語の力が身につくのか、学習の見通しをもてるようにしました。 ・ ・他教科や実生活で生かせる言葉の力を示し、国語という教科にとどまらない、「生きて はたらく言葉の力」の学びを意識できるようにしました。 ・

Σ ={a, b} をalphabetとする次の言語について、a 正規言語でないことを示 せ(正規言語に対するPumping Lemma(注入補題・反復補題)または部屋割り論法を用 いよ)。b 生成規則で表せ。c 受理する(非決定性)プッシュダウンオートマトンを構 成せよ。d 上記のプッシュダウンオートマトンを模倣するプログラムを作成せよ(言語 は何でも可)。 1

C言語の基礎 C言語,ソースファイルの作成,コン パイル,実行 A-1 C言語 • プログラムとは,“計算機を動かす手順を 記述したもの”. – 計算機に命令を与えて動かすには“プログラ ムを作成する”ことになる. • C言語はプログラミング言語の1個 – 手続き型言語に分類される. – C/C++ は非常に多くの場面で使われる言語 •