計算の理論 I -数学的概念と記法-

計算の理論 I
正則表現とFAとの等価性
月曜3校時
大月 美佳
平成15年6月16日
佐賀大学知能情報システム学科
1
今日の講義内容
1. 正則表現補足
2. 正則表現とFAの等価性
1. 正則表現→ε-NFA
2. DFA(NFA)→正則表現
3. ミニテスト
平成15年6月16日
佐賀大学知能情報システム学科
2
正規表現補足
慣れるためには、訓練が必要。
1. (00+1)*のバリエーション
(000+1)* : 0の個数が3の倍数連続
(0000+1)* : 0の個数が4の倍数連続
2. 記号の連続の制限
(1+01)*(ε+0) : 2個以上続く0を含まない
3. いろいろと当たってみる
教科書3.1.4 p.98~99
平成15年6月16日
佐賀大学知能情報システム学科
3
今日の新しいこと
1. 正則表現とFAの等価性
NFA
ε-動作を含む
NFA
DFA
正則表現
1.
正則表現からのε-動作を含むNFAの作り方
→p.111~116 3.2.3項 (例3.8, p. 115)
2.
DFAからの正則表現の作り方
→p.100~111 3.2.1, 3.2.2項 (例3.5, p. 103, 例3.6, p.109)
平成15年6月16日
佐賀大学知能情報システム学科
4
正則表現からのε-動作を含む
NFAの作り方
1. 括弧つきに書き換える
(00+1) → ((00)+1)*
2. 分解していく
1.
2.
3.
*
r = r 1*
r1 = r2+r3, r3 =1
r2 = r4+r5, r4 =1 , r5 =1
+
連接
0
平成15年6月16日
佐賀大学知能情報システム学科
1
0
5
NFAの作り方
(定理3.7 図3.16 p.113)
3. 末端(最小構成)をFAに変換する
1. r =ε
開始
q0
*
2. r =φ
開始
q0
+
qf
3. r = a
開始
平成15年6月16日
連接
q0
a
qf
佐賀大学知能情報システム学科
0
1
0
6
NFAの作り方
(定理3.7 図3.17 p.113)
3. 末端から根に向かってどんどん変換す
る
1. r =r1+r2
*
→ 図3.17 (a)
2. r =r1r2
+
→ 図3.17 (b)
3. r = r1*
連接
→ 図3.17 (c)
平成15年6月16日
佐賀大学知能情報システム学科
0
1
0
7
図3.17(a)
最終状態が1個だけ
r1 のNFA
開始
q1
f1
開始
q1
f1
ε
r2 のNFA
開始
q2
平成15年6月16日
+
ε
q0
f0
ε
f2
佐賀大学知能情報システム学科
ε
q2
f2
8
図3.17(b)
最終状態が1個だけ
r1 のNFA
開始
q1
f1
r2 のNFA
開始
q2
平成15年6月16日
開始
q1
f1
q2
f2
連接
f2
佐賀大学知能情報システム学科
9
図3.17(c)
最終状態が1個だけ
r1 のNFA
開始
q1
f1
*
開始
平成15年6月16日
q0
ε
ε
ε
q1
f1
ε
佐賀大学知能情報システム学科
f0
10
どんどんやってみる
1
q5
q7
開始
q1
0
q6
q2
ε
q3
0
やってみ
てね
*
q8
q4
+
q1
0
q2
ε
0
q3
連接
q4
1
1
q5
開始
0
0
開始
0
開始
平成15年6月16日
q1
q6
0
q2
開始
佐賀大学知能情報システム学科
q3
q4
11
NFAの生成例
正規表現 : 01*+1
1. 括弧つきに書き換える
r
01*+1 → ((0(1*))+1)
+
r1
2. 分解していく
1. r=r1+r2, r1=0(1*), r2=1
2. r1=r3r4, r3=0, r4=1*
3. r4=r5*, r5=1
r2
連接
r3
0
r4
*
1
r5
1
平成15年6月16日
佐賀大学知能情報システム学科
12
r
NFAの生成例
r1
(つづき 1)
正規表現 : 01*+1
3. 最小構成をFAに変換する
4. FAを組みあげていく
+
r3
0
連接
r4
*
1. r4=r5*, r5=1
q5
1
q6
2. r1=r3r4 , r3=0
開始
q3
0
q4
開始
q1
1
q2
平成15年6月16日
佐賀大学知能情報システム学科
1
r5
1
開始
3. r=r1+r2 , r2=1
r2
13
NFAの生成例
r
(つづき 2)
r1
4.1. r4=r5*
r3
連接
ε
ε
q5
1
r5=1
r2
r4
*
0
q7
+
1
r5
1
q6
ε
q8
ε
平成15年6月16日
佐賀大学知能情報システム学科
14
NFAの生成例
r
(つづき 3)
4.2. r1=r3r4
開始
r1
r3=0
0
q3
r3
0
q4
ε
q7
q5
連接
r2
r4
*
1
r5
1
ε
ε
+
1
r5=1
r4=r5*
q6
ε
q8
ε
平成15年6月16日
佐賀大学知能情報システム学科
15
r
NFAの生成例
ε
開始
q1
1
連接
r2
r4
*
0
r2=1
4.3. r=r1+r2
q9
r1
r3
(つづき 4)
+
1
r5
1
ε
q2
q10
ε
0
q3
ε
q4
ε
q7
ε
平成15年6月16日
ε
ε
q5
1
r5=1
q6
佐賀大学知能情報システム学科
r4=r5*
ε
q8
16
DFA→正則表現
(3.2.1項 p.100~)
考え方
1.ある状態からある状態の間の状態を0か
らひとつずつ増やしていって、
2.状態の任意の組からなる道が生成するこ
とのできる文字列の正則表現を再帰的に
拡張していき、
3.最後に、初期状態から最終状態への道が
生成できる文字列の正則表現を求める。
平成15年6月16日
佐賀大学知能情報システム学科
17
数学的に定義
 Mの状態をqiから途中qjより大きな番号の
状態を通らずに、qjにたどり着くことのでき
る入力列の集合
 Rijk  Rikk 1 ( Rkkk 1*)Rkjk 1  Rijk 1 (k  1)
 0
 Rij  {a |  (qi , a )  q j }  { } (i  jのとき )
 0
 Rij  {a |  (qi , a )  q j } (i  jのとき )
平成15年6月16日
佐賀大学知能情報システム学科
18
正則表現の式との対応
 Rijk  Rikk 1 ( Rkkk 1*)R kjk1  Rijk 1 (k  1)
 0
 Rij  {a |  (qi , a )  q j }  { } (i  jのとき )
 0
 Rij  {a |  (qi , a )  q j } (i  jのとき )
↓
rijk  rikk 1 (rkkk 1*)rkjk 1  rijk 1 (k  1)
 0
rij  a   (i  jのとき )
 0
rij  a (i  jのとき )
平成15年6月16日
佐賀大学知能情報システム学科
19
正則表現の生成例その1
1
0
q1
0
1
q2
0,1
開始
δ
q3
r110  {a |  (q1 , a )  q1}    
(1  1)
r120  {a |  (q1 , a )  q2 }  0
(1  2)
r130  {a |  (q1 , a )  q3 }  1
(1  3)
r210  {a |  (q2 , a )  q1}  0
(2  1)
r220  {a |  (q2 , a )  q2 }    
( 2  2)
(2  3)
0
1
q1
q2
q3
r230  {a |  (q2 , a )  q3 }  1
q2
q1
q3
r310  {a |  (q3 , a )  q1} φ
q3
q2
q2
r320  {a |  (q3 , a )  q2 }  0  1
(3  2)
r330  {a |  (q3 , a )  q3 }    
(3  3)
平成15年6月16日
佐賀大学知能情報システム学科
(3  1)
20
どんどん進める
k=1
r  r (r *)r  r   ( *)    
1
11
0
11
0
11
0
11
0
11
r121  r110 (r110 *)r120  r120   ( *)0  0  0  0  0
r131  r110 (r110 *)r130  r130   ( *)1  1  1  1  1
r211  r210 (r110 *)r110  r210  0( *)  0  0  0  0
r221  r210 (r110 *)r120  r220  0( *)0    00  
1
r231  r210 (r110 *)r130  r230  0( *)1  1  01 1
q1
r311  r310 (r110 *)r110  r310 φ( *) φφ
0
0
1
q2
0,1
q3
開始
r321  r310 (r110 *)r120  r320 φ( *)0  0  1  0  1
r331  r310 (r110 *)r130  r330 φ( *)1    
平成15年6月16日
佐賀大学知能情報システム学科
21
どんどん進める
k=2
r  r (r *)r  r  0((00   )*)0    0(00) * 0    (00) *
2
11
1
12
1
22
1
21
1
11
r122  r121 (r221 *)r221  r121  0((00   )*)(00   )  0  0(00) * 0  0(00) *
r132  r121 (r221 *)r231  r131  0((00   )*)(01 1)  1  0(00) * (0   )1  1
 00*1  1  0 *1
r212  r221 (r221 *)r211  r211  (00   )((00   )*)0  0  (00) * 0  0  (00) * 0
r222  r221 (r221 *)r221  r221  (00   )((00   )*)(00   )  (00   )
 (00) * 00    (00) *
1
r  r (r *)r  r  (00   )((00   )*)(01 1)  (01 1)
q1
2
23
1
22
1
22
1
23
1
23
0
 (00) * (0   )1  01 1  0 *1  01 1  0 *1
r312  r321 (r221 *)r211  r311  (0  1)((00   )*)0 φ (0  1)(00) * 0
0
1
q2
0,1
q3
開始
r322  r321 (r221 *)r221  r321  (0  1)((00   )*)(00   )  (0  1)
 (0  1)(00) * (0  1)  (0  1)(00) *
r332  r321 (r221 *)r231  r331  (0  1)((00   )*)(01 1)  
 (0  1)(00) * (01 1)    (0  1)(00) * (0   )1    (0  1)0 *1  
平成15年6月16日
佐賀大学知能情報システム学科
22
最終状態への道
r123  r132 (r332 *)r322  r122
k=3
 (0 *1)(((0  1)0 *1   )*)(0  1)(00) * 0(00) *
 0 *1((0  1)0 *1) * (0  1)(00) * 0(00) *
1
0
q1
r133  r132 (r332 *)r332  r132
0
1
q2
0,1
q3
開始
 0 *1(((0  1)0 *1   )*)((0  1)0 *1   )  (0 *1)
 0 *1((0  1)0 *1) * ((0  1)0 *1   )  0 *1
 0 *1((0  1)0 *1) *
r123  r133  0 *1((0  1)0 *1) * (0  1)(00) * (00) * 0 *1((0  1)0 *1) *
 0 *1((0  1)0 *1) * ((0  1)(00) *  )  0(00) *
平成15年6月16日
佐賀大学知能情報システム学科
23
まとめ方が難しい?
以下のルールを活用せよ
rs  sr
(r  s)  t  r  ( s  t )
(rs )t  r ( st )
r ( s  t )  rs  rt
(r  s )t  rt  st
平成15年6月16日
φ*  
(r*)* r *
(  r )*  r *
(r * s*)* (r  s) *
佐賀大学知能情報システム学科
24
正則表現の生成例その2
下の状態図に対応する正則表現を求めよ。
0
A
B
0
開始
平成15年6月16日
1
C
0
1
1
佐賀大学知能情報システム学科
25
とりあえず番号をつける
0
A
1
0
1
B
0
A
A
r110  
A
B
r120  0
A
C
r130  1
B
A
r210  0
B
B
r220  
C
r230  1
A
r310  1
B
r320  0
C
r330  
C
1
開始
1から!
A→1
B→2
C→3
B
C
C
平成15年6月16日
C
佐賀大学知能情報システム学科
26
状態Aが加わった
k=1 その1
r111  r110 (r110 *)r110  r110   ( *)    
ε
ε
A
ε
A
A
A
A
A
ε
ε
A
ε
A
A
A
A
ε
A
ε
A
A
r121  r110 (r110 *)r120  r120   ( *)0  0  0  0  0
ε
A
ε
A
A
A
A
ε
A
平成15年6月16日ε
A
B
ε
A
B
A
ε
A
ε
佐賀大学知能情報システム学科
A
B
27
状態Aが加わった
k=1 その2
r131  r110 (r110 *)r130  r130   ( *)1 1  1  1  1
ε
ε
A
ε
A
A
A
C
A
ε
ε
A
ε
A
A
A
C
ε
A
ε
A
C
r211  r210 (r110 *)r110  r210  0(0*)  0  00* 0  00*
ε
A
ε
B
A
B
A
ε
A
平成15年6月16日ε
A
A
ε
B
A
A
ε
A
ε
佐賀大学知能情報システム学科
A
A
28
状態Aが加わった
k=1 その3
r221  r210 (r110 *)r120  r220  0( *)0    00  
ε
ε
A
ε
B
B
A
B
A
ε
ε
A
ε
A
A
B
B
ε
A
ε
A
B
r231  r210 (r110 *)r130  r230  0( *)1 1  011
ε
ε
A
ε
B
A
B
A
ε
A
平成15年6月16日ε
A
C
ε
B
C
A
ε
A
ε
佐賀大学知能情報システム学科
A
C
29
状態Aが加わった
k=1 その4
r311  r310 (r110 *)r110  r310  1( *)  1  1  1  1
ε
ε
A
ε
C
C
A
A
A
ε
ε
A
ε
A
A
C
A
ε
A
ε
A
A
r321  r310 (r110 *)r120  r320  1( *)0  0  10  0
ε
ε
A
ε
B
A
B
A
ε
A
平成15年6月16日ε
A
C
ε
B
C
A
ε
A
ε
佐賀大学知能情報システム学科
A
C
30
状態Aが加わった
k=1 その5
r331  r310 (r110 *)r130  r330  1( *)1    11 
ε
ε
A
ε
C
C
A
C
A
ε
ε
A
ε
A
A
C
C
ε
A
ε
A
r 
r  00*
r311  1
r 0
r  00  
r321  10  0
r 1
r  01 1
r331  11 
1
11
1
12
1
13
平成15年6月16日
1
21
1
22
1
23
佐賀大学知能情報システム学科
C
31
さらに状態Bが加わった
k=2 例1
r112  r121 (r221 *)r211  r111  0((00   )*)00* 
 0(00) * 00* 
ε
ε
ε
A
B
ε
A
A
ε
ε
A
A
ε
平成15年6月16日
A
ε
A
A
ε
ε
ε
A
ε
ε
A
B
A
B
A
ε
ε
A
A
A
ε
ε
A
ε
ε
A
B
A
ε
A
佐賀大学知能情報システム学科
A
32
どんどん進める
k=2
r122  r121 (r221 *)r221  r121  0((00   )*)(00   )  0  0(00) * 0  0(00) *
r132  r121 (r221 *)r231  r131  0((00   )*)(01 1)  1  0(00) * (0   )1  1
 00*1  1  0 *1
r212  r221 (r221 *)r211  r211  (00   )((00   )*)00* 00*  (00) * 00* 00*
 (00) * 00*
r222  r221 (r221 *)r221  r221  (00   )((00   )*)(00   )  (00   )  (00) *
r232  r221 (r221 *)r231  r231  (00   )((00   )*)(01 1)  (01 1)
 ((00) *  )(01 1)  (00) * (0   )1  0 *1
r312  r321 (r221 *)r211  r311  (10  0)((00   )*)00* 1  (10  0)(00) * 00* 1
r322  r321 (r221 *)r221  r321  (10  0)((00   )*)(00   )  (10  0)
 (10  0)((00) *  )  (10  0)(00) *
r332  r321 (r221 *)r231  r331  (10  0)((00   )*)(01 1)  (11  )
 (10  0)(00) * (0   )1  11   (10  0)0 *1  11 
平成15年6月16日
佐賀大学知能情報システム学科
33
最終状態への道
k=3
r  r123  r133
r211  (00) * 00*
r123  r132 ( r332 *)r322  r122
r221  (00) *
r  r ( r *)r  r
r231  0 *1
r111  0(00) * 00* 
r312  (10  0)(00) * 00* 1
r122  0(00) *
r322  (10  0)(00) *
r131  0 *1
r332  (10  0)0 *1  11 
3
13
2
13
平成15年6月16日
2
33
2
33
2
13
佐賀大学知能情報システム学科
34
最終解
k=3
r122  0(00 ) *
r322  (10  0)( 00 ) *
r131  0 *1
r332  (10  0)0 *1  11  
r123  0 *1(((10  0)0 *1  11  )*)(10  0)(00) * 0(00) *
 0 *1((10  0)0 *1  11) * (10  0)(00) * 0(00) *
 0 *1(((10  0)0 *1) * (11)*)* (10  0)(00) * 0(00) *
r133  0 *1(((10  0)0 *1  11  )*)((10  0)0 *1  11  )  0 *1
 0 *1((10  0)0 *1  11) * 0 *1
 0 *1(((10  0)0 *1) * (11)*)* 0 *1
r123  r133  0(00) * 0 *1(  (((10  0)0 *1) * (11)*)* (  (10  0)(00)*))
平成15年6月16日
佐賀大学知能情報システム学科
35
状態消去法
(3.2.2項 p.105~)
 状態を正則表現に順次置き換えていく
1. オートマトンの全ての辺のラベルを正則表現に書き
2.
3.
4.
5.
改める
受理状態qと開始状態q0のみを残して、後は消去す
る(消去法: p.106-107, 図3.7→図3.8)
q≠q0の場合には、この2状態オートマトンに図3.9(p.
108)のようなラベル付けをする
q=q0の場合には、この1状態オートマトンに図3.10(p.
109)のようなラベル付けをする
3と4の和から全体を求める
平成15年6月16日
佐賀大学知能情報システム学科
36
消去後のFAと正則表現
図3.9 p.108
S
q0
→(R+SU*T)*SU*
q
T
開始
R
U
図3.10 p.109
開始
→R*
q0
R
平成15年6月16日
佐賀大学知能情報システム学科
37
状態消去法の例
(例3.6 p.109)
 末尾から2文字目か3文字目に1がある列
の全体を受理するFA
1
A
開始
平成15年6月16日
B
0,1
C
0,1
D
0,1
佐賀大学知能情報システム学科
38
ラベルの書き換え
 正則表現に書き換える
1
A
開始
平成15年6月16日
B
0+1
C
0+1
D
0+1
佐賀大学知能情報システム学科
39
状態Bの消去
 繰り返し作業を省くためこの時点で消去
A
1
0+1
B
φ
φ
A
開始
平成15年6月16日
φ+1φ*(0+1)
=1(0+1)
C
1(0+1)
C
0+1
D
0+1
佐賀大学知能情報システム学科
40
状態Cの消去
 (A, D)の組用
A
1(0+1)
0+1
C
φ
開始
A
1(0+1)(1+0)
D
φ+1(0+1)φ*(0+1)
=1(0+1)(0+1)
φ
D
0+1 ((0+1)+1(0+1)(1+0)φ*φ)*(1(0+1)(0+1))φ*
=(0+1)*1(0+1)(1+0)
平成15年6月16日
佐賀大学知能情報システム学科
41
状態Dの消去
 (A, C)の組用
C
開始
0+1
A
D
1(0+1)
0+1
平成15年6月16日
後続状態がない!
C
((0+1)+1(0+1)φ*φ)*(1(0+1))φ*
=(0+1)*1(0+1)
佐賀大学知能情報システム学科
42
最終的な正則表現
 (A, C)と(A, D)の正則表現の和
→ (0+1)*1(0+1)+(0+1)*1(0+1)(0+1)
平成15年6月16日
佐賀大学知能情報システム学科
43
ミニテストと次回内容
 ミニテスト
教科書・資料を見ても、友達と相談しても良い
15分後に指名された人は板書
 ミニテストを提出すること
出したら帰って良し
 次回(6/23)内容
DFAの最小化
平成15年6月16日
佐賀大学知能情報システム学科
44