Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
1
オートマトンと言語 12回目 6月25日 NFA DFA→
教科書107ページから112ページ
2
本の紹介
書籍名「あなたはコンピュータを理解していますか?」
副題:10年後,20年後まで必ず役立つ根っこの部分がきっちりわかる!
著者:梅津信幸
出版社:ソフトバンククリエイティブ
手軽に読めます.
新たな発見があるかも
3
授業の予定 01回目 4月09日 数学的準備,帰納的表現 02回目 4月16日 形式言語,BNF記法 03回目 4月23日 BNF記法 04回目 4月30日 離散グラフ 05回目 5月07日 連結グラフ 06回目 5月14日 木グラフ 07回目 5月21日 有限オートマトン1 08回目 5月28日 有限オートマトン2 09回目 6月04日 有限オートマトン3,中間試験 10回目 6月11日 正規表現 11回目 6月18日 正規表現,非決定性有限オートマトン 12回目 6月25日 正規表現→DFA 13回目 7月02日 有限オートマトンの最小化 14回目 7月09日 PDA,チューリング機械,文脈自由文法 15回目 7月16日 期末試験
4
今日のメニュー
非決定性有限オートマトン→決定性有限オートマトン(NFA DFA→ )
ε動作を含むNFA ε→ 動作を含まないNFA 正規表現→ ε動作を含むNFA
5
4.4.2 非決定性FAの決定性FAへの変換(p.107)
あるDFAで受理できる言語を受理するNFAは簡単に構成できる(DFA NFA→ は簡単)
NFA DFA→ は可能か? 可能(変換方法は後で説明)
εq0
0
1 1
q1ε
q00
1 1
q1
1
q20
DFA NFA
6
例題4.33 例題4.30のNFAの受理する言語を受理するDFAを構成せよ(NFA DFA)→
{q1}{q0}q2
{q2}{q0}q1
{q0}{q1,q2}q0
10δN
[q1,q2][q0][q1,q2]
[q0][q1,q2][q0]
10δDq0
q1
q2
1
11
0
0
0
0
ε
S1S0S1
S0S1S0
10δD
DFA化
状態ラベルの付換え [q1,q2][q0]ε
11
0
0
[ ]: 状態集合ラベル
S1S0ε
1 1
0
0
7
例題4.35 (例題4.29)
S0 S1
0,1
0
1
{S0}φS1
{S1}{S0,S1}S0
10δ
ε
NFA DFA→
8
例題4.35 (例題4.29)の答え
[s0]----[s1][s0,s1][s0,s1][s0,s1][s1][s0,s1][s0]10δDFA
{S0}φS1
{S1}{S0,S1}S0
10δNFA
S0 S1
0,1
0
1
[s1][s0]
[s0,s1]0
1
0/11
ε
ε
初期状態からの
遷移を調べる
各遷移先からの
遷移を調べる
新しい遷移先が
無ければ終了
重要!
初期状態 初期状態
9
練習問題1 例題4.36 a, f
S0
S3
εS1
S2
1
11
10
0
0,1
q0 q1
0 1
ε0,1
1
a f
10
練習問題1 例題4.36 aの答え
[s0,s1,s2,s3][s0,s2][s0,s1,s2,s3][s0,s1,s2,s3][s2][s0,s2][s2][s0][s1,s3][s0,s2][s2][s2][s1,s3][s2][s0]10δDFAa
φφS3{S0,S2}{S2}S2{S2}{S0}S1{S1,S3}{S2}S010δNFAa
S0
S3
εS1
S2
1
11
10
0
0,1
a 初期状態
初期状態
11
練習問題1例題4.36 aの答え
[s0,s1,s2,s3][s0,s2][s0,s1,s2,s3][s0,s1,s2,s3][s2][s0,s2][s2][s0][s1,s3][s0,s2][s2][s2][s1,s3][s2][s0]10δDFAa
[s0]
[s1,s3]
[s0,s1,s2,s3]
[s2]
[s0,s2]
01
1
0
10
1
01
0
ε
12
練習問題1 例題4.36 fの答え
[q0,q1][q0,q1][q0,q1][q0,q1]-----[q1][q1][q0,q1][q0]10δDFAf
{q0,q1}φq1{q1}{q0,q1}q010δNFAf
q0 q1
0 1
ε0,1
1
13
練習問題1例題4.36 fの答え
[q0,q1][q0,q1][q0,q1][q0,q1]-----[q1][q1][q0,q1][q0]10δDFAf
[q0] [q1]
[q0,q1]
0
1
1
0,1
ε
14
4.4.3 ε- 動作を含むNFA
空語入力による遷移 → ε-遷移
ε-NFAの状態遷移関数の定義 δ:Q×(Σ+{ε})→P(Q)
q0 q1
1
ε
ε
φφq1
{q1}{q0}q0
ε1δ
15
練習問題2 例題4.37
S3
0 1
S1 S2εε ε
0
W1: 0011W2: 01001
16
練習問題2 例題4.37 w1 答え
w1 = 0011
受理
0 0 11
S1
S2
S1
S3
S1
S3 S3
S2 S2 S2
S3S3
×
S2
×w1:受理される
S3
0 1
S1 S2εε ε
0
{S3}φ{S1}0
{S3}{S2}S2φφS3
{S2}φS1ε1δ
17
練習問題2 例題4.37 w2 答え
w2 = 01001 0 1 00
S1
S3
S1
S3 S3
S2 S2
S3S3
S2
×
1
×w2:受理されない
S3
0 1
S1 S2εε ε
0{S3}φ{S1}0
{S3}{S2}S2φφS3
{S2}φS1ε1δ
18
例題4.38ε-動作の除去
------{S3}S3
{S3}{S2}---S2
{S2}---{S1}S1
ε10δε-NFA
S3
0 1
S1 S2ε ε ε
0
---{S3}S3
{S2,S3}{S3}S2
{S2,S3}{S1,S2,S3}S1
10δNFA
S1
S2
S3
0
0,1
0,1 0,1
0
1
ε
19
練習問題3 例題4.40 a
q0 q1
0
1
ε
ε
{q0}{q1}--q1
----{q1}q0
ε10δε-NFA
20
練習問題3 例題4.40 a 答え
0
q0 q1
0
0,1
0,1
ε
{q0,q1}{q0,q1}q1
--{q0,q1}q0
10δNFA
{q0}{q1}--q1
----{q1}q0
ε10δε-NFA
q0 q1
0
1
ε
ε
21
例題4.41 (p.112) ε-NFA DFA→
S3
0 1
S1 S2ε ε ε
0
------{S3}S3
{S3}{S2}---S2
{S2}---{S1}S1
ε10δε-NFA
22
例題4.41 1/2
[S2,S3][S3][S2,S3]
---[S3][S3]
[S2,S3][S1,S2,S3][S1,S2,S3]
[S2,S3][S1,S2,S3][S1]
10δDFA
0 1
S1 S2ε ε ε
0
------{S3}S3
{S3}{S2}---S2
{S2}---{S1}S1
ε10δε-NFA
---{S3}S3
{S2,S3}{S3}S2
{S2,S3}{S1,S2,S3}S1
10δNFA
S3
例題4.38
ε-NFA → NFA → DFA
23
例題4.41 2/2
[S2,S3][S3][S2,S3]
---[S3][S3]
[S2,S3][S1,S2,S3][S1,S2,S3]
[S2,S3][S1,S2,S3][S1]
10δDFA 0 1
S1 S2ε ε ε
0
S3
ε-NFA → NFA → DFA
[S2,S3][S3][S2,S3]
---[S3][S3]
[S2,S3][S1,S2,S3][S1,S2,S3]
[S2,S3][S1,S2,S3][S1]
10δDFA
ε(S1)
ε(S2)
ε(S3)
S1のε-閉包
初期状態をε(S1)と考えると
[S1,S2,S3] [S2,S3] [S3]
0
1
1
0
0
24
4.4.4 正規表現で表された言語を受理するε-NFA
(1) 正規言語の閉包性 正規言語:FAの受理する言語,あるいは正規表現
の表す言語のクラス 正規言語は言語の和,連接,クリーネ閉包(Σ*)につ
いて閉じている 正規言語は和,積,補の集合演算についても閉じて
いる
閉じている:教科書8ページ
クリーネ閉包:教科書33ページ
連接:教科書34ページ
25
(2)正規表現からε-NFAへの変換
113ページ
正規表現 ε-NFA NFA DFA
P.114 P.108P.110
重要!
正規表現から直接DFAへの変換は難しい→ まずε-NFAに変換する.
26
例題4.45 c :0*1正規表現 → ε-NFAの状態遷移図
0
1ε
0*1
27
例題4.45 h :0*+1*正規表現 → ε-NFAの状態遷移図
0
1ε
εε
0*+1*
28
練習問題4 例題4.47 a
1*(0*1)* 正規表現 → ε-NFAの状態遷移図
29
練習問題4 例題4.47 a 答え
1
1
ε
0
εε
1*(0*1)* 正規表現 → ε-NFAの状態遷移図