オンラインで利用可能な、最も徹底的かつ最先端の高度に最適化された最高の無料FSMライブラリの1つは、AT&T FSMライブラリです。説明どおりに「fsmdifference」を実装するため、イプシロンを含まない決定済みのFSMが違いを生じさせる必要があります。1つのアイデアは、違いを実行する前にFSMの一方または両方を最小化することです。これは、場合によっては役立ちます。(つまり、決定は最小化とは異なります。)このパッケージには、完全な最小化よりも高速になるように設計された「近似」または「貪欲な」最小化もあります。
ただし、同様の問題を研究すると、文献に記載されていないFSMの一般化または構築があり、決定ステップを回避することでこの問題を解決できると考えられます。つまり、基本的に追加の決定されたFSMを作成せずにNFAを反転します。アイデアは、NFAエッジを「並行して」トラバースし、標準の決定アルゴリズムと同様に、現在の「スーパーステート」(ステートのセット)の一部であるノードのセットを追跡することです。次に、NFA補数は、現在のスーパーステートノードのセットが「すべて非受け入れ」である場合にのみ受け入れます(「任意の受け入れ」の場合に受け入れる決定構造とは対照的です)。
しかし、私はこれをこれまでに書いたことがなく、簡単なオンライン検索でそれを見ません。NFAを補完する唯一の方法は、NFAを決定することであることを示唆または示唆する多くの参考文献があります。
以下に、いくつかのアイデアに役立つ2つの「近くの」参照を示します。「もっと近い」人の話を聞きたいです。あなたはプログラムの検証に取り組んでいると言いますが、それは問題についてより直接的な研究がある分野かもしれません。
[1] Z表記を使用した非決定性有限オートマトンの交差点の構築 Nazir Ahmad Zafar、Nabeel Sabir、Amir Ali
[2] 無限語上の非決定的オートマトンの補完構成 Orna KupfermanおよびMoshe Vardi