4章 dfaの最小化,有限オートマトンの応用ysuzuki/public/automaton/...nfa→dfa 11...
TRANSCRIPT
オートマトンと言語 12回目
7月7日(水)
授業資料
http://ir.cs.yamanashi.ac.jp/~ysuzuki/public/automaton/
4章
DFAの最小化,有限オートマトンの応用
山梨大学
プログラミングコンペティション
http://www.cs.yamanashi.ac.jp/progcomp10/
部門:
初級者部門(KM1・2年生)
一般部門
サッカー部門
スケジュール:
07月01日
課題発表(既に発表済み)
07月30日
応募締め切り
10月22日
解答締め切り
11月05日
成績発表
11月17日
表彰式(優秀者には豪華(!?)な副賞も)
授業の予定
回数 月日 内容
1 4月14日 オートマトンとは,オリエンテーション
2 4月21日 2章(数式の記法,スタック,BNF)3 4月28日 2章(BNF),3章(グラフ)
4 5月12日 3章(グラフ)
5 5月19日 4章
有限オートマトン16 5月26日 有限オートマトン2 2・3章の小テスト
7 6月02日 正規表現
8 6月09日 正規表現,非決定性有限オートマトン
9 6月16日 中間試験,前半のまとめ
授業の予定
回数 月日 内容
10 6月23日 NFA→DFA11 6月30日 DFAの最小化
12 7月07日 DFAの最小化,有限オートマトン の応用
13 7月14日 プッシュダウンオートマトン, チューリング機械
14 7月21日 形式言語理論,文脈自由文法
15 7月28日 期末試験,まとめ
今日のメニュー
同値類
DFAの最小化
有限オートマトンの応用
同値関係
(6ページを参照)
xRzyRzxRyAzyxyRxxRyAyx
xRxAxRR
ならばかつに対し,推移的 : 任意の
ならばに対し,対称的 : 任意の
に対し, 反射的 : 任意の
は同値関係つの性質を持つとき,が以下の関係
,, ,
3
同値関係 MR
同値類で受理される語の集合
同値の集合同値類
同値
同値関係
ならばかつに対し,推移律:任意の
ならばに対し,対称律:任意の
に対し,反射律:任意の
移律を満たす. 反射律,対称律,推が同値関係
は同値関係に対し,
b
M
MMM
MM
M
M
iM
q
yxR
zxRzyRyxRzyx
xyRyxRyx
xxRx
R
qySxSyxRyx
::,:
,,
,
),(),(:,
*
*
*
*
S iq
同値類
れる.は同値類に直和分割さ
と同値な要素の集合 :の同値類
と同値は
であるときがある2つの要素
るにおける同値関係とす集合
Aaaa
baRbaAba
AR
][
),(,:
直和: の和集合であるような集合 BABA ,
右不変同値関係
は右不変同値関係
ならば
に対し, 任意の
,ならばにおいて任意の
不変な関係は(連接に関して)右
,という性質があるときならばにおいて同値関係
M
b
b
M
MM
Rzyqzqzxq
qyqxq
ywxwRw
yxRyxyxR
RxzRyzxRyR
)),,((),()),,((),(),(
*
*,:
00
00
MR
0q bq
右不変同値関係
は右不変同値関係
は右不変性を持つ
ならばかつ
の時も同様
かつならば
かつ)かつ(かつ推移律 (
を満たすならば
の時も同様
かつならばかつ対称律
を満たす反射律
ない)に属すか,ともに属さともに(
かつまたはかつ
に対し, において,任意の任意の
不変な関係は(連接に関して)右,という性質があるときならばにおいて同値関係
L
LLL
LL
L
L
RRL
zxRzyRyxRF
FzwqFxwqFzwqFywqFywqFxwq
xyRyxRF
FxwqFywqFywqFxwqxxR
LywxwFywqFxwqFywqFxwq
wyxyxR
RxzRyzxRyR
),(),( ),(),(),(),(
),(),(),(),(
, ),(),(),(),(
*,:
00
0000
0000
0000
LR
状態の統合
w
w
w
w
w
w FwqFwqw ),2(),1( かつ
FwqFwqw ),1( ),2( かつ
FwqFwqw ),1( ),2( かつ
12
例題4.57
図4.25の状態遷移図で示されるDFAを最小化せよ
DFAの最小化
→
受理言語を変更せずに
状態数を最小にする
q2q0
1
1
ε
q1
q4 q5 q6
q30
0
0
0
0
0
0
1
11
1
1
状態数7↓
状態数?
13
例題4.57 ①,②
q6q5q4q3q2q1q0○××q6
○××q5○××q4
×××○××q3×××○××q2
××○q1××○q0
q2とq3:受理状態,q0,q1,q4,q5,q6:非受理状態
〇:統合可能×:統合不可能空欄:調査中
も
保留○
保留
arrrrrrrrrrrrrrrrrrrr
brrrrrrrrrrarrrrrrrrrr
rrrrrrrrrr
, ),()1,1(, ),()0,0(:),( ),()1,1(, ),()0,0(:),( ),()1,1(, ),()0,0(:),(
),()1,1(, ),()0,0(:),(),()1,1(,),()0,0(:),(
1241534141
3460216060
4450615050
1440514040
2410311010
例題4.57 ③-1状態の組:0による遷移とその結果,1による遷移とその結果⇒同値評価
受理状態
×
q0
q4
q4
q1
1
1
q1
q2
1
1
例題4.57 ③-2
q1
q6
q3
q21
10
01
10 0
状態の組:0による遷移とその結果,1による遷移とその結果⇒同値評価
受理状態
),()1,1( , ),()0,0(:),( ),()1,1( , ),()0,0(:),( ),()1,1( , ),()0,0(:),(
),()1,1( , ),()0,0(:),( ),()1,1( , ),()0,0(:),(
),()1,1( , ),()0,0(:),(
3465266565
3164256464
4154655454
1632233232
3261236161
4251635151
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
drrrrrrrrrrcrrrrrrrrrr
rrrrrrrrrr
保留
保留
16
例題4.57 ④
q6q5q4q3q2q1q0○××××○×q6×○××××○q5××○××××q4×××○○××q3×××○○××q2○××××○×q1×○××××○q0
17
例題4.57 最小化後の状態遷移図
[q0,q5]
[q4]
[q1,q6] [q2,q3]
ε
11
0,10
0
10
状態数:7→4
q2q0
1
1
ε
q1
q4 q5 q6
q30
0
0
0
0
0
0
1
11
1
1
例題4.60 (01*+1*0)*
正規表現→ε-NFA→NFA→DFA→最小化DFA
19
例題4.60 (01*+1*0)*
0
0
1
1
εε
ε
正規表現→ε-NFA01*
1*0
教科書p.113
20
例題4.60 (01*+1*0)*
{q0,q1,q2}{q0,q1,q2}q1
{q2}{q0,q2}q2
{q2}{q0,q1,q2}q0
10NFA
--{q2}{q0}{q2}
{q0}{q1}--{q1}
{q2}--{q1}{q0}ε10ε-NFA
0
0
1
1
εε
ε
ε-NFA →NFA
q0 q1
q2
q0
0,1
q1
q2
0,10,1
0
0
0
0,10,1ε
教科書p.110
21
例題4.60 (01*+1*0)*
{q0,q1,q2}{q0,q1,q2}q1
{q2}{q0,q2}q2
{q2}{q0,q1,q2}q0
10NFA
[q2][q0,q2][q2]
[q0,q1,q2][q0,q1,q2][q0,q1,q2]
[q2][q0,q1,q2][q0,q2]
[q2][q0,q1,q2][q0]
10DFA
NFA →DFA
[q0] [q2]
[q0,q1,q2]
[q0,q2]
ε
0,1
1
10 0
0
1
q0
0,1
q1
q2
0,10,1
0
0
0
0,10,1ε
教科書p.108
22
例題4.60 (01*+1*0)*
[q2][q0,q2][q2]
[q0,q1,q2][q0,q1,q2][q0,q1,q2]
[q2][q0,q1,q2][q0,q2]
[q2][q0,q1,q2][q0]
10DFA
DFAのラベルの付換え
[q0] [q2]
[q0,q1,q2]
[q0,q2]
ε
0,1
1
10 0
0
1
S0:[q0]S1:[q0,q1,q2]S2:[q2]S3:[q0,q2]
ラベルの付換え
教科書p.121
S2S3S2
S1S1S1
S2S1S3
S2S1S0
10DFA
23
例題4.60 (01*+1*0)*(r0,r1): (r0-0, r1-0)=(r1,r1)○
, (r0-1, r1-1)=(r2,r1)×
(r0,r3): (r0-0, r3-0)=(r1,r1)○
, (r0-1, r3-1)=(r2,r2)○(r1,r3): (r1-0, r3-0)=(r1,r1)○
, (r1-1, r3-1)=(r1,r2)×
○××○s3×○××s2××○×s1○××○s0
s3s2s1s0
DFA →DFAの最小化 教科書p.121
S2S3S2
S1S1S1
S2S1S3
S2S1S0
10DFA
0 1
[S0,S3] [S1] [S2]
S1 [S1] [S1]
S2 [S0,S3] [S2]
24
例題4.60の答え
(01*+1*0)*0
0
1
1
εε
1
0
0,1
1
0
1
0
1
0,1
1
00
==
ε-NFA DFA DFAの最小化
ε ε ε
25
4.4.6 有限オートマトンの応用
普段お世話になっているコンパイラはどん な作業をしているのだろうか.
26
例題4.63
S0
S1
S2
0
n n,0
ε
n:1…9
入力された記号列が0または正の整数値かどうかを判断するFAを構成せよ
ここまで
27
例題4.64 整数値かどうか
ε
n
0
0,n
-n
整数
○:0, 1003, -20×:02, -0
n:1…9
28
例題4.65Σ={0,n, .}上の語について,入力された語が整数あるい
は小数点2桁以内の非負の実数値の表現となっているかど うかを判断するFAを構成せよ.nは1~9の数字を表す.
○:0.11, 123.1, 1.0×:01.1, 5., 1.234
小数点
29
練習問題1 例題4.66
Σ={0,n, .,-}上の語について,入力された語が整数あるいは実数の表現となっているかどうかを判断するFAを構成せよ.nは1~9の数字を表す.○:51, 0.11, 123.1, 1.0, -0.9, -10.30, -1.3333333×:01.1, 5., -01.2, -.2
30
例題4.66の手がかり
例題4.65Σ={0,n, .}上の語について,入力された語が整数あるい
は小数点2桁以内の非負の実数値の表現となっているかど うかを判断するFAを構成せよ.nは1~9の数字を表す.
○:0.11, 123.1, 1.0×:01.1, 5., 1.234
小数点
31
練習問題1 例題4.66の答え
ε
n
0
0,n
n
-
0,n
.
-
n
0,n
n
0
0.
整数
実数
0,n小数点
32
練習問題2 例題4.67 FORTRAN,C言語の変数名
FORTRANの変数名英字から始まる6文字以内の英数字列
C言語の変数名英字から始まる任意長の英数字列
33
練習問題2 例題4.67の答え FORTRAN
英字から始まる6文字以内の英数字
c c,nc,nc,nc,nc,n
ε
c: 任意の英字n: 任意の数字
34
練習問題2 例題4.67の答え C言語
英字から始まる任意長の英数字
c c,n
ε
c: 任意の英字n: 任意の数字
今日のまとめ
ε動作を含むNFA→ε動作を含まないNFA
正規表現→
ε動作を含むNFA
同値類
DFAの最小化
有限オートマトンの応用