質問
DFAを表すのに最適なデータ構造は何でしょうか?
正規表現をDFAに変換し、Javaのライブラリとしてこの特定の機能を作成することを検討しています。
主なことは、Regexの各エンティティには、「Car」のような単一の文字列値ではなく、価値のセットがあるということです。私の場合、各エンティティは{car、honda、4x4、sedan、...}などの多くのプロパティを運びます(私は車を探していませんが、これは単なる例です。)
助言がありますか?
解決
あなたの質問を正しく理解している場合、動的なタイプのアルファベットをめぐる任意の正規言語のマッチング/フィルタリングライブラリが必要ですか?あなたの車の例を使用すると、すべての車(赤の色が2〜6人の乗客があり、各乗客が8〜8人のリストに合わせて照合するために表情を作成できるようにしたいと思います。 88歳)または(1人の乗客がいます)。
偶然にも、私は自分でそのようなものを探していました(ドキュメントの検証のために) ジン; Javaリラックス図書館。残念ながら、JingのアルファベットはXMLノードから構成されているため、問題を解決しませんでした。現時点では、Jingのパターンマッチングに基づいて、これを実行する(任意のタイプのアルファベットを介して通常の言語と一致する)ライブラリを自分で作成しようとしています。あなたがこれを手伝ってくれるなら、私に知らせてください;)。
他のヒント
Web検索では、JavaのDFAの例がいくつか得られます。ただし、最良の表現は特定のアプリケーション要件に依存します。たとえば、アプリケーションがDFAを使用する方法。私はあなたが自分のためにこれを解決する必要があると思います。
この答えは、データのために元の質問には役に立たないと確信していますが、Googleから誰かがこれで起こった場合...
DFAとNFAは保存できます 状態遷移テーブル, 、次に、リンクに続いてテーブルを動かすことにより、解析を実行します。