1 形式言語と決定性有限オートマトン
最初に、機械が入力として受け取る語と言語を定める。
決定性有限オートマトンでは、現在の状態と次の入力文字から遷移先が一意に定まる。
定義 1.2. 決定性有限オートマトン (deterministic finite automaton)(DFA)は、五項組
A=(Q,Σ,δ,q0,F)である。ここで、Qは空でない有限状態集合、Σは有限アルファベット、
δ:Q×Σ⟶Qは全域的な遷移関数、q0∈Qは初期状態、F⊆Qは受理状態集合である。
一文字の遷移を語へ拡張した拡張遷移関数 (extended transition function)
δ:Q×Σ∗⟶Qを
δ(q,ε)=q,δ(q,wa)=δ(δ(q,w),a)によって再帰的に定める。第二式ではw∈Σ∗、a∈Σである。
拡張遷移関数は、語を二つに切って順に読んでも同じ状態に至る。以後の記事でも用いるため、補題として分けておく。
補題 1.3. DFAA=(Q,Σ,δ,q0,F)、q∈Q、u,v∈Σ∗に対して
δ(q,uv)=δ(δ(q,u),v)が成り立つ。とくにa∈Σに対してδ(q,av)=δ(δ(q,a),v)である。
証明.vの長さに関する帰納法を用いる。v=εでは両辺ともδ(q,u)である。v=v′aでは
δ(q,uv′a)=δ(δ(q,uv′),a)=δ(δ(δ(q,u),v′),a)=δ(δ(q,u),v′a)である。後半はu=aの場合であり、δ(q,a)=δ(δ(q,ε),a)=δ(q,a)による。▨
定義 1.4. DFAA=(Q,Σ,δ,q0,F)が語w∈Σ∗を受理する (accept) とは、
δ(q0,w)∈Fが成り立つことをいう。Aの受理言語 (accepted language) を
L(A)={w∈Σ∗:δ(q0,w)∈F}と定める。
空語を入力した場合には遷移を一度も行わない。したがって、DFA が空語を受理することとq0∈Fは同値である。
例 1.5 (1の個数が偶数である語).Σ={0,1}とし、Q={E,O}、q0=E、F={E}とする。遷移を
δ(E,0)=E,δ(O,0)=O,δ(E,1)=O,δ(O,1)=Eと定める。
長さに関する帰納法により、語wを読み終えた状態がEであることと、wに現れる1の個数が偶数であることが同値になる。したがって、この DFA は1の個数が偶数である語をちょうど受理する。初期状態Eが受理状態であるため、空語も受理する。
2 非決定性と到達可能状態集合
非決定性有限オートマトンでは、一つの状態と入力文字に対して、遷移先が複数存在しても、存在しなくてもよい。
定義 2.1. 非決定性有限オートマトン (nondeterministic finite automaton)(NFA)は、五項組
N=(Q,Σ,Δ,q0,F)である。ここでQ,Σ,q0,Fは DFA と同じ種類のデータであり、遷移関数は
Δ:Q×Σ⟶P(Q)である。
状態集合S⊆Qから語を読んだ後に到達することができる状態集合
Δ(S,w)⊆Qを
Δ(S,ε)=S,Δ(S,wa)=q∈Δ(S,w)⋃Δ(q,a)によって定める。NFANがwを受理するとは、
Δ({q0},w)∩F=∅が成り立つことをいう。
受理条件は「すべての計算経路が受理する」ではなく、「入力全体を消費して受理状態へ至る計算経路が少なくとも一つ存在する」である。途中で受理状態を通っても、残りの入力を消費する経路がなければ、その経路は受理を与えない。
DFA は遷移先が常に一元集合である NFA とみなすことができる。
命題 2.2. DFAA=(Q,Σ,δ,q0,F)に対して
Δ(q,a)={δ(q,a)}と定めた NFANは、L(N)=L(A)を満たす。
証明. すべてのq∈Qとw∈Σ∗について
Δ({q},w)={δ(q,w)}を語の長さに関する帰納法で示す。
w=εでは両辺が{q}である。w=uaとし、uについて主張が成り立つと仮定する。このとき
Δ({q},ua)=p∈Δ({q},u)⋃Δ(p,a)=Δ(δ(q,u),a)={δ(δ(q,u),a)}={δ(q,ua)}.したがって帰納法が完了する。q=q0とすれば、NFA の到達可能状態集合がFと交わることと、DFA の最終状態がFに属することは同値である。よってL(N)=L(A)である。▨
3 空語遷移とその除去
空語遷移は、入力文字を消費せずに状態だけを変える遷移である。空語遷移を有限回たどる可能性を、空語閉包としてまとめる。
定義 3.1. 空語遷移付き非決定性有限オートマトン (nondeterministic finite automaton with epsilon transitions)(ε-NFA)は、五項組
M=(Q,Σ,Δ,q0,F)であり、遷移関数は
Δ:Q×(Σ∪{ε})⟶P(Q)である。
S⊆Qの空語閉包 (epsilon closure)E(S)は、Sを含み、空語遷移について閉じた最小の状態集合である。すなわち、E(S)は次の二条件を満たす最小の集合である。
- S⊆E(S)。
- q∈E(S)かつp∈Δ(q,ε)ならばp∈E(S)。
入力語を読んだ後の到達可能状態集合RM(S,w)を
RM(S,ε)=E(S),RM(S,wa)=Eq∈RM(S,w)⋃Δ(q,a)によって定める。Mがwを受理するとは、
RM({q0},w)∩F=∅が成り立つことをいう。
Qが有限であるため、空語閉包は有限回の追加で確定する。定義は、最初の入力文字を読む前、隣り合う二文字の間、最後の入力文字を読んだ後のいずれにも、空語遷移を有限回挿入することを許している。空語自身の受理条件はE({q0})∩F=∅である。
空語遷移は表記上便利であるが、認識することができる言語を増やさない。
定理 3.2. 任意のε-NFAMに対して、L(N)=L(M)を満たす NFANを構成することができる。
証明.M=(Q,Σ,Δ,q0,F)とする。同じ状態集合、アルファベット、初期状態をもつ NFA
N=(Q,Σ,ΔN,q0,FN)を次のように定める。
ΔN(q,a)=Ep∈E({q})⋃Δ(p,a),FN={q∈Q:E({q})∩F=∅}.遷移ΔN(q,a)は、qから空語遷移を任意回たどり、aを一文字読み、さらに空語遷移を任意回たどって到達することができる状態をすべて集めている。FNの定義は、入力を読み終えた後の空語遷移による受理を保存する。
Nの拡張遷移をΔNと書く。任意のS⊆Qとw∈Σ∗について
E(ΔN(S,w))=RM(S,w)という不変量を、語の長さに関する帰納法で示す。
帰納法で用いる空語閉包の二つの恒等式を、閉包の最小性から確認する。部分集合族(Si)i∈Iに対し、E(⋃iSi)は各Siを含む空語遷移について閉じた集合なので、最小性から
E(Si)⊆E(i⋃Si)が各iについて成り立つ。従って、
i⋃E(Si)⊆E(i⋃Si)である。逆に、⋃iE(Si)は⋃iSiを含む。さらに、q∈⋃iE(Si)なら、あるiについてq∈E(Si)であり、qからの全ての空語遷移先も同じE(Si)に属する。従って、⋃iE(Si)は空語遷移について閉じている。E(⋃iSi)の最小性から逆向きの包含も得るので、
E(i⋃Si)=i⋃E(Si)である。
また、E(S)自身が空語遷移について閉じているため、E(E(S))の最小性からE(E(S))⊆E(S)である。一方、空語閉包の定義からE(S)⊆E(E(S))である。従って、
E(E(S))=E(S)が成り立つ。
w=εのとき、左辺はE(S)、右辺は定義によりE(S)である。w=uaとし、uについて不変量が成り立つと仮定する。上で示した二つの恒等式を用いると、
E(ΔN(S,ua))=Eq∈ΔN(S,u)⋃ΔN(q,a)=Eq∈ΔN(S,u)⋃p∈E({q})⋃Δ(p,a)=Ep∈E(ΔN(S,u))⋃Δ(p,a)=Ep∈RM(S,u)⋃Δ(p,a)=RM(S,ua).したがって不変量がすべての語について成り立つ。
語wをNが受理することは、ある
q∈ΔN({q0},w)についてE({q})∩F=∅であることと同値である。この受理条件は
E(ΔN({q0},w))∩F=∅と同値であり、上の不変量によって
RM({q0},w)∩F=∅と同値である。よってL(N)=L(M)である。▨
4 部分集合構成
NFA の一回の実行経路を選ぶ代わりに、同じ入力を読んだ後に到達することができる状態をすべて同時に記録する。有限集合Qの部分集合は有限個しかないため、この記録自体を DFA の状態にすることができる。
定理 4.1 (部分集合構成). 任意の NFANに対して、L(D)=L(N)を満たす DFADを構成することができる。
証明.N=(Q,Σ,Δ,q0,F)とする。DFA
D=(P(Q),Σ,δD,{q0},FD)を
δD(S,a)=q∈S⋃Δ(q,a),FD={S⊆Q:S∩F=∅}によって定める。Δ(q,a)が空集合でもよいため、空集合も DFA の状態として含める。空集合からの遷移は常に空集合である。
DFA の拡張遷移をδD、NFA の拡張遷移をΔと書く。任意のS⊆Qとw∈Σ∗について
δD(S,w)=Δ(S,w)という不変量を、語の長さに関する帰納法で示す。
w=εの場合、両辺はSである。w=uaとし、uについて不変量が成り立つと仮定する。このとき
δD(S,ua)=δD(δD(S,u),a)=δD(Δ(S,u),a)=q∈Δ(S,u)⋃Δ(q,a)=Δ(S,ua).よってuaについても不変量が成り立つ。
特に、
δD({q0},w)∈FDであることと
Δ({q0},w)∩F=∅であることは同値である。したがってL(D)=L(N)である。▨
到達不可能な部分集合をP(Q)から除いても受理言語は変わらない。ただし、同値性の証明では全冪集合を状態集合として採用すると構成が明確になる。状態数は高々2∣Q∣である。
三つのモデルの関係をまとめる。
系 4.2. 有限アルファベットΣ上の言語L⊆Σ∗について、次の三条件は同値である。
- ある DFA がLを受理する。
- ある NFA がLを受理する。
- あるε-NFA がLを受理する。
証明.(1)⇒(2)を示す。DFA は各遷移先を一元集合に置き換えることにより NFA とみなすことができる。(2)⇒(3)を示す。NFA はすべての空語遷移先を空集合とすることによりε-NFA とみなすことができる。逆に、任意のε-NFA から定理 3.2によって同じ言語を受理する NFA を構成し、さらに定理 4.1 (部分集合構成)によって同じ言語を受理する DFA を構成することができる。▨
5 積構成
部分集合構成と同様に、有限個の状態を組にして同時に追跡することができる。既存の二つの DFA の判定を同時に行う積構成を示す。
定理 5.1.L1,L2⊆Σ∗がそれぞれ DFA の受理言語ならば、L1∩L2も DFA の受理言語である。
証明.Li=L(Ai)、
Ai=(Qi,Σ,δi,qi,Fi)(i=1,2)とする。積 DFA
A=(Q1×Q2,Σ,δ,(q1,q2),F1×F2)を
δ((p,r),a)=(δ1(p,a),δ2(r,a))で定める。
任意のw∈Σ∗について
δ((q1,q2),w)=(δ1(q1,w),δ2(q2,w))が成り立つことを、語の長さに関する帰納法で示す。空語の場合は拡張遷移の定義から従う。w=uaの場合は、uに関する帰納法の仮定と積遷移の定義を順に適用すればよい。したがってAがwを受理することは、A1とA2がともにwを受理することと同値である。よってL(A)=L1∩L2である。▨
積構成は、一方の DFA の受理状態集合を取り替えることによって差集合にも適用することができる。
系 5.2.L1,L2⊆Σ∗がそれぞれ DFA の受理言語ならば、L1∖L2も DFA の受理言語である。
証明.Li=L(Ai)、
Ai=(Qi,Σ,δi,qi,Fi)(i=1,2)とする。
最初にΣ∗∖L2を受理する DFA を構成する。A2の受理状態集合だけを取り替えた
A2′=(Q2,Σ,δ2,q2,Q2∖F2)を考える。定義 1.2によりδ2はQ2×Σの全体で定義されているので、拡張遷移関数の再帰的な定義から、任意のw∈Σ∗に対して状態δ2(q2,w)が定まる。実際、語の長さに関する帰納法により、w=εではδ2(q2,ε)=q2であり、w=uaでは帰納法の仮定で定まる状態δ2(q2,u)と文字aに対してδ2の値が定義されている。この状態はF2とQ2∖F2のちょうど一方に属するから、
w∈L(A2′)⟺δ2(q2,w)∈/F2⟺w∈/L(A2)が成り立つ。よってL(A2′)=Σ∗∖L2である。
この議論は遷移関数の全域性に依存する。ある状態と文字の組で遷移が定義されていない機械を許すと、その組に到達して計算を続けることができない語wが生じることがある。wはA2にもA2′にも受理されないので、そのようなwが存在する場合にはL(A2′)はΣ∗∖L2の真部分集合になり、補集合を与えない。
集合の等式
L1∖L2=L1∩(Σ∗∖L2)=L(A1)∩L(A2′)と定理 5.1により、L1∖L2は DFA の受理言語である。同定理の積構成をA1とA2′へ適用すると、L1∖L2を受理する DFA
(Q1×Q2,Σ,δ,(q1,q2),F1×(Q2∖F2))を明示的に得る。ここでδ((p,r),a)=(δ1(p,a),δ2(r,a))である。▨
7 演習
解答 (演習の要点).
- 状態集合を{q0,q1}、初期状態をq0、受理状態集合をF={q1}とし、遷移を空語遷移q0εq1一本だけとするε-NFA を考える。E({q0})={q0,q1}がFと交わるため、この機械は空語を受理する。除去後の NFA には文字遷移が一つもないため、受理状態集合をFのままにすると、空語の受理はq0∈Fと同値になり、成り立たない。定理 3.2のFN={q:E({q})∩F=∅}はq0を受理状態に含めるため、空語の受理を保存する。
- すべてのwについてδD(∅,w)=∅=Δ(∅,w)である。実際、w=εでは両辺とも∅であり、w=uaでは、空集合上の合併が空集合であることから、両辺とも∅のままである。空集合はFと交わらないため、どちらの機械もこの状態からは受理しない。
- 状態集合を{s}、初期状態をs、受理状態集合を{s}、遷移をすべてのa∈Σについてδ(s,a)=sとする DFA は、任意の語を読み終えた状態がsであるためΣ∗を受理する。よってΣ∗は DFA の受理言語である。任意のL1,L2⊆Σ∗について(Σ∗∖L1)∖L2=(Σ∗∖L1)∩(Σ∗∖L2)であり、この集合のΣ∗における補集合は De Morgan の法則によりL1∪L2である。したがってL1,L2が DFA の受理言語であれば、系 5.2を三回適用して、Σ∗∖L1、(Σ∗∖L1)∖L2、L1∪L2が順に DFA の受理言語であることが従う。定理 5.1の積構成において受理状態集合を(F1×Q2)∪(Q1×F2)へ取り替え、和集合を受理する DFA を直接構成することもできる。
▨