計算の理論 I
決定性有限オートマトン(DFA)
と
非決定性有限オートマトン(NFA)
月曜3校時
大月 美佳
前回のテストについて
(Σの読み方)
終了の数
(この場合はnまで)
変数
n
 f (i)
i 0
開始の数から
終了の数まで
この関数に代
入していって足
し合わせる
開始の数
(この場合は0から)
⇒ 0からnまでf(i)に代入したものを足し合わせる
例:
n
 i  0  1  ... (n  1)  n
i 0
前回のテストについて
(Σと帰納法)
注意点
1. 基底を間違えない
–
–
基底は開始位置から始めること
1から始めたので0が足りない人多数
2. 終了位置の展開を間違えない
–
–
n=k+1と置きながらkで展開している人多数
k 1
k
i 0
i 0
k
 f (i)   f (i)  f (k  1)   f (i)  f (k )
○
i 0
×
前回のテストについて
(問題 a その1)
n(n  1)
i

を帰納法により証明する。
2
i 0
n
開始の数
1. i=0 のとき(基底)
0
i  0
i 0
,
0(0  1)
0
2
両辺とも0となり成り立つ。
前回のテストについて
(問題 a その2 )
2. n=k (k≧0)のとき
k (k  1)
i
が成り立つとする。

2
i 0
k
n=k+1 のとき
終了の数
仮定より
k (k  1)
i   i  (k  1) 
 k 1

2
i 0
i 0
k 1
k
k 2  3k  2 (k  1)(k  2)


2
2
となり n=k+1 のときも確かに成り立つ。(以下略)
前回のテストについて
(問題 b その1)
2


i    i  を帰納法により証明する。

i 0
0 
 i開始の数
n
n
3
1. i=0 のとき(基底)
0
i
i 0
3
0
,
2


i  0
 i 0 
0
両辺とも0となり成り立つ。
前回のテストについて
(問題 b その2 )
2. n=k (k≧0)のとき


i  i

i 0
 i 0 
k
k
3
n=k+1 のとき
2
が成り立つとする。
終了の数
仮定およびaより
 k (k  1) 
3
i

i

(
k

1
)


(
k

1
)




 2 
i 0
i 0
k 1
2
k
3
3
3
(k  1) (k  4k  4) (k  1) (k  2) 



 i
4
4
 i 0 
2
2
2
2
k 1
となり n=k+1 のときも確かに成り立つ。(以下略)
2
その他コメント
 略した部分もちゃんと書くように
– 「1と2から与式は成り立つ。」とか
 aの演繹的解き方
– ひっくり返して足す
 帰納法で大事なのは始めと終わりの把握
 掲示板はまだ…
 ここで席替え
前回の復習
 有限状態系のモデル
⇒有限オートマトン (FA)
例:自動販売機、エレベータ、渡船
 FAの定義
M = (Q, Σ, δ, q0, F)
FAの定義式
 M = (Q, Σ, δ, q0, F)
– 有限個の状態の集合 Q
– (有限の)入力アルファベットΣ
– 入力記号によって引き起こされる状態遷移
• 遷移関数δ:Q×ΣからQへの写像
– 初期状態 q0∈Q
– 最終状態の集合 F⊆Q
FAの模式図
テープ
⇒記号列Σ*(Σ上のすべての記号列の集合)
0 1 1 0 0 1 0 1 0 1 1 0 0 1 1 0 1 0
アルファベット
有限
制御部
0, 1
Σ
遷移関数δ
最終状態の集合
F
qx
qf
有限状態系
qy
q0
qz
q0, qx, qy, qz, qf
Q
初期状態 状態の集合
FAの例
(p.21 図2.2の定義式)
even-even
 M=(Q, Σ, δ, q0, F)
q0
even-odd
q1
1
0
1
0
– Q = { q 0, q1, q2, q3 }
0
– Σ= { 0, 1 }
q2
q3
1
– F = { q0 }
入力:a
– δ(q, a)→
状態:q
0
1
odd-even
0
1
q0
q2
q1
q1
q3
q0
q2
q0
q3
q3
q1
q2
odd-odd
受理について
 入力列xを有限オートマトンMで受理する
→ M = (Q, Σ, δ, q0, F)のとき δ(q0, x) ∈F
⇒要するに、xのとおり遷移すると最終状態に
なるということ
 受理言語=正則集合(正則)
受理される入力記号列の集合
正則=正規
今日の新しいこと
 非決定性有限オートマトン
(nondeterministic finite automaton, NFA)
1つの入力記号について状態遷移が0個以上
⇔決定性有限オートマトン (deterministic finite
automaton, DFA)
1つの入力記号について状態遷移が1つずつ
前回上げた例はDFA
決定性と非決定性
1対1
入力
a
次の状態へ
q
1対n
q
入力 a
次の状態へ
⇒ある記号列に対して
道がひとつ決まる
=決定性
(deterministic)
⇒ある記号列に対して
道が複数あって
決まらない
=非決定性
(nondeterministic)
NFAの例
(p.26 図2.5)
1
0
1
0
このへん
0
q0
0
q3
q4
1
q1
1
q2
0 1
NFAでの受理
 入力列に対して状態遷移がひとつでもあ
れば受理
– 図2.5での受理される入力列の例:01001
q0, q0, q0, q3, q4, q4
注意:
最終状態でとまらなけ
ればならないということ
はない
1
1
0
0
q0
0
q3
0
1
q1
1
q2
0 1
q4
NFAの取りうる状態
 NFAは同時刻に複数の状態を取りうる
0
q0
1
2
3
4
5
0
1
0
0
1
q0
q0
q0
q0
q0
q3
q1
q3
q3
q1
q4
q4
有限制御機としてのNFA
DFA
NFA
0 1 1 0 0 1
有限
制御部
qx
0 1 1 0 0 1
有限
制御部
qx
qz
qy
とりうる状態が複数に
NFAの定義式
 M = (Q, Σ, δ, q0, F)
– DFAと同じ?→遷移関数δが違う
Q
– δ:Q×ΣからQのベキ集合( 2)への関数
–
–
–
–
=Qの部分集合の集合
Q:状態の集合
Σ:入力アルファベット
q0:初期状態
F :最終状態の集合
NFAの遷移関数の例
(p.27 図2.7)
 図2.5の遷移関数δ
q0
状態
入力
0
1
{q0, q3}
{q0, q1}
q1
{q2}
q2
{q2}
q3
{q4}
q4
{q4}
{q2}
{q4}
δの拡張
 DFAの時と同様にδを拡張
δ:Q×ΣからQのベキ集合への関数
→δ:Q×Σ*からQのベキ集合への関数
要するに、入力記号だったのを入力列に拡張
 最終的なδ :Qのベキ集合×Σ*からQのベキ集
合への関数
δ( P, w)  δ(q, w)
qP
ここで、PはQの任意の部分集合
受理集合
 受理集合L(M)を以下のように定義
L(M)={w|δ(q0, w)がFの状態を少なくとも一つ
含む}
ここで、M=NFA(Q, Σ, δ, q0, F)とする
ミニテストとレポート
 ミニテスト
–
–
演習問題 2.4
教科書・資料を見ても良い
 ミニテストとレポートを提出すること
 出したら帰って良し
ダウンロード

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