NFA の動作を記述する方法は少なくとも 2 つあります。1 つ目の方法は、 NFA の名前にある非決定性 を利用します。入力シンボルごとに、NFA はすべての入力シンボルが消費されるまで新しい状態に遷移します。各ステップで、オートマトンが適用可能な遷移の 1 つを非決定的に「選択」します。少なくとも 1 つの「ラッキー ラン」、つまり入力を完全に消費した後に受理状態につながる選択のシーケンスが存在する場合、入力は受理されます。そうでない場合、つまり選択のシーケンスがまったくなく、すべての入力[ 3 ] を消費して受理状態につながる場合、入力は拒否されます。[ 5 ] : 319
2番目の方法では、NFAは入力シンボルの列を1つずつ消費します。各ステップで、2つ以上の遷移が適用可能な場合、NFAは適切な数のコピーに「クローン」し、それぞれが異なる遷移に従います。適用可能な遷移がない場合、現在のコピーは行き止まりになり、「死滅」します。入力全体を消費した後、いずれかのコピーが受理状態であれば、入力は受理され、そうでなければ拒否されます。
形式的な定義のより基本的な入門については、オートマトン理論 を参照してください。
認識された言語 NFAが与えられた場合M = ( Q 、 Σ 、 δ 、 q 0 、 F ) {\displaystyle M=(Q,\Sigma ,\delta ,q_{0},F)} 、その認識言語は、L ( M ) {\displaystyle L(M)} は、アルファベット上のすべての文字列の集合として定義されます。Σ {\displaystyle \Sigma } 受け入れられるものM {\displaystyle M} 。
上記の 非公式な説明に大まかに対応する形で、文字列にはいくつかの同等の形式的な定義が存在する。w = 1 1 1 2 。 。 。 1 n {\displaystyle w=a_{1}a_{2}...a_{n}} 受け入れられるM {\displaystyle M} :
w {\displaystyle w} 状態のシーケンスが受け入れられる場合、r 0 、 r 1 、 。 。 。 、 r n {\displaystyle r_{0},r_{1},...,r_{n}} 存在するQ {\displaystyle Q} すなわち、 r 0 = q 0 \displaystyle r_{0}=q_{0}} r 私 + 1 ∈ δ ( r 私 、 1 私 + 1 ) \displaystyle r_{i+1}\in \delta (r_{i},a_{i+1})} 、 のために私 = 0 、 … 、 n − 1 {\displaystyle i=0,\ldots ,n-1} r n ∈ F {\displaystyle r_{n}\in F} 。言葉で言うと、最初の条件は、機械が起動状態から始まることを意味します。q 0 q0 2番目の条件は、文字列の各文字が与えられた場合、w {\displaystyle w} 機械は遷移関数に従って状態から状態へと遷移します。δ {\displaystyle \delta } 最後の条件は、機械が受け入れることを示しています。w {\displaystyle w} 最後の入力がw {\displaystyle w} 機械が受け入れ状態のいずれかで停止する原因となります。w {\displaystyle w} 受け入れられるM {\displaystyle M} すべての状態シーケンスが受理状態で終わる必要はなく、いずれか1つが受理状態になれば十分である。そうでなければ、つまり、から に到達することがまったく不可能な場合は、q 0 q0 州へF {\displaystyle F} 以下にw {\displaystyle w} オートマトンが文字列を拒否する と言われている。文字列の集合M {\displaystyle M} は、 M {\displaystyle M} そしてこの言語は次のように表されるL ( M ) {\displaystyle L(M)} [ 5 ] : 320 あるいは、w {\displaystyle w} 受け入れられる場合δ * ( q 0 、 w ) ∩ F ≠ ∅ {\displaystyle \delta ^{*}(q_{0},w)\cap F\not =\emptyset } 、 どこδ * : Q × Σ * → P ( Q ) {\displaystyle \delta ^{*}:Q\times \Sigma ^{*}\rightarrow {\mathcal {P}}(Q)} は再帰的に次の ように定義される。 δ * ( r 、 ε ) = { r } {\displaystyle \delta ^{*}(r,\varepsilon )=\{r\}} どこε {\displaystyle \varepsilon } は空文字列であり、δ * ( r 、 x 1 ) = ⋃ r ′ ∈ δ * ( r 、 x ) δ ( r ′ 、 1 ) {\displaystyle \delta ^{*}(r,xa)=\bigcup _{r'\in \delta ^{*}(r,x)}\delta (r',a)} すべての人々のためにx ∈ Σ * 、 1 ∈ Σ {\displaystyle x\in \Sigma ^{*},a\in \Sigma } 。 言葉で言うと、δ * ( r 、 x ) {\displaystyle \delta ^{*}(r,x)} は、ある状態から到達可能なすべての状態の集合です。r {\displaystyle r} 文字列を消費することによってx {\displaystyle x} . 文字列w {\displaystyle w} 受け入れ状態がF {\displaystyle F} 開始状態から到達可能q 0 q0 消費することによってw {\displaystyle w} [
初期状態 上記のオートマトン定義では単一の初期状態 を使用していますが、これは必ずしも必要ではありません。NFAは複数の初期状態を持つ場合もあります。複数の初期状態を持つNFAを単一の初期状態を持つNFAに変換する簡単な方法があり、便利な表記法を提供します。
同型性 同型写像 φ {\displaystyle \varphi } 自動人形から( Q 、 Σ 、 δ 、 q 0 、 F ) {\displaystyle (Q,\Sigma ,\delta ,q_{0},F)} 自動人形へ( Q ′ 、 Σ 、 δ ′ 、 q 0 ′ 、 F ′ ) {\displaystyle (Q',\Sigma ,\delta ',q'_{0},F')} 全単射写像 φ : Q → Q ′ {\displaystyle \varphi :Q\to Q'} そのため
φ ( q 0 ) = q 0 ′ \displaystyle \varphi (q_{0})=q'_{0}} 、q ∈ F {\displaystyle q\in F} もし、そしてその場合に限り、φ ( q ) ∈ F ′ {\displaystyle \varphi (q)\in F'} それぞれについてq ∈ Q {\displaystyle q\in Q} 、 そしてr ∈ δ ( q 、 1 ) {\displaystyle r\in \delta (q,a)} もし、そしてその場合に限り、φ ( r ) ∈ δ ′ ( φ ( q ) 、 1 ) {\displaystyle \varphi (r)\in \delta '(\varphi (q),a)} それぞれについてq 、 r ∈ Q {\displaystyle q,r\in Q} そして1 ∈ Σ {\displaystyle a\in \Sigma } 。直感的に言えば、2つのオートマトンが同じアルファベットを共有し、一方のオートマトンの状態を体系的に名前変更することで他方のオートマトンが得られる場合、それらは同型であると言える。
例 以下のオートマトンMは 、バイナリアルファベットを用いて、入力が1で終わるかどうかを判定します。M = ( { p 、 q } 、 { 0 、 1 } 、 δ 、 p 、 { q } ) {\displaystyle M=(\{p,q\},\{0,1\},\delta ,p,\{q\})} 遷移関数δ {\displaystyle \delta } この状態遷移表 (左上の図を参照)によって定義できます。
州 入力 0 1 p { p } { p 、 q } q ∅ ∅ {\displaystyle {\begin{array}{|c|cc|}{\bcancel {{}_{\text{State}}\quad {}^{\text{Input}}}}&0&1\\\hline p&\{p\}&\{p,q\}\\q&\emptyset &\emptyset \end{array}}} セット以来δ ( p 、 1 ) {\displaystyle \delta (p,1)} 複数の状態を含む場合、M は非決定論的である。M の言語は、正規 表現 で与えられる正規言語 で記述できる。(0|1)*1
入力文字列「1011」に対する考えられるすべての状態シーケンスを下の図に示します。
文字列は、ある状態シーケンスが上記の定義を満たすため、 M によって受理されます。他のシーケンスが満たさないことは問題ではありません。この図は、いくつかの方法で解釈できます。
上記の 「ラッキーラン」の説明によれば、図中の各経路はM の選択のシーケンスを表しています。「クローン作成」の説明に関して言えば、各縦列は特定の時点におけるM のすべてのクローンを示しており、ノードから複数の矢印が出ている場合はクローン作成を示し、矢印が出ていないノードはクローンの「死」を示しています。 同じ絵を二通りの方法で解釈できる可能性は、上記の二つの説明がどちらも同等であることを示している。
上記の 形式的定義の最初のものを考慮すると、「1011」は受け入れられます。なぜなら、それを読むときにMは 状態シーケンスをたどることができるからです。⟨ r 0 、 r 1 、 r 2 、 r 3 、 r 4 ⟩ = ⟨ p 、 p 、 p 、 p 、 q ⟩ {\displaystyle \langle r_{0},r_{1},r_{2},r_{3},r_{4}\rangle =\langle p,p,p,p,q\rangle } これは、条件1~3を満たします。2番目の形式的な定義に関して、ボトムアップ計算では次のことが示されています。δ * ( p 、 ε ) = { p } {\displaystyle \delta ^{*}(p,\varepsilon )=\{p\}} したがってδ * ( p 、 1 ) = δ ( p 、 1 ) = { p 、 q } {\displaystyle \delta ^{*}(p,1)=\delta (p,1)=\{p,q\}} したがってδ * ( p 、 10 ) = δ ( p 、 0 ) ∪ δ ( q 、 0 ) = { p } ∪ { } {\displaystyle \delta ^{*}(p,10)=\delta (p,0)\cup \delta (q,0)=\{p\}\cup \{\}} したがってδ * ( p 、 101 ) = δ ( p 、 1 ) = { p 、 q } {\displaystyle \delta ^{*}(p,101)=\delta (p,1)=\{p,q\}} 、したがってδ * ( p 、 1011 ) = δ ( p 、 1 ) ∪ δ ( q 、 1 ) = { p 、 q } ∪ { } {\displaystyle \delta ^{*}(p,1011)=\delta (p,1)\cup \delta (q,1)=\{p,q\}\cup \{\}} ;その集合は互いに素ではないので{ q } {\displaystyle \{q\}} 文字列「1011」は受け入れられます。 対照的に、文字列「10」はM によって拒否されます(この入力に対するすべての可能な状態シーケンスは右上図に示されています)。これは、最後の0シンボルを読み取っても、唯一の受理状態qに到達する方法がないためです。最初の「1」を消費した後で q に到達することはできますが、これは入力「10」が受理されることを意味するのではなく、入力文字列「1」が受理されることを意味します。
DFAとの等価性 決定性有限オートマトン (DFA)は、NFAの一種と見なすことができ、各状態と記号に対して遷移関数はただ1つの状態を持つ。したがって、 DFAで認識可能な形式言語は すべてNFAでも認識可能であることは明らかである。
逆に、各NFAに対して、同じ形式言語を認識するDFAが存在する。DFAは冪集合構成 を用いて構築できる。
この結果は、NFAは柔軟性が高いにもかかわらず、一部のDFAでは認識できない言語を認識できないことを示しています。また、構築が容易なNFAをより効率的に実行できるDFAに変換する上で、この結果は実用上も重要です。ただし、NFAがn 個の状態を持つ場合、結果として得られるDFAは最大で2n個の状態を持つ可能性があり、 大規模なNFAでは構築が非現実的になる場合があります。
ε-移動を伴うNFAε-移動付き非決定性有限オートマトン(NFA-ε)は、NFAをさらに一般化したものです。この種のオートマトンでは、遷移関数が空文字列 ε上で追加的に定義されます。入力シンボルを消費しない遷移はε-遷移と呼ばれ、状態図では「ε」とラベル付けされた矢印で表されます。ε-遷移は、現在の状態が正確にはわからないシステムをモデル化する便利な方法を提供します。つまり、システムをモデル化していて、(何らかの入力文字列を処理した後の)現在の状態がqなのかq'なのかが明確でない場合、これら2つの状態の間にε-遷移を追加することで、オートマトンを両方の状態に同時に配置することができます。
拡張遷移関数 ε移動のないNFAと同様に、遷移関数はδ {\displaystyle \delta } NFA-ε の は文字列に拡張できます。非公式には、δ * ( q 、 w ) {\displaystyle \delta ^{*}(q,w)} は、オートマトンが状態から開始したときに到達しうるすべての状態の集合を表します。q ∈ Q {\displaystyle q\in Q} そして文字列を読み取るw ∈ Σ * 。 {\displaystyle w\in \Sigma ^{*}.} 機能δ * : Q × Σ * → P ( Q ) {\displaystyle \delta ^{*}:Q\times \Sigma ^{*}\rightarrow {\mathcal {P}}(Q)} は以下のように再帰的に定義できる。
δ * ( q 、 ε ) = E ( q ) {\displaystyle \delta ^{*}(q,\varepsilon )=E(q)} 各州についてq ∈ Q 、 {\displaystyle q\in Q,} そしてどこでE {\displaystyle E} ε閉包を表す。非公式には: 空文字列を読み込むと、オートマトンが状態から遷移する可能性があるq {\displaystyle q} ε閉包の任意の状態へq 。 {\displaystyle q.} δ * ( q 、 w 1 ) = ⋃ r ∈ δ * ( q 、 w ) E ( δ ( r 、 1 ) ) 、 {\textstyle \delta ^{*}(q,wa)=\bigcup _{r\in \delta ^{*}(q,w)}E(\delta (r,a)),} 各州についてq ∈ Q 、 {\displaystyle q\in Q,} 各文字列w ∈ Σ * {\displaystyle w\in \Sigma ^{*}} そして各シンボル1 ∈ Σ 。 {\displaystyle a\in \Sigma .} 非公式に: 文字列を読むw {\displaystyle w} オートマトンを状態から駆動する可能性があるq {\displaystyle q} どの州にもr {\displaystyle r} 再帰的に計算されたセットにおいてδ * ( q 、 w ) {\displaystyle \delta ^{*}(q,w)} その後、記号を読みます1 {\displaystyle a} それを駆動するかもしれないr {\displaystyle r} ε閉包内の任意の状態へδ ( r 、 1 ) 。 {\displaystyle \delta (r,a).} オートマトンは文字列を受け入れると言われているw {\displaystyle w} もし
δ * ( q 0 、 w ) ∩ F ≠ ∅ 、 {\displaystyle \delta ^{*}(q_{0},w)\cap F\neq \emptyset ,} つまり、読んでいる場合w {\displaystyle w} オートマトンを初期状態から駆動する可能性があるq 0 {\displaystyle q_{0}} 受け入れ態勢のある州へF 。 {\displaystyle F.}
例 M の状態 図させてM {\displaystyle M} 入力に偶数個の0が含まれているか、偶数個の1が含まれているかを判定する、バイナリアルファベットを持つNFA-εとする。なお、0の出現も偶数個の出現とみなす。
正式な表記では、M = ( { S 0 、 S 1 、 S 2 、 S 3 、 S 4 } 、 { 0 、 1 } 、 δ 、 S 0 、 { S 1 、 S 3 } ) {\displaystyle M=(\{S_{0},S_{1},S_{2},S_{3},S_{4}\},\{0,1\},\delta ,S_{0},\{S_{1},S_{3}\})} ここで遷移関係δ {\displaystyle \delta } この状態遷移表 によって定義できます。
M {\displaystyle M} これは、2 つのDFA の和集合と見なすことができる。1 つは状態を持つ DFA である。{ S 1 、 S 2 } {\displaystyle \{S_{1},S_{2}\}} そしてもう一方の州は{ S 3 、 S 4 } {\displaystyle \{S_{3},S_{4}\}} 言語M {\displaystyle M} この正規表現で与えられる 正規言語 で記述できます( 1 * 01 * 01 * ) * ∪ ( 0 * 10 * 10 * ) * {\displaystyle (1^{*}01^{*}01^{*})^{*}\cup (0^{*}10^{*}10^{*})^{*}} 定義しますM {\displaystyle M} ε-移動を使用するがM {\displaystyle M} ε移動を用いずに定義することができる。
NFAとの同等性 NFA-εがNFAと等価であることを示すには、まずNFAがNFA-εの特殊なケースであることに注意し、すべてのNFA-εに対して等価なNFAが存在することを示せばよい。
ε個の移動を持つNFAが与えられた場合M = ( Q 、 Σ 、 δ 、 q 0 、 F ) 、 {\displaystyle M=(Q,\Sigma ,\delta ,q_{0},F),} NFAを定義するM ′ = ( Q 、 Σ 、 δ ′ 、 q 0 、 F ′ ) 、 {\displaystyle M'=(Q,\Sigma ,\delta ',q_{0},F'),} どこ
F ′ = { F ∪ { q 0 } もし E ( q 0 ) ∩ F ≠ { } F さもないと {\displaystyle F'={\begin{cases}F\cup \{q_{0}\}&{\text{ if }}E(q_{0})\cap F\neq \{\}\\F&{\text{ otherwise }}\\\end{cases}}} そして
δ ′ ( q 、 1 ) = δ * ( q 、 1 ) {\displaystyle \delta '(q,a)=\delta ^{*}(q,a)} 各州についてq ∈ Q {\displaystyle q\in Q} そして各シンボル1 ∈ Σ 、 {\displaystyle a\in \Sigma ,} 拡張遷移関数を使用するδ * {\displaystyle \delta ^{*}} 上記で定義されています。遷移関数を区別する必要があるM {\displaystyle M} そしてM ′ 、 {\displaystyle M',} すなわちδ {\displaystyle \delta } そしてδ ′ 、 {\displaystyle \delta ',} 弦への拡張、δ * {\displaystyle \delta ^{*}} そしてδ ′ * 、 {\displaystyle \delta '^{*},} それぞれ。構造上、M ′ {\displaystyle M'} ε遷移を持たない。
証明できるδ ′ * ( q 0 、 w ) = δ * ( q 0 、 w ) {\displaystyle \delta '^{*}(q_{0},w)=\delta ^{*}(q_{0},w)} 各文字列についてw ≠ ε {\displaystyle w\neq \varepsilon } 長さに関する帰納法 によってw 。 {\displaystyle w.}
これに基づいて、次のことが示せる。δ ′ * ( q 0 、 w ) ∩ F ′ ≠ { } {\displaystyle \delta '^{*}(q_{0},w)\cap F'\neq \{\}} もし、そしてその場合に限り、δ * ( q 0 、 w ) ∩ F ≠ { } 、 {\displaystyle \delta ^{*}(q_{0},w)\cap F\neq \{\},} 各文字列についてw ∈ Σ * : {\displaystyle w\in \Sigma ^{*}:}
もしw = ε 、 {\displaystyle w=\varepsilon ,} これは、F ′ 。 {\displaystyle F'.} そうでなければ、w = v 1 {\displaystyle w=va} とv ∈ Σ * {\displaystyle v\in \Sigma ^{*}} そして1 ∈ Σ 。 {\displaystyle a\in \Sigma .} からδ ′ * ( q 0 、 w ) = δ * ( q 0 、 w ) {\displaystyle \delta '^{*}(q_{0},w)=\delta ^{*}(q_{0},w)} そしてF ⊆ F ′ 、 {\displaystyle F\subseteq F',} 我々は持っていますδ ′ * ( q 0 、 w ) ∩ F ′ ≠ { } ⇐ δ * ( q 0 、 w ) ∩ F ≠ { } ; {\displaystyle \delta '^{*}(q_{0},w)\cap F'\neq \{\}\;\Leftarrow \;\delta ^{*}(q_{0},w)\cap F\neq \{\};} 私たちはまだ「⇒ {\displaystyle \Rightarrow } " 方向。 もしδ ′ * ( q 0 、 w ) {\displaystyle \delta '^{*}(q_{0},w)} 状態を含むF ′ ∖ { q 0 } 、 {\displaystyle F'\setminus \{q_{0}\},} それからδ * ( q 0 、 w ) {\displaystyle \delta ^{*}(q_{0},w)} 同じ状態を含み、それはF {\displaystyle F} 。 もしδ ′ * ( q 0 、 w ) {\displaystyle \delta '^{*}(q_{0},w)} 含むq 0 、 {\displaystyle q_{0},} そしてq 0 ∈ F 、 {\displaystyle q_{0}\in F,} それから δ * ( q 0 、 w ) {\displaystyle \delta ^{*}(q_{0},w)} また、状態も含まれていますF 、 {\displaystyle F,} すなわちq 0 。 {\displaystyle q_{0}.} もしδ ′ * ( q 0 、 w ) {\displaystyle \delta '^{*}(q_{0},w)} 含むq 0 、 {\displaystyle q_{0},} そしてq 0 ∉ F 、 {\displaystyle q_{0}\not \in F,} しかしq 0 ∈ F ′ 、 {\displaystyle q_{0}\in F',} すると、E ( q 0 ) ∩ F {\displaystyle E(q_{0})\cap F} 、そして同じ状態である必要がありますδ * ( q 0 、 w ) = ⋃ r ∈ δ * ( q 、 v ) E ( δ ( r 、 1 ) ) 。 {\textstyle \delta ^{*}(q_{0},w)=\bigcup _{r\in \delta ^{*}(q,v)}E(\delta (r,a)).} NFAはDFAと等価であるため、NFA-εもDFAと等価である。
クロージャの特性 与えられた NFA N ( s ) とN ( t ) の言語の和集合を受け入れる合成 NFA 。和集合内の入力文字列wに対して、合成オートマトンでは、適切なサブオートマトン ( N ( s ) またはN ( t ) ) の開始状態 (左側の色の付いた円) にε遷移します。このサブオートマトンでは、 w をたどることで受理状態 (右側の色の付いた円) に到達できます。そこから、別の ε 遷移によって状態fに到達できます。ε 遷移のおかげで、合成 NFA は、 N ( s ) とN ( t ) の両方が DFA であっても、適切に非決定性になります。逆に、和集合言語 (2 つの DFA であっても) の DFA を構築するのははるかに複雑です。NFAによって認識される言語の集合は、以下の操作に関して閉じられています。これらの閉包操作は、任意の 正規表現 からNFAを構築するトンプソンの構成アルゴリズムで使用されます。また、NFAが 正規言語を 正確に認識することを証明するためにも使用できます。
和集合(図を参照)。つまり、言語L 1 が何らかの NFA A 1 によって受理され、L 2 が何らかのA 2 によって受理される場合、言語L 1 ∪ L 2 を受理するNFA A u を構築することができる。 交差; 同様に、A 1 とA 2から L 1 ∩ L 2 を受理するNFA A i を 構築できます。 連結 否定; 同様に、A 1から Σ * \ L 1 を受理するNFA A n を構築できます。 クリーネ閉鎖 NFAはε移動を持つ非決定性有限オートマトン(NFA-ε)と等価であるため、上記の閉包はNFA-εの閉包特性を用いて証明できる。
実装 NFAを実装する方法は数多くあります。
同等のDFAに変換します。場合によっては、これにより状態数が指数関数的に増加する可能性があります。[ 14 ] NFAが現在とっている可能性のあるすべての状態のセットデータ構造を 保持します。入力シンボルの消費時に、すべての現在の状態に適用された遷移関数の結果を結合して 、次の状態のセットを取得します。ε移動が許可されている場合は、そのような移動によって到達可能なすべての状態(ε閉包)を含めます。各ステップでは、最大でs 2回の 計算が必要です。ここで、s はNFAの状態の数です。最後の入力シンボルの消費時に、現在の状態の1つが最終状態である場合、マシンは文字列を受け入れます。長さnの文字列は、時間 O (ns 2 )と空間O (s )で処理できます。複数のコピーを作成する。n方向 の決定ごとに、NFA は最大n − 1 個のコピーを作成する。それぞれが別々の状態に入る。最後の入力シンボルを消費した時点で、NFA のコピーの少なくとも 1 つが受理状態にある場合、NFA は受理する。(NFA の状態ごとに 1 つのマシンが存在する可能性があるため、これも NFA の状態数に対して線形ストレージを必要とする。)NFAの遷移構造を通してトークンを明示的に伝播させ、トークンが最終状態に到達するたびにマッチングを行います。これは、NFAが遷移をトリガーしたイベントに関する追加のコンテキストをエンコードする必要がある場合に役立ちます。(この手法を使用してオブジェクト参照を追跡する実装については、Tracematchesを参照してください。)[ 16 ]
複雑 NFAの空性問題 、すなわち与えられたNFAの言語が空であるかどうかの判定は、線形時間で解くことができる。そのためには、初期状態から深さ優先探索 を行い、何らかの最終状態に到達できるかどうかを確認すればよい。NFAが与えられたとき、それが普遍的 であるかどうか、つまり、受理しない文字列が存在するかどうかをテストすることはPSPACE 完全である。 [ 17 ] その結果、包含問題 、つまり2つのNFAが与えられたとき、一方の言語が他方の言語の部分集合であるかどうかについても同じことが言える。 NFA A と整数 n を入力として与えられたとき、長さnの単語が A によって受理される数を数える問題 は、扱いが困難です。これは#P 困難 です。実際、この問題は複雑性クラスSpanLに対して ( 簡潔な還元 の下で)完全です。[ 18 ]
NFAの応用 NFAとDFAは、ある言語がNFAで認識される場合、DFAでも認識され、その逆もまた同様であるという点で等価です。このような等価性の確立は重要かつ有用です。有用なのは、与えられた言語を認識するNFAを構築する方が、その言語のDFAを構築するよりもはるかに容易な場合があるからです。重要なのは、NFAを用いることで、計算理論 における多くの重要な性質を確立するために必要な数学的作業の複雑さを軽減できるからです。例えば、正規言語 の閉包性を 証明するには、DFAを用いるよりもNFAを用いる方がはるかに容易です。
注記 ↑マーティン 、 ジョン(2010)。言語と計算理論入門 。マグロウヒル。p. 108。ISBN 978-0071289429 。 ↑ 選択シーケンスは、現在の入力シンボルに対して適用可能な遷移がない「行き止まり」に陥る可能性があります。この場合、それは失敗とみなされます。 1 2 Alfred V. Aho、John E. Hopcroft、Jeffrey D. Ullman (1974). 『コンピュータアルゴリズムの設計と解析』 . Reading/MA: Addison-Wesley. ISBN 0-201-00029-6 。↑ FOLDOC コンピューティングの無料オンライン辞書、有限状態機械 ↑ クリス・カラブロ (2005 年 2 月 27 日)。 「NFA から DFA への爆発」 (PDF) 。 cseweb.ucsd.edu 。 2023 年 3 月 6 日 に取得 。 ↑ Allan, C., Avgustinov, P., Christensen, AS, Hendren, L., Kuzins, S., Lhoták, O., de Moor, O., Sereni, D., Sittampalam, G., and Tibble, J. 2005. Adding trace matching with free variables to AspectJ Archived 2009-09-18 at the Wayback Machine . In Proceedings of the 20th Annual ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages, and Applications (San Diego, CA, USA, October 16–20, 2005). OOPSLA '05. ACM, New York, NY, 345-364. ↑ 歴史的には以下で示されています: Meyer, AR; Stockmeyer, LJ (1972-10-25). "The equivalence problem for regular expressions with squaring requires exponential space". 13th Annual Symposium on Switching and Automata Theory (Swat 1972) . USA: IEEE Computer Society. pp. 125– 129. doi : 10.1109/SWAT.1972.29 . 最新のプレゼンテーションについては、以下を参照してください。 ↑ Álvarez, Carme; Jenner, Birgit (1993-01-04). "非常に難しい対数空間計数クラス" . Theoretical Computer Science . 107 (1): 3– 30. doi : 10.1016/0304-3975(93)90252-O . ISSN 0304-3975 .
参考文献 Rabin, MO; Scott, D. (1959年4月)「有限オートマトンとその決定問題」IBM Journal of Research and Development 3 ( 2): 114– 125. doi : 10.1147/rd.32.0114 . Sipser, Michael (1997).計算理論入門 (第1 版). PWS Publishing. ISBN 978-0-534-94728-6 。( 視覚障害のある利用者も閲覧可能) (§1.2:非決定論、47~63ページ参照) ホップクロフト、ジョン・E.、ウルマン、ジェフリー・D. (1979).オートマタ理論、言語、計算入門 (第1 版). アディソン・ウェスリー. ISBN 0-201-02988-X 。 (視覚障害のある利用者も利用可能) ホップクロフト、ジョン・E. 、モトワニ、ラジーブ 、ウルマン、ジェフリー・D. (2006) [1979].オートマタ理論、言語、計算入門 (第3 版). アディソン・ウェスリー. ISBN 0-321-45536-3 。(第2章「有限オートマトン」を参照。)