40
第第第第第第第第第 「」

第2章 「有限オートマトン」

  • Upload
    raleigh

  • View
    71

  • Download
    0

Embed Size (px)

DESCRIPTION

第2章 「有限オートマトン」. 2.1 定義 2.2 正規集合の演算 2.3 Nerode の定理 2.4 非決定性の有限オートマトン 2.5 正規表現と正規集合 2.6 順序機械と状態最小化. 第2章の内容. 有限オートマトン  M = (K, Σ, δ, q 0 , F) K = {q 0 , q 1 , …, q n } : 状態の集合 Σ= {a, b, …, c} : 文字の集合(アルファベット) q 0 : 初期状態 δ : 遷移関数 K×Σ→ K F :  受理状態の集合( K の部分集合). - PowerPoint PPT Presentation

Citation preview

Page 1: 第2章 「有限オートマトン」

第2章「有限オートマトン」

Page 2: 第2章 「有限オートマトン」

第2章の内容

2.1 定義2.2 正規集合の演算2.3 Nerode の定理2.4 非決定性の有限オートマトン2.5 正規表現と正規集合2.6 順序機械と状態最小化

Page 3: 第2章 「有限オートマトン」

2.1 定義

a1 a2 ai

qqヘッド

テープ

有限オートマトン  M = (K, Σ, δ, q0, F) K = {q0, q1, …, qn} : 状態の集合 Σ= {a, b, …, c} : 文字の集合(アルファベット) q0 : 初期状態 δ : 遷移関数 K×Σ→ K F :  受理状態の集合( K の部分集合)

Page 4: 第2章 「有限オートマトン」

(1) δ(q, e) = q (q ∈ K)

(2) δ(q, ax) =δ(δ(q, a), x) (q∈K, a∈Σ, x∈Σ*)

文字列 w に対して δ(q0, w) は,その文字列を読んだときのオートマトンの状態を表す。

δ(q0, w) = p ∈ F であるとき, M は w を受理するという。M が受理する文字列全体: L(M) ={w | δ(q0, w) ∈ F}

オートマトンによって受理される集合を正規言語という。

 定義つづき

遷移関数を次のように拡張する。

Page 5: 第2章 「有限オートマトン」

a

b

b a

a,b

q0 q1

q2

δ(q0, aba) = δ(δ(q0, a), ba) = δ(q1, ba) = δ(d(q1, b), a) = δ(q0, a) = q1 ∈ F

状態遷移図(図2)状態遷移

L(M) = {a(ba)n | n≧0}

 オートマトンの例( p8 )

Page 6: 第2章 「有限オートマトン」

2.2 正規集合の演算

アルファベット Σ 上の正規集合の族R (Σ) = {L | L は正規言語 }

は集合演算∪ , ∩,  ̄のもとでブール代数をなす

R (Σ)

L1 L2

Page 7: 第2章 「有限オートマトン」

 補題 2.1

L を受理するオートマトンを M=(K, Σ, δ, q0,F) とするとき, M=(K, Σ, δ, q0, K-F)とすると  L(M) = L(M) となる .

補題 2.1

正規集合 L の補集合 L =Σ* - L は正規集合

証明

Page 8: 第2章 「有限オートマトン」

L1, L2 ⊆ Σ * を正規集合とする。(1) L1∪ L2 は正規集合である。(2) L1∩ L2 は正規集合である。

L1 = L(M1) 、 M1 = (K1, Σ, δ1, q01, F1) とし、 L2 に

対しても M2 を定義する。 M1, M2 から次の遷移関数 d と受理状態 F をつくる。 δ = ((q1, q2), a) = (δ1(q1, a), δ2(q2, a))

(q1∈K1, q2∈K2, a∈Σ) F = F1×K2∪K1×F2

 補題 2.2

補題 2.2

証明(1) について証明する。

Page 9: 第2章 「有限オートマトン」

δ = ((q1, q2), e) = (δ1(q1, e), δ2(q2, e)) = (q1, q2)

任意の q1∈K1, q2∈K2 に対して,

数学的帰納法のベースステップ

δ = ((q1, q2), x) = (δ1(q1, x), δ2(q2, x)) ( 仮定 |x|≦k)

δ((q1, q2), ax) = δ(δ((q1, q2), a), x)

= δ((δ1(q1, a), δ2(q2, a)), x)

= (δ1(δ1(q1, a), x), δ2(δ2(q2, a), x))

= (δ1(q1, ax), δ2(q2, ax))

定義より

帰納法の仮定

帰納法の仮定

定義より

 証明つづき

Page 10: 第2章 「有限オートマトン」

x ∈ L(M) ⇔ δ((q01, q0

2), x) ∈ F

⇔ (δ1(q01, x), δ2(q0

2, x)) ∈ F1×K2∪K1×F2

⇔ δ1(q01, x) ∈ F1  または  δ2(q0

2, x) ∈ F2

⇔ x ∈ L(M1)∪L(M2)

(2) の証明は省略

 証明つづき

(1) のときと、終状態の条件が違うだけ。

Page 11: 第2章 「有限オートマトン」

2.3 Nerode の定理

Σ* 上の関係 R は、xRy ⇒ 任意の z∈Σ* に対して xzRyz

を満たすとき右不変であるという。

関係 R は、 R による同値類の数が有限であるとき、有限指数であるという。

Page 12: 第2章 「有限オートマトン」

次の3つは同等である .  (1) 集合 L⊆Σ* は正規である。  (2) L はある有限指数で右不変な同値関係 R

による同値類の和として表される。

  (3) 関係 ≡ は有限指数である。ただし≡

x≡y ⇔ 任意の z∈Σ* に対して

xz, yz∈L であるか xz, yz∈L である。

 定理 2.4 ( Nerode の定理)

定理 2.4

L

LL

「 xz L ∈ と yz L ∈ が同等である」の意

Page 13: 第2章 「有限オートマトン」

L = L(M) 、 M=(K, Σ, δ, q0, F) とし、関係 R をxRy ⇔ δ(q0, x) =δ(q0, y)

と定義すると、明らかに R は有限指数の同値関係である。( L が R の同値類の和として表されることもほとんど自明)

任意の x, y に対して δ(q, xy)=δ(δ(q, x), y) であるので

xRy ⇒ δ(q0, x)= δ(q0, y)⇒ δ(δ(q0, x), z) = δ(δ(q0, y), z)⇒ δ(q0, xz)= δ(q0, yz)⇒ xzRyz

より、 R は右不変である。

 証明 (1) (2)⇒

あとは R が右不変であることをいえばよろしい

Page 14: 第2章 「有限オートマトン」

(2)⇒(3) xRy ⇒ xzRyz (z∈Σ*) ⇒ xz∈L ⇔ yz∈L⇒ x≡y 。 よって≡は有限指数。

(3)⇒(1)同値関係≡の x を代表元とする同値類を [x] で表す。

K’={[x] | x∈Σ*}

δ’([x], a) = [xa]

q’0 = [ε]

F’ = {[x] | x∈L}

とすると δ’(q’0, x) =δ’([ε], x) = [εx] = [x] であるのでx∈L(M’) ⇔ [x]∈F’ ⇔ x∈L

 証明 (2)⇒ (3) 、 (3)⇒ (1)

L L

L

ゆえに L(M’) = L である。L は正規ってこと

Page 15: 第2章 「有限オートマトン」

Nerode の定理は、ある言語 L が正規でないことを示すときに有効な道具となる。

Nerode の定理は、ある言語 L が正規でないことを示すときに有効な道具となる。

Σ={a, b} 上の言語を L={anbn | n≧0} とする。

L を正規と仮定すると、 ai≡aj となる整数 i, j (i<j) が存在し、≡は右不変であるので aibi≡ajbi となるはずである。ところがこれは成立しないので矛盾である。すなわち、 L は正規でない。

 例 2.2

L

L L

Page 16: 第2章 「有限オートマトン」

非決定性のオートマトンとは M=(K, Σ, δ, Q0, F) のことである。ただし Q0⊂K で δ は K×Σから 2K への関数である。その他の要素は決定性と同様。

2.4 非決定性の有限オートマトン

これまでのオートマトンは、文字 a と状態 q に対して δ(q, a) は一意に定まった。このようなオートマトンを決定性であるという。

非決定性のオートマトン

Page 17: 第2章 「有限オートマトン」

非決定性の遷移関数の定義域を次のようにしてK×Σ から K×Σ* へ拡張する。

δ(q, e) = {q}

δ(q, ax) = ∪ δ(p, x) (q∈K, a∈Σ, x∈Σ*) p∈δ(q, a)

これはさらに 2K×Σ* に拡張される。

δ(S, x) = ∪ δ(q, x)q ∈S

そして , x∈Σ* が M によって受理されるとは、δ(Q0, x)∩F ≠Φ であることをいう。

 遷移関数と受理状態

Page 18: 第2章 「有限オートマトン」

b q1q1q0b

a,b

例えば abb に対してはδ(q0, abb) = δ(q0, bb)

= δ(q0,b)∪δ(q1,b)

= {q0}∪{q1}∪{q2}

= {q0, q1, q2}

となり q2∈F であるから abb∈L(M) である。

 例 2.3

非決定性有限オートマトンの状態図

Page 19: 第2章 「有限オートマトン」

定義より、決定性の有限オートマトンは |δ(q, a)| = 1 であるような非決定性オートマトンの特別な場合である。しかしながらこれらのオートマトンの能力には差はないことが示される。

定義より、決定性の有限オートマトンは |δ(q, a)| = 1 であるような非決定性オートマトンの特別な場合である。しかしながらこれらのオートマトンの能力には差はないことが示される。

L⊆Σ* が正規であるための必要十分条件は, L が非決定性の有限オートマトンによって受理されることである。

任意の非決定性の M に対して、 L(M) = L(M’) となる決定性の M’ を構成できることを示せば十分である。

 定理 2.5

定理 2.5

証明の方針

Page 20: 第2章 「有限オートマトン」

K の任意の部分集合に1つの状態を割り当て、それらに対して次の決定性の M’ をつくる。

K’ = 2K

δ’(S, a) = ∪ δ(q, a) q ∈S

q’0 = Q0

F’ ={R | R ∈ K’ かつ R∩F≠Φ}

このオートマトンは M の状態の集合を1つの状態とみなして ( {q1, q2,…, qk} = p という具合に ) 書き直した

だけであり、L(M) = L(M’) が成立することはすぐに分かる。

 定理 2.5 の証明非決定性の有限オートマトン M=(K, Σ, δ, Q0, F) を考える。

ポイント!

Page 21: 第2章 「有限オートマトン」

例 2.3 の非決定性オートマトン M に対して、証明の方法に従って M’ を構成すると以下のようになる .K={Φ, {q0}, {q1}, {q2}, {q0, q1}, {q0, q2}, {q1, q2}, {q0, q1, q2}}q’0={q0}

F={{q2},{q0, q2}, {q1, q2}, {q0, q1, q2}}

 例 2.4

b

a

a{q0}

{q0, q1, q2} {q0, q2}

{q0, q1}

b

a

b

a

b

{q0}

φ

a

{q2}

{q1, q2}

b

a,b

a,b

a

b

Page 22: 第2章 「有限オートマトン」

2.5 正規表現と正規集合

この節で分かること正規表現の(数学的な)定義と意味づけ

正規表現は文字列処理において重要な概念 UNIX システムやプログラミング言語

( Perl 、 Ruby 等)で用いられる正規表現は(実用的に)拡張されている

有限オートマトンと正規表現とが、言語を定義する能力において同等である

正規表現で定義される言語Lを受理する有限オートマトンが存在する

その逆もいえる

Page 23: 第2章 「有限オートマトン」

Unix 等における正規表現

ファイル名の正規表現> rm * .txt> cp Important[0-9].doc

検索ツール Grep の正規表現> grep –E “for.+(256|CHAR_SIZE)” * .c

プログラミング言語 Perl の正規表現$line = m|^http://.+\.jp/.+$|

Page 24: 第2章 「有限オートマトン」

 正規表現の定義 アルファベット Σ 上の正規表現とは

A={), (, f, ・ , +, *} を用いて次のように定義される。 (1) φ と Σ の要素は正規表現である (2) α と β が正規表現ならば (α ・ β) も正規表現である (3) α と β が正規表現ならば (α+β) も正規表現である (4) α が正規表現ならば α* も正規表現である (5) 上から導かれるものだけが正規表現である

例: (a ・ (a+b)*)

Page 25: 第2章 「有限オートマトン」

正規表現を Σ* の部分集合に写像する (i) ||φ|| =φ (ii) a∈Σ に対して ||a|| = {a} (iii) 正規表現 α,β に対して ||(α ・ β)|| = ||α|| ・ ||

β|| (iv) 正規表現 α,β に対して ||(α+β)|| = ||α||+||β|| (v) 正規表現 α に対して ||α*|| = ||α||*

例: ||(a ・ (a+b)*)||

= {ax | x∈{a,b}*}

 正規表現の意味づけ

a q1q0

q2

b

a,b

a,b

Page 26: 第2章 「有限オートマトン」

定理 2.10  (正規表現→正規集合)補題 2.2(1) ( 2.2 節より、和 L1 L∪ 2 は正規集

合)補題 2.6 (空集合は正規集合)補題 2.7 (任意の一文字は正規集合)補題 2.8 (積 L1 ・ L2 は正規集合)補題 2.9 (閉包 L* は正規集合)

定理 2.12  (正規集合→正規表現)補題 2.11 ( ||αij

(k)|| = Rij(k) )

割と簡単

結構たいへん

2.5 節の構成(同等の証明)

Page 27: 第2章 「有限オートマトン」

 例 2.7 図 2.9 の有限オートマトンに対する正規表現

γ=α11(3) + α13

(3)

α11(3) = α11

(2) + α13(2) ・ (α33

(2))* ・ α31(2)

α11(2) = α11

(1) + α12(1) ・ (α22

(1))* ・ α21(1)

α11(1) = α11

(0) + α11(0) ・ (α11

(0))* ・ α11(0)

=(a+φ*)+(a+φ*) ・ (a+φ*)* ・ (a+φ*)

=a*

α12(1) = α12

(0) + α11(0) ・ (α11

(0))* ・ α12(0) = b+(a* ・ b)

α22(1) = α22

(0) + α21(0) ・ (α11

(0))* ・ α12(0) = a ・ a* ・ b

α21(1) = α21

(0) + α21(0) ・ (α11

(0))* ・ α11(0) = a ・ a*

・・・ γ= a*+a*(baa*)*+a*(baa*)*bbb*+ ・・・

Page 28: 第2章 「有限オートマトン」

2.6 順序機械と状態最小化

atcgaatccg...atcgaatccg...

有限オートマトン

有限オートマトン

YesYes NoNoor

atcgaatccg...atcgaatccg...

順序機械順序機械

00101100010...00101100010...

順序機械とは

Page 29: 第2章 「有限オートマトン」

 順序機械の概念図

qqヘッド

a1 a2 ai入力テープ

b1 b2 bi出力テープ

Page 30: 第2章 「有限オートマトン」

 順序機械の数学的定義

順序機械は、 5つ組 S=(K,Σ,⊿,δ,λ)K : 状態の(空でない)集合Σ : 入力アルファベット⊿: 出力アルファベットδ : 遷移関数  K×Σ→K   ( K×Σ*→K )λ: 出力関数  K×Σ→⊿   ( K×Σ*→⊿* )(本当はスタート地点を表す q0 もいる)

λ(q,ε)=ε   ( q∈K )λ(q,ax)=λ(q,a)λ(δ(q,a), x)

( q∈K, a∈Σ, x∈Σ*)

Page 31: 第2章 「有限オートマトン」

 例 2.8 (図 2.11 )

q0

q3

q5

q1 q2

q4

0/01/1

1/10/0

0/00/0

0/0

0/01/0

1/0

1/0

1/1

λ(q0, 011)

=λ(q0, 0)λ(δ(q0,0), 11)

= 0λ(q4, 11)

= 0λ(q4, 1)λ(δ(q4,1), 1)

= 01λ(q5, 1)

= 010

Page 32: 第2章 「有限オートマトン」

 一般順序機械

一般順序機械とは順序機械の出力関数を

K×Σ→⊿* に拡張したもの一般順序機械 S = (K,Σ,⊿,δ,λ) に対して

S(x) =λ(q0, x) (x∈Σ*)

gsm 写像L⊆Σ* に対して

S(L) = {λ(q0, x) | x∈L}

語 x の S による変換

Σ* 上の言語から⊿ *上の言語への翻訳を意味する

Page 33: 第2章 「有限オートマトン」

 同値・等価・既約 Si=(Ki,Σ,⊿,δi,λi) (i=1,2) について

状態 p∈K1 と q∈K2 は、任意の x に対してλ1(p, x) =λ2(q, x) であるとき同値といいp≡q とかく ( p≡q ならば δ1(p,x) =δ2(q,x) )

S1 と S2 は任意の p∈K1 に対して p≡q となるq∈K2 が存在し、その逆の場合も成り立つとき等価であるといい S1≡S2 とかく

S=(K,Σ,⊿,δ,λ) は任意の p, q∈K に対して p≡q ならば p=q で

あるとき既約であるという

補題 2.13

Page 34: 第2章 「有限オートマトン」

 定理 2.14

定理 2.14

[p] を ≡ による p を含む同値類として、これを状態とする順序機械を構成する(略:教科書 p25 )

証明

任意の順序機械 S に対して S≡S’ となる既約な順序機械 S’ が存在する

Page 35: 第2章 「有限オートマトン」

 定理 2.15

定理 2.15

証明

既約な順序機械は、それと等価な順序機械のうちで、状態数が最小である

ほぼ自明

p

q既約な S

r

S’

|K|> |K’|p≡r, q≡r

p≡q

矛盾 !

Page 36: 第2章 「有限オートマトン」

 順序機械の状態を最小にする手順

等価で既約な S’ を作ればよい定理 2.14 →既約なものが存在することを保

k 同値λ(p,x)=λ(q,x) がすべての |x|≦k なる x∈Σ*

に対して成り立つとき、 p と q は k 同値であるといい p≡q とかく

Ck を ≡ による K の同値類の集合とする

k

k

Page 37: 第2章 「有限オートマトン」

 定理 2.16

定理 2.16

順序機械 S=(K,Σ,⊿,δ,λ) に対して次の関係が成立する

1. p ≡ q であるための必要十分条件は、 p≡q かつ

任意の a∈Σ に対して δ(p,a)≡δ(q,a) となること

2. Ck+1=Ck ならば j≧k なるすべての j に対して Ck=Cj

3. Ck+1=Ck であれば、 p≡q となる必要十分条件は p≡q

4. |C1|=1 ならば、 C2 = C1

5. n=|K|≧2 ならば、 Cn = Cn-1

k+1 k

k

k

k=1,2,…,n の順に Ck を計算していくと、必ず Ck+1 = Ck となるk が求まり、このとき Ck は≡による同値類の集合に等しいk=1,2,…,n の順に Ck を計算していくと、必ず Ck+1 = Ck となるk が求まり、このとき Ck は≡による同値類の集合に等しい

Page 38: 第2章 「有限オートマトン」

 例 2.9

q0

q3

q5

q1 q2

q4

0/01/1

1/10/0

0/00/0

0/0

0/01/0

1/0

1/0

1/1

p0 p2

p3p1

0/0

0/00/0

0/0

1/1

1/1

1/0

1/0

変換

Page 39: 第2章 「有限オートマトン」

 有限オートマトンの状態最小化のしかた 有限オートマトン M に等価で、状態数が

最小Nerode の定理より、同値関係≡のもとで同値

類を状態にもつ有限オートマトン M’ 状態を最小化する手順

定理 2.17 (定理 2.16 とほぼ同じ)による具体的には

離れ小島になっている状態を削除 同値関係≡による同値類 Ck を計算する

ここで関係≡はp≡q ⇔ 任意の |x|≦k なる x∈Σ* に対して

   δ(p, x)∈F←→δ(q, x)∈F

L

k

k

k

Page 40: 第2章 「有限オートマトン」

 例 2.10

q0 q3

q5

q1 q2

q4

a

a

a

a

a

b

b

b

b b

ab

ap1p0

p2

bab

a,b

変換