形式言語とオートマトン - Iwate...
Transcript of 形式言語とオートマトン - Iwate...
形式言語とオートマトン
第2回
山中克久
講義URL: http://www.kono.cis.iwate-u.ac.jp/~yamanaka/Lecture/Automata/index.html
目次
l 決定性有限オートマトン l 非決定性有限オートマトン
l 次回,決定性有限オートマトンと非決定性有限オートマトンの関係をやります
有限オートマトン
オートマトンの例
C言語 プログラムソース中のコメント部分を全て消したい
“/*” と “*/” で囲まれた部分をコメントとみなす
‘/’ 0 1
(1文字読み込むごとに状態が変化していくオートマトンを考える)
‘*’ 2
3
‘*’ ‘/’
その他の 文字(出力) その他の
文字(出力) その他の文字 (出力しない)
4 その他の文字 (出力しない)
EOF
Start
数学的に厳密な定義を与える 直感的には分かるんだけど…
決定性有限オートマトンの定義
(1) 状態の有限集合(Qと書く) (2) 有限のアルファベット(Σと書く)
(3) 状態遷移関数(δと書く,δ: Q×Σ à Q)
(4) 開始状態(q0と書く)
(5) 受理状態の集合(Fと書く)
次の(1)~(5)を集めたものを決定性有限オートマトン(Deterministic Finite Automata, DFA)と呼ぶ
⇒ Qの中の1つ
⇒ Qの部分集合
(1)~(5)からなる5項組(Q, Σ, δ, q0, F)を決定性有限オートマトン(Deterministic Finite Automata, DFA)と呼ぶ
正確には
決定性有限 オートマトンの例:
q1 q0
1
0 0
start
1
1を偶数回含む0-1の2進列を受理する
DFA(決定性有限オートマトン)の例
(1) 状態の有限集合(Qと書く) (2) 入力記号の有限集合(Σと書く)
(3) 状態遷移関数(δと書く,δ: Q×Σ à Q)
(4) 開始状態(q0と書く)
(5) 受理状態の集合(Fと書く)
次の(1)~(5)を集めてきたものを決定性有限オートマトン(Deterministic Finite Automata, DFA)と呼ぶ 上の決定性有限オートマトンは
δ: q0 q1
q0 q1 q1 q0
0 1
q1 q0
1
0 0
start
1
({q0,q1}, {0,1}, δ, q0, {q0})
と書ける,ここで,δは以下の通り
δの状態遷移表 以下の遷移全てを表にまとめて書いたもの δ(q0,0)=q0,δ(q0,1)=q1,δ(q1,0)=q1,δ(q1,1)=q0
受理する,受理しない
q1 q0
1
0 0
start
1
上の決定性有限オートマトンは以下の 系列を受理する? 受理しない?
0101 à 受理する 00111 à 受理しない ε à 受理する
オートマトンが受理する言語
q1 q0
1
0 0
start
1
L(M1) = { w ∊ Σ* | w は 1 を偶数個含む }
オートマトンM1
※ Σ = {0,1} とする
0
1 0
start q0
1
0,1
q1 q2
オートマトンM2
L(M2) = { w ∊ Σ* | wは01を部分系列として含む }
オートマトンM1が受理する言語は,1 を偶数個含む系列からなる集合である.
L(M1) Σ*
L(M2)
非決定性有限オートマトン(NFA)
次の(1)-(5)からなる5項組 M = (Q,Σε,δ,q0,F) を 非決定性有限オートマトン(Non-deterministic Finite Automata, NFA)と呼ぶ
(1) Qは状態の有限集合
(2) (3)
(4) (5)
Σは,有限のアルファベット集合
q0 ∊ Q は開始状態
F⊆Q は受理状態の集合
δ: Q×Σε à P(Q) は状態遷移関数
DFA と NFA の違いは状態遷移関数だけ DFA の状態遷移関数: 状態を1つだけ返す NFA の状態遷移関数: 複数個の状態(状態の集合)を返す
δは,状態と入力記号を受け取ったとき, 状態の集合を返す関数
Σε=Σ∪{ε} P(Q): Qの冪集合
1
0,1
start q0
1
0,1
q1 q3 q2
1
非決定性有限オートマトンの例1
非決定性有限オートマトン M
L(M) = { w ∊ Σ* | wは,111を部分系列として含む }
1
0,1
start q0
1
0,1
q1 q3 q2
1
オートマトンが系列 w 受理するかどうかの考え方
系列 w をオートマトン M に与えたとき,「受理状態で終わるような遷移」が1つでもあれば,M は w を受理するという
上の非決定性有限オートマトンは,系列 w = 11011101 を受理する なぜならば,以下の遷移をすれば受理状態で終了するから
1 q0 q0
1 q0
0 q0
1 q1
1 q2
1 q3
0 q3
1 q3
非決定性有限オートマトンの例2
ε
0 1
start q0
ε
2
q1 q2
※ Σ = {0,1,2} とする
非決定性有限オートマトン M
L(M) = { 0i1j2k | i ≧ 0,j ≧ 0,k ≧ 0 }
0i1j2k : 0 が i 個連続して並んで,1 が j 個連続して並んで,2 が k 個連続して並んでいるような系列
上のオートマトンは 系列0012 を受理するか? à 以下のような状態の遷移が存在するから受理する
0 q0 q0
0 q0
ε q1
1 q1
ε q2
2 q2
※ ε は空系列という ε がついた辺は「遷移して もいいし,しなくてもいい」 意味する
練習問題2-1
0
1
start q2
0
0,1
q1 q0
1
以下の決定性有限オートマトンどんな言語を受理するか? ただし,Σ = {0,1} とする
(b) q0
q2
q1 0
1
Start
1
0 1
0
(a)
以下の言語を受理する決定性有限オートマトンの 状態遷移図を書け.ただし,Σ = {0,1} とする.
(1) { w | w は 101 を部分系列として含む} (2) { w | w の最後から3番目の文字は 1 である}
練習問題2-2
練習問題2-3
以下の非決定性有限オートマトンどんな言語を受理するか? ただし,Σ = {0,1} とする
0
1
start q2 ε
q0
q1
0
1
1
0
q3 q4
1
0
ε
練習問題2-4
以下の言語を受理する非決定性有限オートマトンの 状態遷移図を書け.ただし,Σ = {0,1} とする.
{ w | w は 101 を部分系列として含む}