だから私は長い間これを解読しようとしてきました、そして私はこの質問についてループに入っているようにほとんど感じます。
次のNFAがあるとします。
GNFAアルゴリズムを使用して、正規表現を取得します。
私はあなたが最初のステップ(空の状態を追加する)のために以下を持っていることを理解しています:
次のステップは、状態[q1]を削除することです。
最後に[q2]を削除すると、次のようになります。
しかし、他の人が持っている答えがある: 私が得たとして意味をなさない、?GNFA(一般化非決定性有限オートマトン)は次のように記述されます。
GNFAはNFAに似ていますが、特定のルールに従う必要があります。
- 受け入れ状態は1つだけです
- 初期状態には遷移がありません
- 受け入れ状態には、そこから出てくる遷移はありません。
- 遷移は、アルファベットの記号だけでなく、任意の正規表現を表すことができます。記号は、正規表現の一種であることに注意してください。
さらに、次のようにNFAをGNFAに変換する場合があります。
- ε遷移を伴う新しい開始状態を古い開始状態に追加する
- 古い受け入れ状態からのε遷移を持つ新しい受け入れ状態を追加します。
- 矢印に複数のラベルがある場合、または2つの状態の間に複数の矢印がある場合は、それらをそれらのラベルの和集合(または)に置き換えます
@Jeff、それは一般化された非決定的有限オートマトン(GNFA)と呼ばれます
—
アニッシュB
ヒント: DFAは実際にどの言語を受け入れますか?DFAを見るだけで、受け入れられている言語の英語の説明を理解できるはずです。さて、2つの正規表現とどちらがその言語を正しく記述していますか?
—
JeffE 2013年
@JeffEまた、GNFAアルゴリズムを使用する場合、通常は英語の説明で読み取るのと同じではないので、どちらかが他よりも意味があることに同意します。
—
アニッシュB 2013
「どちらか一方がもう一方より意味がある」と言ったことはありません。GNFAアルゴリズムの代わりに脳を使用して、第一原理から問題を解決し、2つの正規表現のどちらが正しいかを確認することをお勧めします。(注:「2つの正規表現のどちらが正しいか」は書きませんでした。)
—
JeffE 2013年