NFAを用いてスター演算の状態遷移図を作る構築法について
非決定的有限オートマトン(以下NFA)を導入することで、正規言語(ここでは決定的有限オートマトンによって認識される言語と定義しています。)がスター演算に閉じていることを簡潔に証明できます。その際の構築方法として有名なものは、計算理論の基礎 1.オートマトンと言語(共立出版)に載っている以下のような方法だと思います。
ここでは、以下のNFAが認識する言語にスター演算を作用させたものを考えます。

具体的に状態遷移図が構築できて、

が所望の状態遷移図になります。
方法としては、開始状態となるようなものを新たに追加(
よくある間違いとして、以下の図のようにしてしまうことだと思います。

開始状態を受理状態にして、受理状態から開始状態へ
これがスター演算にならないようなケースを探しているといくつかの事実に気づいたので、それを記事にまとめておきます。証明に誤りなどがあれば、コメントやTwitter(@_chiaoi)まで教えてください。基本的には証明をきちんとは書きません。アイデアのみを記載しておきます。
定義
まずは、証明の中で使用する定義をしていきます。
非決定有限オートマトン
非決定性有限オートマトンは、
-
は状態の有限集合Q -
は有限のアルファベット\Sigma -
は遷移関数\delta: Q \times \Sigma_{\varepsilon} \to \mathcal{P}(Q) -
は開始状態q_0 \in Q -
は受理状態の集合F \subset Q
スター演算
言語
タスー演算(造語です)
言語
と定義します。
気づいた命題
命題1:開始状態に戻るような辺が存在しない場合はスター演算とタスー演算の結果は等しい
説明
状態遷移図を用いて考えるとわかりやすいです。ここでは上の図にある変数などを使用して説明します。
スター演算をした際の開始状態
命題2:命題1の条件は受理状態から開始状態に戻る辺を無視できる
説明
状態遷移図を用いて考えるとわかりやすいです。ここでは上の図にある変数などを使用して説明します。
命題1が正しいとします。追加する辺として、
命題3:命題1の条件は使わない辺に関しては無視できる
これは、ほとんど自明です。使わない辺によって、言語が変わることはありません。
予想4:命題1の条件を強めすぎると成り立たない
さて、命題3の条件をさらに強めると、「
同じ文字列に対して
考え中なこと
これらを考えている中で縮約という表現をしました。これはある性質の良い同値類が存在していることを表していそうです。例えば、認識する言語が等しいようなオートマトンの同値類を考えることができます。NFAにおいてそのような縮約表現のうち、最も良いものが存在するのかを考えています。
- 使用する状態の数が最も少ない
- 使用する辺の数が最も少ない
など良さの基準はたくさんあると思いますが、それらを形式的に得る方法が難しそうです。
また、このような条件が成り立つクラス(
正規表現をNFAとして表現する際も、なるべく簡単なものを書こうとすると正規表現の表す意味自体を考察して書くのが個人的には良さそうだと思いました。機械的な方法だとかなり無駄な状態(無駄とは?)があり、直接見づらいです。NFAを簡単に表現する研究自体は進められており、最悪ケースがPSPACE完全であることも知られています。ここ最近の研究を調べてみるとIncremental NFA minimizationやIncremental NFA Minimizationなどが見つかりました。具体的な構成方法のアルゴリズムですね。
終わりに
非決定性有限オートマトンのスター演算を考えていて思ったことをまとめました。まとめると、ある程度の条件を満たせば間違った構成でも正しい言語を認識します。
かなり昔に作られた概念ですが、現在のアルゴリズムの研究などがされており、面白い分野だなと思いました。さらに面白い議論や論文などがあれば教えていただけるとありがたいです。
Discussion