§E15.1有限オートマトン

最終更新

有限オートマトンは、有限個の状態だけを記憶として用い、有限文字列が言語に属するかどうかを判定する。本記事では、遷移が一意に定まる決定性モデル、複数の遷移先を許す非決定性モデル、入力を消費しない空語遷移を許すモデルを定義する。空語遷移を除去し、続いて状態集合を一つの状態として追跡することにより、三つのモデルが同じ言語のクラスを認識することを証明する。

1 形式言語と決定性有限オートマトン

最初に、機械が入力として受け取る語と言語を定める。

定義 1.1. アルファベット (alphabet)Σ\Sigmaは空でない有限集合である。Σ\Sigmaの元を文字 (symbol) という。有限個の文字を順に並べたものをΣ\Sigma上の語 (word) といい、語全体の集合をΣ∗\Sigma^*と書く。長さ00の唯一の語を空語 (empty word) といい、ε\varepsilonと書く。

二つの語u,vu,vを順に並べて得られる語を連接uvuvという。空語は連接の単位元であり、

εw=wε=w\varepsilon w=w\varepsilon=w

が成り立つ。Σ∗\Sigma^*の部分集合をΣ\Sigma上の形式言語 (formal language) という。

決定性有限オートマトンでは、現在の状態と次の入力文字から遷移先が一意に定まる。

定義 1.2. 決定性有限オートマトン (deterministic finite automaton)(DFA)は、五項組

A=(Q,Σ,δ,q0,F)A=(Q,\Sigma,\delta,q_0,F)

である。ここで、QQは空でない有限状態集合、Σ\Sigmaは有限アルファベット、

δ:Q×Σ⟶Q\delta:Q\times\Sigma\longrightarrow Q

は全域的な遷移関数、q0∈Qq_0\in Qは初期状態、F⊆QF\subseteq Qは受理状態集合である。

一文字の遷移を語へ拡張した拡張遷移関数 (extended transition function)

δ^:Q×Σ∗⟶Q\widehat{\delta}:Q\times\Sigma^*\longrightarrow Q

を

δ^(q,ε)=q,δ^(q,wa)=δ(δ^(q,w),a)\widehat{\delta}(q,\varepsilon)=q,\qquad \widehat{\delta}(q,wa)=\delta(\widehat{\delta}(q,w),a)

によって再帰的に定める。第二式ではw∈Σ∗w\in\Sigma^*、a∈Σa\in\Sigmaである。

拡張遷移関数は、語を二つに切って順に読んでも同じ状態に至る。以後の記事でも用いるため、補題として分けておく。

補題 1.3. DFAA=(Q,Σ,δ,q0,F)A=(Q,\Sigma,\delta,q_0,F)、q∈Qq\in Q、u,v∈Σ∗u,v\in\Sigma^*に対して

δ^(q,uv)=δ^(δ^(q,u),v)\widehat{\delta}(q,uv)=\widehat{\delta}\bigl(\widehat{\delta}(q,u),v\bigr)

が成り立つ。とくにa∈Σa\in\Sigmaに対してδ^(q,av)=δ^(δ(q,a),v)\widehat{\delta}(q,av)=\widehat{\delta}(\delta(q,a),v)である。

証明.vvの長さに関する帰納法を用いる。v=εv=\varepsilonでは両辺ともδ^(q,u)\widehat{\delta}(q,u)である。v=v′av=v'aでは

δ^(q,uv′a)=δ(δ^(q,uv′),a)=δ(δ^(δ^(q,u),v′),a)=δ^(δ^(q,u),v′a)\widehat{\delta}(q,uv'a) =\delta\bigl(\widehat{\delta}(q,uv'),a\bigr) =\delta\bigl(\widehat{\delta}(\widehat{\delta}(q,u),v'),a\bigr) =\widehat{\delta}\bigl(\widehat{\delta}(q,u),v'a\bigr)

である。後半はu=au=aの場合であり、δ^(q,a)=δ(δ^(q,ε),a)=δ(q,a)\widehat{\delta}(q,a)=\delta(\widehat{\delta}(q,\varepsilon),a)=\delta(q,a)による。▨

定義 1.4. DFAA=(Q,Σ,δ,q0,F)A=(Q,\Sigma,\delta,q_0,F)が語w∈Σ∗w\in\Sigma^*を受理する (accept) とは、

δ^(q0,w)∈F\widehat{\delta}(q_0,w)\in F

が成り立つことをいう。AAの受理言語 (accepted language) を

L(A)={w∈Σ∗:δ^(q0,w)∈F}L(A)=\{w\in\Sigma^*:\widehat{\delta}(q_0,w)\in F\}

と定める。

空語を入力した場合には遷移を一度も行わない。したがって、DFA が空語を受理することとq0∈Fq_0\in Fは同値である。

例 1.5 (1の個数が偶数である語).Σ={0,1}\Sigma=\{0,1\}とし、Q={E,O}Q=\{E,O\}、q0=Eq_0=E、F={E}F=\{E\}とする。遷移を

δ(E,0)=E,δ(O,0)=O,δ(E,1)=O,δ(O,1)=E\delta(E,0)=E,\quad \delta(O,0)=O,\quad \delta(E,1)=O,\quad \delta(O,1)=E

と定める。

長さに関する帰納法により、語wwを読み終えた状態がEEであることと、wwに現れる11の個数が偶数であることが同値になる。したがって、この DFA は11の個数が偶数である語をちょうど受理する。初期状態EEが受理状態であるため、空語も受理する。

2 非決定性と到達可能状態集合

非決定性有限オートマトンでは、一つの状態と入力文字に対して、遷移先が複数存在しても、存在しなくてもよい。

定義 2.1. 非決定性有限オートマトン (nondeterministic finite automaton)(NFA)は、五項組

N=(Q,Σ,Δ,q0,F)N=(Q,\Sigma,\Delta,q_0,F)

である。ここでQ,Σ,q0,FQ,\Sigma,q_0,Fは DFA と同じ種類のデータであり、遷移関数は

Δ:Q×Σ⟶P(Q)\Delta:Q\times\Sigma\longrightarrow\mathcal{P}(Q)

である。

状態集合S⊆QS\subseteq Qから語を読んだ後に到達することができる状態集合

Δ^(S,w)⊆Q\widehat{\Delta}(S,w)\subseteq Q

を

Δ^(S,ε)=S,Δ^(S,wa)=⋃q∈Δ^(S,w)Δ(q,a)\widehat{\Delta}(S,\varepsilon)=S,\qquad \widehat{\Delta}(S,wa) =\bigcup_{q\in\widehat{\Delta}(S,w)}\Delta(q,a)

によって定める。NFANNがwwを受理するとは、

Δ^({q0},w)∩F≠∅\widehat{\Delta}(\{q_0\},w)\cap F\ne\varnothing

が成り立つことをいう。

受理条件は「すべての計算経路が受理する」ではなく、「入力全体を消費して受理状態へ至る計算経路が少なくとも一つ存在する」である。途中で受理状態を通っても、残りの入力を消費する経路がなければ、その経路は受理を与えない。

DFA は遷移先が常に一元集合である NFA とみなすことができる。

命題 2.2. DFAA=(Q,Σ,δ,q0,F)A=(Q,\Sigma,\delta,q_0,F)に対して

Δ(q,a)={δ(q,a)}\Delta(q,a)=\{\delta(q,a)\}

と定めた NFANNは、L(N)=L(A)L(N)=L(A)を満たす。

証明. すべてのq∈Qq\in Qとw∈Σ∗w\in\Sigma^*について

Δ^({q},w)={δ^(q,w)}\widehat{\Delta}(\{q\},w)=\{\widehat{\delta}(q,w)\}

を語の長さに関する帰納法で示す。

w=εw=\varepsilonでは両辺が{q}\{q\}である。w=uaw=uaとし、uuについて主張が成り立つと仮定する。このとき

Δ^({q},ua)=⋃p∈Δ^({q},u)Δ(p,a)=Δ(δ^(q,u),a)={δ(δ^(q,u),a)}={δ^(q,ua)}.\begin{aligned} \widehat{\Delta}(\{q\},ua) &=\bigcup_{p\in\widehat{\Delta}(\{q\},u)}\Delta(p,a)\\ &=\Delta(\widehat{\delta}(q,u),a)\\ &=\{\delta(\widehat{\delta}(q,u),a)\}\\ &=\{\widehat{\delta}(q,ua)\}. \end{aligned}

したがって帰納法が完了する。q=q0q=q_0とすれば、NFA の到達可能状態集合がFFと交わることと、DFA の最終状態がFFに属することは同値である。よってL(N)=L(A)L(N)=L(A)である。▨

3 空語遷移とその除去

空語遷移は、入力文字を消費せずに状態だけを変える遷移である。空語遷移を有限回たどる可能性を、空語閉包としてまとめる。

定義 3.1. 空語遷移付き非決定性有限オートマトン (nondeterministic finite automaton with epsilon transitions)(ε\varepsilon-NFA)は、五項組

M=(Q,Σ,Δ,q0,F)M=(Q,\Sigma,\Delta,q_0,F)

であり、遷移関数は

Δ:Q×(Σ∪{ε})⟶P(Q)\Delta:Q\times(\Sigma\cup\{\varepsilon\}) \longrightarrow\mathcal{P}(Q)

である。

S⊆QS\subseteq Qの空語閉包 (epsilon closure)E(S)E(S)は、SSを含み、空語遷移について閉じた最小の状態集合である。すなわち、E(S)E(S)は次の二条件を満たす最小の集合である。

  1. S⊆E(S)S\subseteq E(S)。
  2. q∈E(S)q\in E(S)かつp∈Δ(q,ε)p\in\Delta(q,\varepsilon)ならばp∈E(S)p\in E(S)。

入力語を読んだ後の到達可能状態集合RM(S,w)R_M(S,w)を

RM(S,ε)=E(S),R_M(S,\varepsilon)=E(S),RM(S,wa)=E(⋃q∈RM(S,w)Δ(q,a))R_M(S,wa) =E\left( \bigcup_{q\in R_M(S,w)}\Delta(q,a) \right)

によって定める。MMがwwを受理するとは、

RM({q0},w)∩F≠∅R_M(\{q_0\},w)\cap F\ne\varnothing

が成り立つことをいう。

QQが有限であるため、空語閉包は有限回の追加で確定する。定義は、最初の入力文字を読む前、隣り合う二文字の間、最後の入力文字を読んだ後のいずれにも、空語遷移を有限回挿入することを許している。空語自身の受理条件はE({q0})∩F≠∅E(\{q_0\})\cap F\ne\varnothingである。

空語遷移は表記上便利であるが、認識することができる言語を増やさない。

定理 3.2. 任意のε\varepsilon-NFAMMに対して、L(N)=L(M)L(N)=L(M)を満たす NFANNを構成することができる。

証明.M=(Q,Σ,Δ,q0,F)M=(Q,\Sigma,\Delta,q_0,F)とする。同じ状態集合、アルファベット、初期状態をもつ NFA

N=(Q,Σ,ΔN,q0,FN)N=(Q,\Sigma,\Delta_N,q_0,F_N)

を次のように定める。

ΔN(q,a)=E(⋃p∈E({q})Δ(p,a)),\Delta_N(q,a) =E\left( \bigcup_{p\in E(\{q\})}\Delta(p,a) \right),FN={q∈Q:E({q})∩F≠∅}.F_N=\{q\in Q:E(\{q\})\cap F\ne\varnothing\}.

遷移ΔN(q,a)\Delta_N(q,a)は、qqから空語遷移を任意回たどり、aaを一文字読み、さらに空語遷移を任意回たどって到達することができる状態をすべて集めている。FNF_Nの定義は、入力を読み終えた後の空語遷移による受理を保存する。

NNの拡張遷移をΔ^N\widehat{\Delta}_Nと書く。任意のS⊆QS\subseteq Qとw∈Σ∗w\in\Sigma^*について

E(Δ^N(S,w))=RM(S,w)E(\widehat{\Delta}_N(S,w))=R_M(S,w)

という不変量を、語の長さに関する帰納法で示す。

帰納法で用いる空語閉包の二つの恒等式を、閉包の最小性から確認する。部分集合族(Si)i∈I(S_i)_{i\in I}に対し、E(⋃iSi)E(\bigcup_iS_i)は各SiS_iを含む空語遷移について閉じた集合なので、最小性から

E(Si)⊆E(⋃iSi)E(S_i)\subseteq E\left(\bigcup_iS_i\right)

が各iiについて成り立つ。従って、

⋃iE(Si)⊆E(⋃iSi)\bigcup_iE(S_i)\subseteq E\left(\bigcup_iS_i\right)

である。逆に、⋃iE(Si)\bigcup_iE(S_i)は⋃iSi\bigcup_iS_iを含む。さらに、q∈⋃iE(Si)q\in\bigcup_iE(S_i)なら、あるiiについてq∈E(Si)q\in E(S_i)であり、qqからの全ての空語遷移先も同じE(Si)E(S_i)に属する。従って、⋃iE(Si)\bigcup_iE(S_i)は空語遷移について閉じている。E(⋃iSi)E(\bigcup_iS_i)の最小性から逆向きの包含も得るので、

E(⋃iSi)=⋃iE(Si)E\left(\bigcup_iS_i\right)=\bigcup_iE(S_i)

である。

また、E(S)E(S)自身が空語遷移について閉じているため、E(E(S))E(E(S))の最小性からE(E(S))⊆E(S)E(E(S))\subseteq E(S)である。一方、空語閉包の定義からE(S)⊆E(E(S))E(S)\subseteq E(E(S))である。従って、

E(E(S))=E(S)E(E(S))=E(S)

が成り立つ。

w=εw=\varepsilonのとき、左辺はE(S)E(S)、右辺は定義によりE(S)E(S)である。w=uaw=uaとし、uuについて不変量が成り立つと仮定する。上で示した二つの恒等式を用いると、

E(Δ^N(S,ua))=E(⋃q∈Δ^N(S,u)ΔN(q,a))=E(⋃q∈Δ^N(S,u)⋃p∈E({q})Δ(p,a))=E(⋃p∈E(Δ^N(S,u))Δ(p,a))=E(⋃p∈RM(S,u)Δ(p,a))=RM(S,ua).\begin{aligned} E(\widehat{\Delta}_N(S,ua)) &=E\left( \bigcup_{q\in\widehat{\Delta}_N(S,u)} \Delta_N(q,a) \right)\\ &=E\left( \bigcup_{q\in\widehat{\Delta}_N(S,u)} \bigcup_{p\in E(\{q\})}\Delta(p,a) \right)\\ &=E\left( \bigcup_{p\in E(\widehat{\Delta}_N(S,u))} \Delta(p,a) \right)\\ &=E\left( \bigcup_{p\in R_M(S,u)}\Delta(p,a) \right)\\ &=R_M(S,ua). \end{aligned}

したがって不変量がすべての語について成り立つ。

語wwをNNが受理することは、ある

q∈Δ^N({q0},w)q\in\widehat{\Delta}_N(\{q_0\},w)

についてE({q})∩F≠∅E(\{q\})\cap F\ne\varnothingであることと同値である。この受理条件は

E(Δ^N({q0},w))∩F≠∅E(\widehat{\Delta}_N(\{q_0\},w))\cap F\ne\varnothing

と同値であり、上の不変量によって

RM({q0},w)∩F≠∅R_M(\{q_0\},w)\cap F\ne\varnothing

と同値である。よってL(N)=L(M)L(N)=L(M)である。▨

4 部分集合構成

NFA の一回の実行経路を選ぶ代わりに、同じ入力を読んだ後に到達することができる状態をすべて同時に記録する。有限集合QQの部分集合は有限個しかないため、この記録自体を DFA の状態にすることができる。

定理 4.1 (部分集合構成). 任意の NFANNに対して、L(D)=L(N)L(D)=L(N)を満たす DFADDを構成することができる。

証明.N=(Q,Σ,Δ,q0,F)N=(Q,\Sigma,\Delta,q_0,F)とする。DFA

D=(P(Q),Σ,δD,{q0},FD)D=(\mathcal{P}(Q),\Sigma,\delta_D,\{q_0\},F_D)

を

δD(S,a)=⋃q∈SΔ(q,a),\delta_D(S,a)=\bigcup_{q\in S}\Delta(q,a),FD={S⊆Q:S∩F≠∅}F_D=\{S\subseteq Q:S\cap F\ne\varnothing\}

によって定める。Δ(q,a)\Delta(q,a)が空集合でもよいため、空集合も DFA の状態として含める。空集合からの遷移は常に空集合である。

DFA の拡張遷移をδ^D\widehat{\delta}_D、NFA の拡張遷移をΔ^\widehat{\Delta}と書く。任意のS⊆QS\subseteq Qとw∈Σ∗w\in\Sigma^*について

δ^D(S,w)=Δ^(S,w)\widehat{\delta}_D(S,w)=\widehat{\Delta}(S,w)

という不変量を、語の長さに関する帰納法で示す。

w=εw=\varepsilonの場合、両辺はSSである。w=uaw=uaとし、uuについて不変量が成り立つと仮定する。このとき

δ^D(S,ua)=δD(δ^D(S,u),a)=δD(Δ^(S,u),a)=⋃q∈Δ^(S,u)Δ(q,a)=Δ^(S,ua).\begin{aligned} \widehat{\delta}_D(S,ua) &=\delta_D(\widehat{\delta}_D(S,u),a)\\ &=\delta_D(\widehat{\Delta}(S,u),a)\\ &=\bigcup_{q\in\widehat{\Delta}(S,u)}\Delta(q,a)\\ &=\widehat{\Delta}(S,ua). \end{aligned}

よってuauaについても不変量が成り立つ。

特に、

δ^D({q0},w)∈FD\widehat{\delta}_D(\{q_0\},w)\in F_D

であることと

Δ^({q0},w)∩F≠∅\widehat{\Delta}(\{q_0\},w)\cap F\ne\varnothing

であることは同値である。したがってL(D)=L(N)L(D)=L(N)である。▨

到達不可能な部分集合をP(Q)\mathcal{P}(Q)から除いても受理言語は変わらない。ただし、同値性の証明では全冪集合を状態集合として採用すると構成が明確になる。状態数は高々2∣Q∣2^{|Q|}である。

三つのモデルの関係をまとめる。

系 4.2. 有限アルファベットΣ\Sigma上の言語L⊆Σ∗L\subseteq\Sigma^*について、次の三条件は同値である。

  1. ある DFA がLLを受理する。
  2. ある NFA がLLを受理する。
  3. あるε\varepsilon-NFA がLLを受理する。

証明.(1)⇒\Rightarrow(2)を示す。DFA は各遷移先を一元集合に置き換えることにより NFA とみなすことができる。(2)⇒\Rightarrow(3)を示す。NFA はすべての空語遷移先を空集合とすることによりε\varepsilon-NFA とみなすことができる。逆に、任意のε\varepsilon-NFA から定理 3.2によって同じ言語を受理する NFA を構成し、さらに定理 4.1 (部分集合構成)によって同じ言語を受理する DFA を構成することができる。▨

5 積構成

部分集合構成と同様に、有限個の状態を組にして同時に追跡することができる。既存の二つの DFA の判定を同時に行う積構成を示す。

定理 5.1.L1,L2⊆Σ∗L_1,L_2\subseteq\Sigma^*がそれぞれ DFA の受理言語ならば、L1∩L2L_1\cap L_2も DFA の受理言語である。

証明.Li=L(Ai)L_i=L(A_i)、

Ai=(Qi,Σ,δi,qi,Fi)(i=1,2)A_i=(Q_i,\Sigma,\delta_i,q_i,F_i) \qquad (i=1,2)

とする。積 DFA

A=(Q1×Q2,Σ,δ,(q1,q2),F1×F2)A=(Q_1\times Q_2,\Sigma,\delta,(q_1,q_2),F_1\times F_2)

を

δ((p,r),a)=(δ1(p,a),δ2(r,a))\delta((p,r),a)=(\delta_1(p,a),\delta_2(r,a))

で定める。

任意のw∈Σ∗w\in\Sigma^*について

δ^((q1,q2),w)=(δ^1(q1,w),δ^2(q2,w))\widehat{\delta}((q_1,q_2),w) = (\widehat{\delta}_1(q_1,w),\widehat{\delta}_2(q_2,w))

が成り立つことを、語の長さに関する帰納法で示す。空語の場合は拡張遷移の定義から従う。w=uaw=uaの場合は、uuに関する帰納法の仮定と積遷移の定義を順に適用すればよい。したがってAAがwwを受理することは、A1A_1とA2A_2がともにwwを受理することと同値である。よってL(A)=L1∩L2L(A)=L_1\cap L_2である。▨

積構成は、一方の DFA の受理状態集合を取り替えることによって差集合にも適用することができる。

系 5.2.L1,L2⊆Σ∗L_1,L_2\subseteq\Sigma^*がそれぞれ DFA の受理言語ならば、L1∖L2L_1\setminus L_2も DFA の受理言語である。

証明.Li=L(Ai)L_i=L(A_i)、

Ai=(Qi,Σ,δi,qi,Fi)(i=1,2)A_i=(Q_i,\Sigma,\delta_i,q_i,F_i) \qquad (i=1,2)

とする。

最初にΣ∗∖L2\Sigma^*\setminus L_2を受理する DFA を構成する。A2A_2の受理状態集合だけを取り替えた

A2′=(Q2,Σ,δ2,q2,Q2∖F2)A_2'=(Q_2,\Sigma,\delta_2,q_2,Q_2\setminus F_2)

を考える。定義 1.2によりδ2\delta_2はQ2×ΣQ_2\times\Sigmaの全体で定義されているので、拡張遷移関数の再帰的な定義から、任意のw∈Σ∗w\in\Sigma^*に対して状態δ^2(q2,w)\widehat{\delta}_2(q_2,w)が定まる。実際、語の長さに関する帰納法により、w=εw=\varepsilonではδ^2(q2,ε)=q2\widehat{\delta}_2(q_2,\varepsilon)=q_2であり、w=uaw=uaでは帰納法の仮定で定まる状態δ^2(q2,u)\widehat{\delta}_2(q_2,u)と文字aaに対してδ2\delta_2の値が定義されている。この状態はF2F_2とQ2∖F2Q_2\setminus F_2のちょうど一方に属するから、

w∈L(A2′)  ⟺  δ^2(q2,w)∉F2  ⟺  w∉L(A2)w\in L(A_2') \iff \widehat{\delta}_2(q_2,w)\notin F_2 \iff w\notin L(A_2)

が成り立つ。よってL(A2′)=Σ∗∖L2L(A_2')=\Sigma^*\setminus L_2である。

この議論は遷移関数の全域性に依存する。ある状態と文字の組で遷移が定義されていない機械を許すと、その組に到達して計算を続けることができない語wwが生じることがある。wwはA2A_2にもA2′A_2'にも受理されないので、そのようなwwが存在する場合にはL(A2′)L(A_2')はΣ∗∖L2\Sigma^*\setminus L_2の真部分集合になり、補集合を与えない。

集合の等式

L1∖L2=L1∩(Σ∗∖L2)=L(A1)∩L(A2′)L_1\setminus L_2=L_1\cap(\Sigma^*\setminus L_2)=L(A_1)\cap L(A_2')

と定理 5.1により、L1∖L2L_1\setminus L_2は DFA の受理言語である。同定理の積構成をA1A_1とA2′A_2'へ適用すると、L1∖L2L_1\setminus L_2を受理する DFA

(Q1×Q2,Σ,δ,(q1,q2),F1×(Q2∖F2))(Q_1\times Q_2,\Sigma,\delta,(q_1,q_2),F_1\times(Q_2\setminus F_2))

を明示的に得る。ここでδ((p,r),a)=(δ1(p,a),δ2(r,a))\delta((p,r),a)=(\delta_1(p,a),\delta_2(r,a))である。▨

7 演習

問題 7.1.

  1. 空語遷移の除去で受理状態をFFのままにすると、空語の受理を保存することができない例を構成せよ。
  2. 定理 4.1 (部分集合構成)の帰納不変量を、初期集合S=∅S=\varnothingの場合について確認せよ。
  3. 系 5.2を用いて、DFA の受理言語が和集合について閉じていることを証明せよ。Σ∗\Sigma^*を受理する DFA を構成してよい。
解答 (演習の要点).
  1. 状態集合を{q0,q1}\{q_0,q_1\}、初期状態をq0q_0、受理状態集合をF={q1}F=\{q_1\}とし、遷移を空語遷移q0→εq1q_0\xrightarrow{\varepsilon}q_1一本だけとするε\varepsilon-NFA を考える。E({q0})={q0,q1}E(\{q_0\})=\{q_0,q_1\}がFFと交わるため、この機械は空語を受理する。除去後の NFA には文字遷移が一つもないため、受理状態集合をFFのままにすると、空語の受理はq0∈Fq_0\in Fと同値になり、成り立たない。定理 3.2のFN={q:E({q})∩F≠∅}F_N=\{q:E(\{q\})\cap F\ne\varnothing\}はq0q_0を受理状態に含めるため、空語の受理を保存する。
  2. すべてのwwについてδ^D(∅,w)=∅=Δ^(∅,w)\widehat{\delta}_D(\varnothing,w)=\varnothing=\widehat{\Delta}(\varnothing,w)である。実際、w=εw=\varepsilonでは両辺とも∅\varnothingであり、w=uaw=uaでは、空集合上の合併が空集合であることから、両辺とも∅\varnothingのままである。空集合はFFと交わらないため、どちらの機械もこの状態からは受理しない。
  3. 状態集合を{s}\{s\}、初期状態をss、受理状態集合を{s}\{s\}、遷移をすべてのa∈Σa\in\Sigmaについてδ(s,a)=s\delta(s,a)=sとする DFA は、任意の語を読み終えた状態がssであるためΣ∗\Sigma^*を受理する。よってΣ∗\Sigma^*は DFA の受理言語である。任意のL1,L2⊆Σ∗L_1,L_2\subseteq\Sigma^*について(Σ∗∖L1)∖L2=(Σ∗∖L1)∩(Σ∗∖L2)(\Sigma^*\setminus L_1)\setminus L_2=(\Sigma^*\setminus L_1)\cap(\Sigma^*\setminus L_2)であり、この集合のΣ∗\Sigma^*における補集合は De Morgan の法則によりL1∪L2L_1\cup L_2である。したがってL1,L2L_1,L_2が DFA の受理言語であれば、系 5.2を三回適用して、Σ∗∖L1\Sigma^*\setminus L_1、(Σ∗∖L1)∖L2(\Sigma^*\setminus L_1)\setminus L_2、L1∪L2L_1\cup L_2が順に DFA の受理言語であることが従う。定理 5.1の積構成において受理状態集合を(F1×Q2)∪(Q1×F2)(F_1\times Q_2)\cup(Q_1\times F_2)へ取り替え、和集合を受理する DFA を直接構成することもできる。

▨

参考文献

  1. John E. Hopcroft, Rajeev Motwani, and Jeffrey D. Ullman, Introduction to Automata Theory, Languages, and Computation, 3rd ed., Pearson, 2007.
  2. Michael Sipser, Introduction to the Theory of Computation, 3rd ed., Cengage, Boston, 2013.

前提記事