4章 dfaの最小化,有限オートマトンの応用ysuzuki/public/automaton/...nfa→dfa 11...

35
オートマトンと言語 12回目 77日(水) 授業資料 http://ir.cs.yamanashi.ac.jp/~ysuzuki/public/automaton/ 4DFAの最小化,有限オートマトンの応用

Upload: others

Post on 02-Mar-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 4章 DFAの最小化,有限オートマトンの応用ysuzuki/public/automaton/...NFA→DFA 11 6月30日 DFAの最小化 12 7月07日 DFAの最小化,有限オートマトン の応用

オートマトンと言語 12回目

7月7日(水)

授業資料

http://ir.cs.yamanashi.ac.jp/~ysuzuki/public/automaton/

4章

DFAの最小化,有限オートマトンの応用

Page 2: 4章 DFAの最小化,有限オートマトンの応用ysuzuki/public/automaton/...NFA→DFA 11 6月30日 DFAの最小化 12 7月07日 DFAの最小化,有限オートマトン の応用

山梨大学

プログラミングコンペティション

http://www.cs.yamanashi.ac.jp/progcomp10/

部門:

初級者部門(KM1・2年生)

一般部門

サッカー部門

スケジュール:

07月01日

課題発表(既に発表済み)

07月30日

応募締め切り

10月22日

解答締め切り

11月05日

成績発表

11月17日

表彰式(優秀者には豪華(!?)な副賞も)

Page 3: 4章 DFAの最小化,有限オートマトンの応用ysuzuki/public/automaton/...NFA→DFA 11 6月30日 DFAの最小化 12 7月07日 DFAの最小化,有限オートマトン の応用

授業の予定

回数 月日 内容

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日 中間試験,前半のまとめ

Page 4: 4章 DFAの最小化,有限オートマトンの応用ysuzuki/public/automaton/...NFA→DFA 11 6月30日 DFAの最小化 12 7月07日 DFAの最小化,有限オートマトン の応用

授業の予定

回数 月日 内容

10 6月23日 NFA→DFA11 6月30日 DFAの最小化

12 7月07日 DFAの最小化,有限オートマトン の応用

13 7月14日 プッシュダウンオートマトン, チューリング機械

14 7月21日 形式言語理論,文脈自由文法

15 7月28日 期末試験,まとめ

Page 5: 4章 DFAの最小化,有限オートマトンの応用ysuzuki/public/automaton/...NFA→DFA 11 6月30日 DFAの最小化 12 7月07日 DFAの最小化,有限オートマトン の応用

今日のメニュー

同値類

DFAの最小化

有限オートマトンの応用

Page 6: 4章 DFAの最小化,有限オートマトンの応用ysuzuki/public/automaton/...NFA→DFA 11 6月30日 DFAの最小化 12 7月07日 DFAの最小化,有限オートマトン の応用

同値関係

(6ページを参照)

xRzyRzxRyAzyxyRxxRyAyx

xRxAxRR

ならばかつに対し,推移的 : 任意の

ならばに対し,対称的 : 任意の

に対し, 反射的 : 任意の

は同値関係つの性質を持つとき,が以下の関係

,, ,

3

Page 7: 4章 DFAの最小化,有限オートマトンの応用ysuzuki/public/automaton/...NFA→DFA 11 6月30日 DFAの最小化 12 7月07日 DFAの最小化,有限オートマトン の応用

同値関係 MR

同値類で受理される語の集合

同値の集合同値類

同値

同値関係

ならばかつに対し,推移律:任意の

ならばに対し,対称律:任意の

に対し,反射律:任意の

移律を満たす. 反射律,対称律,推が同値関係 

は同値関係に対し,

b

M

MMM

MM

M

M

iM

q

yxR

zxRzyRyxRzyx

xyRyxRyx

xxRx

R

qySxSyxRyx

::,:

,,

,

),(),(:,

*

*

*

*

S iq

Page 8: 4章 DFAの最小化,有限オートマトンの応用ysuzuki/public/automaton/...NFA→DFA 11 6月30日 DFAの最小化 12 7月07日 DFAの最小化,有限オートマトン の応用

同値類

れる.は同値類に直和分割さ

と同値な要素の集合 :の同値類  

と同値は

であるときがある2つの要素

るにおける同値関係とす集合

Aaaa

baRbaAba

AR

][

),(,:

直和: の和集合であるような集合 BABA ,

Page 9: 4章 DFAの最小化,有限オートマトンの応用ysuzuki/public/automaton/...NFA→DFA 11 6月30日 DFAの最小化 12 7月07日 DFAの最小化,有限オートマトン の応用

右不変同値関係

は右不変同値関係

ならば

 

に対し,     任意の

,ならばにおいて任意の

不変な関係は(連接に関して)右

,という性質があるときならばにおいて同値関係

M

b

b

M

MM

Rzyqzqzxq

qyqxq

ywxwRw

yxRyxyxR

RxzRyzxRyR

)),,((),()),,((),(),(

*

*,:

00

00

MR

0q bq

Page 10: 4章 DFAの最小化,有限オートマトンの応用ysuzuki/public/automaton/...NFA→DFA 11 6月30日 DFAの最小化 12 7月07日 DFAの最小化,有限オートマトン の応用

右不変同値関係

は右不変同値関係

は右不変性を持つ

ならばかつ

の時も同様

かつならば

かつ)かつ(かつ推移律 (

を満たすならば      

の時も同様

かつならばかつ対称律 

  を満たす反射律 

ない)に属すか,ともに属さともに(

かつまたはかつ    

に対し, において,任意の任意の

不変な関係は(連接に関して)右,という性質があるときならばにおいて同値関係

L

LLL

LL

L

L

RRL

zxRzyRyxRF

FzwqFxwqFzwqFywqFywqFxwq

xyRyxRF

FxwqFywqFywqFxwqxxR

LywxwFywqFxwqFywqFxwq

wyxyxR

RxzRyzxRyR

),(),( ),(),(),(),(

),(),(),(),(

, ),(),(),(),(

*,:

00

0000

0000

0000

LR

Page 11: 4章 DFAの最小化,有限オートマトンの応用ysuzuki/public/automaton/...NFA→DFA 11 6月30日 DFAの最小化 12 7月07日 DFAの最小化,有限オートマトン の応用

状態の統合

w

w

w

w

w

w FwqFwqw ),2(),1( かつ 

FwqFwqw ),1( ),2( かつ

FwqFwqw ),1( ),2( かつ

Page 12: 4章 DFAの最小化,有限オートマトンの応用ysuzuki/public/automaton/...NFA→DFA 11 6月30日 DFAの最小化 12 7月07日 DFAの最小化,有限オートマトン の応用

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↓

状態数?

Page 13: 4章 DFAの最小化,有限オートマトンの応用ysuzuki/public/automaton/...NFA→DFA 11 6月30日 DFAの最小化 12 7月07日 DFAの最小化,有限オートマトン の応用

13

例題4.57 ①,②

q6q5q4q3q2q1q0○××q6

○××q5○××q4

×××○××q3×××○××q2

××○q1××○q0

q2とq3:受理状態,q0,q1,q4,q5,q6:非受理状態

〇:統合可能×:統合不可能空欄:調査中

Page 14: 4章 DFAの最小化,有限オートマトンの応用ysuzuki/public/automaton/...NFA→DFA 11 6月30日 DFAの最小化 12 7月07日 DFAの最小化,有限オートマトン の応用

保留○

保留

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

Page 15: 4章 DFAの最小化,有限オートマトンの応用ysuzuki/public/automaton/...NFA→DFA 11 6月30日 DFAの最小化 12 7月07日 DFAの最小化,有限オートマトン の応用

例題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

保留

保留

Page 16: 4章 DFAの最小化,有限オートマトンの応用ysuzuki/public/automaton/...NFA→DFA 11 6月30日 DFAの最小化 12 7月07日 DFAの最小化,有限オートマトン の応用

16

例題4.57 ④

q6q5q4q3q2q1q0○××××○×q6×○××××○q5××○××××q4×××○○××q3×××○○××q2○××××○×q1×○××××○q0

Page 17: 4章 DFAの最小化,有限オートマトンの応用ysuzuki/public/automaton/...NFA→DFA 11 6月30日 DFAの最小化 12 7月07日 DFAの最小化,有限オートマトン の応用

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

Page 18: 4章 DFAの最小化,有限オートマトンの応用ysuzuki/public/automaton/...NFA→DFA 11 6月30日 DFAの最小化 12 7月07日 DFAの最小化,有限オートマトン の応用

例題4.60 (01*+1*0)*

正規表現→ε-NFA→NFA→DFA→最小化DFA

Page 19: 4章 DFAの最小化,有限オートマトンの応用ysuzuki/public/automaton/...NFA→DFA 11 6月30日 DFAの最小化 12 7月07日 DFAの最小化,有限オートマトン の応用

19

例題4.60 (01*+1*0)*

0

0

1

1

εε

ε

正規表現→ε-NFA01*

1*0

教科書p.113

Page 20: 4章 DFAの最小化,有限オートマトンの応用ysuzuki/public/automaton/...NFA→DFA 11 6月30日 DFAの最小化 12 7月07日 DFAの最小化,有限オートマトン の応用

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

Page 21: 4章 DFAの最小化,有限オートマトンの応用ysuzuki/public/automaton/...NFA→DFA 11 6月30日 DFAの最小化 12 7月07日 DFAの最小化,有限オートマトン の応用

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

Page 22: 4章 DFAの最小化,有限オートマトンの応用ysuzuki/public/automaton/...NFA→DFA 11 6月30日 DFAの最小化 12 7月07日 DFAの最小化,有限オートマトン の応用

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

Page 23: 4章 DFAの最小化,有限オートマトンの応用ysuzuki/public/automaton/...NFA→DFA 11 6月30日 DFAの最小化 12 7月07日 DFAの最小化,有限オートマトン の応用

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]

Page 24: 4章 DFAの最小化,有限オートマトンの応用ysuzuki/public/automaton/...NFA→DFA 11 6月30日 DFAの最小化 12 7月07日 DFAの最小化,有限オートマトン の応用

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の最小化

ε ε ε

Page 25: 4章 DFAの最小化,有限オートマトンの応用ysuzuki/public/automaton/...NFA→DFA 11 6月30日 DFAの最小化 12 7月07日 DFAの最小化,有限オートマトン の応用

25

4.4.6 有限オートマトンの応用

普段お世話になっているコンパイラはどん な作業をしているのだろうか.

Page 26: 4章 DFAの最小化,有限オートマトンの応用ysuzuki/public/automaton/...NFA→DFA 11 6月30日 DFAの最小化 12 7月07日 DFAの最小化,有限オートマトン の応用

26

例題4.63

S0

S1

S2

0

n n,0

ε

n:1…9

入力された記号列が0または正の整数値かどうかを判断するFAを構成せよ

ここまで

Page 27: 4章 DFAの最小化,有限オートマトンの応用ysuzuki/public/automaton/...NFA→DFA 11 6月30日 DFAの最小化 12 7月07日 DFAの最小化,有限オートマトン の応用

27

例題4.64 整数値かどうか

ε

n

0

0,n

-n

整数

○:0, 1003, -20×:02, -0

n:1…9

Page 28: 4章 DFAの最小化,有限オートマトンの応用ysuzuki/public/automaton/...NFA→DFA 11 6月30日 DFAの最小化 12 7月07日 DFAの最小化,有限オートマトン の応用

28

例題4.65Σ={0,n, .}上の語について,入力された語が整数あるい

は小数点2桁以内の非負の実数値の表現となっているかど うかを判断するFAを構成せよ.nは1~9の数字を表す.

○:0.11, 123.1, 1.0×:01.1, 5., 1.234

小数点

Page 29: 4章 DFAの最小化,有限オートマトンの応用ysuzuki/public/automaton/...NFA→DFA 11 6月30日 DFAの最小化 12 7月07日 DFAの最小化,有限オートマトン の応用

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

Page 30: 4章 DFAの最小化,有限オートマトンの応用ysuzuki/public/automaton/...NFA→DFA 11 6月30日 DFAの最小化 12 7月07日 DFAの最小化,有限オートマトン の応用

30

例題4.66の手がかり

例題4.65Σ={0,n, .}上の語について,入力された語が整数あるい

は小数点2桁以内の非負の実数値の表現となっているかど うかを判断するFAを構成せよ.nは1~9の数字を表す.

○:0.11, 123.1, 1.0×:01.1, 5., 1.234

小数点

Page 31: 4章 DFAの最小化,有限オートマトンの応用ysuzuki/public/automaton/...NFA→DFA 11 6月30日 DFAの最小化 12 7月07日 DFAの最小化,有限オートマトン の応用

31

練習問題1 例題4.66の答え

ε

n

0

0,n

n

-

0,n

.

-

n

0,n

n

0

0.

整数

実数

0,n小数点

Page 32: 4章 DFAの最小化,有限オートマトンの応用ysuzuki/public/automaton/...NFA→DFA 11 6月30日 DFAの最小化 12 7月07日 DFAの最小化,有限オートマトン の応用

32

練習問題2 例題4.67 FORTRAN,C言語の変数名

FORTRANの変数名英字から始まる6文字以内の英数字列

C言語の変数名英字から始まる任意長の英数字列

Page 33: 4章 DFAの最小化,有限オートマトンの応用ysuzuki/public/automaton/...NFA→DFA 11 6月30日 DFAの最小化 12 7月07日 DFAの最小化,有限オートマトン の応用

33

練習問題2 例題4.67の答え FORTRAN

英字から始まる6文字以内の英数字

c c,nc,nc,nc,nc,n

ε

c: 任意の英字n: 任意の数字

Page 34: 4章 DFAの最小化,有限オートマトンの応用ysuzuki/public/automaton/...NFA→DFA 11 6月30日 DFAの最小化 12 7月07日 DFAの最小化,有限オートマトン の応用

34

練習問題2 例題4.67の答え C言語

英字から始まる任意長の英数字

c c,n

ε

c: 任意の英字n: 任意の数字

Page 35: 4章 DFAの最小化,有限オートマトンの応用ysuzuki/public/automaton/...NFA→DFA 11 6月30日 DFAの最小化 12 7月07日 DFAの最小化,有限オートマトン の応用

今日のまとめ

ε動作を含むNFA→ε動作を含まないNFA

正規表現→

ε動作を含むNFA

同値類

DFAの最小化

有限オートマトンの応用