• Tidak ada hasil yang ditemukan

有限オートマトン (12/16 配布) - pweb

N/A
N/A
Protected

Academic year: 2024

Membagikan "有限オートマトン (12/16 配布) - pweb"

Copied!
2
0
0

Teks penuh

(1)

有限オートマトン (12/16 配布)

(決定性)有限オートマトン M = (Q,Σ, δ, s, F) の形式的定義

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

Σ : 有限集合 · · · 入力文字の集合 (“alphabet”)

δ:Σ−→Q : 遷移関数

s∈Q · · · 初期状態

F ⊂Q · · · 受理状態の集合

(決定性)有限オートマトンによる語の受理

有限オートマトン M = (Q,Σ, δ, s, F) が語w=a1a2· · ·anΣ を受理(accept)する

⇐⇒ ∃r0, r1, . . . , rn∈Q:

r0 =s

δ(ri1, ai) = ri (i= 1, . . . , n)

rn∈F

非決定性有限オートマトン M = (Q,Σ, δ, s, F) の形式的定義

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

Σ : 有限集合 · · · alphabet, Σε := Σ∪ {ε}

δ:Σε −→ P(Q) : 遷移関数 · · · 可能な遷移先全体の集合 (P(Q) は Q の冪集合)

s∈Q · · · 初期状態

• F ⊂Q · · · 受理状態の集合

非決定性有限オートマトンによる語の受理

非決定性有限オートマトン M = (Q,Σ, δ, s, F) が語w∈Σ を受理する

⇐⇒ ∃a1, a2,· · · , anΣε,∃r0, r1, . . . , rn∈Q:

w=a1a2· · ·an

r0 =s

ri ∈δ(ri1, ai) (i= 1, . . . , n)

rn∈F

決定性有限オートマトンと非決定性有限オートマトンとの同等性

与えられた非決定性有限オートマトン M = (Q,Σ, δ, s, F) に対し、M が認識する言語 L(M)を認識する決定性有限オートマトンMf:= (Q,e Σ,δ,e es,Fe)が次で構成できる :

Qe :=P(Q) : 現在あり得る状態全体の集合

eδ:Qe×Σ−→Qe

(q, x)e 7−→eδ(eq, x) :=

[ i=0

e qi

: qeの何処かから入力 x で遷移できる状態全体

ここで、qe0 :=[

qeq

δ(q, x), qgi+1 := [

qqei

δ(q, ε)

es:=

[ i=0

e

si : 初期状態 s から入力を何も読まずに遷移できる状態全体 ここで、se0 :={s}, sgi+1 := [

qsei

δ(q, ε)

Fe:={eq∈Qe eq∪F 6=∅} : あり得る状態のどれかが受理状態

—2010年度秋期 電子計算機概論I・計算機数学 (担当:角皆) 3—

(2)

主なレポート課題の例(続き)(12/16 配布)

8. (決定性)有限オートマトン M = (Q,Σ, δ, s, F) に対し、次のものを記述してみ よ。(集合・写像などを用いた概念記述の練習)

(1) 語w∈Σ を読んだ後の状態を与える関数δe: Σ →Q (ヒント: 語の長さ |w|に関 する帰納的定義を用いよ)

(2) より一般に、状態 q∈Q にいる所から出発して語 w∈Σ を読んだ後の状態を与 える関数eδ: Σ →Q (記号の濫用だが、eδ(s, w) を単に eδ(w) と書く、という ことにして上問との整合性を取ることにする)

(3) M が認識する言語 L(M)

(4) より一般に、語 w Σ を読んだ後に、続けて読めば受理される語全体の成す集 合(これも1つの言語)を与える関数SM : Σ → P)

(5) その他、議論に必要または便利と思われる概念を定式化せよ。

9. 前問の SM と同様に、言語L に対して、語 w∈Σ の後に連接するとL の元に なる語全体の成す集合をSL(w) とする。

(1) 関数SL: Σ → P) を記述せよ。(前問との整合性としては SM =SL(M)) (2) a∈Σに対し、`a: Σ Σ (resp. ra)を、語に左(resp. 右)から文字 a を連接さ

せる関数とする(これもきちんと記述せよ)。`a1(SL(w)) =SL(ra(w))を示せ。

(3) Lが有限オートマトンで認識可能 ⇐⇒ ImSL が有限集合

(ヒント: = 側: L = L(M) とするとき、eδ(w1) = eδ(w2) = SL(w1) = SL(w2).

=側: ImSL を状態集合とする有限オートマトンを構成せよ)

10. Σ ={a, b} をalphabetとする次の言語について、(a) 正規表現で表せ。(b) 生 成規則で表せ。(c) 受理する非決定性有限オートマトンを構成せよ。(d) 受理する決定性 有限オートマトンを構成せよ。(e) 上記の有限オートマトンを模倣するプログラムを作成

せよ(言語は何でも良い)。

(1) a で始まり b で終わる (2) a, bの片方しか現われない (3) a が偶数個

(4) その他、適当に非自明で興味深い例を考えよ

11. Σ ={a, b}をalphabetとする次の言語について、(a) 生成規則で表せ。(b)受理

する(非決定性)プッシュダウンオートマトンを構成せよ。(c) 上記のプッシュダウンオー

トマトンを模倣するプログラムを作成せよ(言語は何でも良い)。

(1) {anbn n≥0} (2) 偶数文字の回文 (3) a, bが同数現われる

(4) その他、適当に非自明で興味深い例を考えよ

12. Σ = {a, b,+,−,×, /,(,)} から成る“文法に適っている”数式を、

(1) 生成規則で表せ。

(2) 受理する(非決定性)プッシュダウンオートマトンを構成せよ。

(3) 上記のプッシュダウンオートマトンを模倣するプログラムを作成せよ。

但し、簡単のため、考える上で多少の制約・許容を行なって良い(+,−を単項演算子とし ては使わないとか、普通なら付けない括弧が付いても気にしないとか)。

13. 例えば、ローマ字仮名変換のように、入力を1文字づつ読込みながら適宜出力 をしてゆくような処理を定式化するために、“出力付き有限オートマトン”とでも言うべ き有限状態変換器(finite state transducer) と呼ばれる計算モデル(処理モデル)を考 えてみよう。

(1) この計算モデルを定式化せよ。

(2) その下で、ローマ字仮名変換を実装してみよ(これを実行する“出力付き有限オー トマトン”を構成せよ)。例えば、次のような制限下でも良い。

入力文字集合 Σ ={a,o,k,r,y}

出力文字集合 Γ ={,,,,,,,,,,,,}

—2010年度秋期 電子計算機概論I・計算機数学 (担当:角皆) 4—

Referensi

Dokumen terkait

演習問題 ちょっとしたコツtips: 「後に続く文字列が何だったら受理か」 が全く同じ状態は一つの状態にまとめられる。 これが違う状態はまとめられない。

R の部分集合 M に最大値 maxM が存在すれば、それは上限 supM でも ある。最小値・下限についても同様。 問8-5A... 数列a= an∞n=0 について、上極限・下極限がともに存在して一致すれば、 a はその値に収束することを示せ。

R の部分集合 M に最大値 maxM が存在すれば、それは上限 supM でも ある。最小値・下限についても同様。 問8-5A... 数列a= an∞n=0 について、上極限・下極限がともに存在して一致すれば、 a はその値に収束することを示せ。

後置記法の演算式のスタックを用いた計算 逆ポーランド電卓 • 数値 =⇒ push • 演算子 =⇒ 被演算子を所定の個数だけ pop −→ 演算を施し、結果を push • 入力終了 =⇒ pop −→ スタックが丁度空になったらその値が答え 問 : 後置記法逆ポーランド記法の式に対し スタックを用いて値を計算する アルゴリズムを実装せよ...

Σをalphabetとする正規言語A, B ∈ PΣ∗に対し、A∩B も再び正規言語で あることを示せ。ヒント: 正規表現の定義から示すのは煩わしい。A, B を認識する有限 オートマトン MA, MB が存在するので、これを用いて A∩B を認識する有限オートマト ンを構成せよ。 問12... 文脈自由言語非決定性プッシュダウンオートマトンに対するPumping

DFAとNFAとの同等性 非決定性有限オートマトン M= Q, Σ, δ, s, F に対し、 LM を認識する決定性有限オートマトン fM= Q, Σ,e eδ,es,eF を構成 アイデア:

(⇐⇒ 正規でない言語が存在する) 例 : A={anbn n≥0} (a と b との個数が同じ) 実際 wn=anb に対する SLwn が全て異なる 一般には、証明には部屋割り論法 (の一種のpumping lemma) を利用することが多い... 有限オートマトンでの計算可能性問題 非決定性有限オートマトンで認識できない

後置記法の演算式のスタックを用いた計算 逆ポーランド電卓 • 数値 =⇒ push • 演算子 =⇒ 被演算子を所定の個数だけ pop −→ 演算を施し、結果を push • 入力終了 =⇒ pop −→ スタックが丁度空になったらその値が答え 問 : 後置記法逆ポーランド記法の式に対し スタックを用いて値を計算する