GNFAアルゴリズムを使用してNFAを正規表現に変換しますか?


7

だから私は長い間これを解読しようとしてきました、そして私はこの質問についてループに入っているようにほとんど感じます。

次のNFAがあるとします。

ここに画像の説明を入力してください

GNFAアルゴリズムを使用して、正規表現を取得します。

私はあなたが最初のステップ(空の状態を追加する)のために以下を持っていることを理解しています: ここに画像の説明を入力してください

次のステップは、状態[q1]を削除することです。 ここに画像の説明を入力してください

最後に[q2]を削除すると、次のようになります。 ここに画像の説明を入力してください

しかし、他の人が持っている答えがある: 私が得たとして意味をなさない、?GNFA(一般化非決定性有限オートマトン)は次のように記述されます。abbabbabbaab

GNFAはNFAに似ていますが、特定のルールに従う必要があります。

  • 受け入れ状態は1つだけです
  • 初期状態には遷移がありません
  • 受け入れ状態には、そこから出てくる遷移はありません。
  • 遷移は、アルファベットの記号だけでなく、任意の正規表現を表すことができます。記号は、正規表現の一種であることに注意してください。

さらに、次のようにNFAをGNFAに変換する場合があります。

  • ε遷移を伴う新しい開始状態を古い開始状態に追加する
  • 古い受け入れ状態からのε遷移を持つ新しい受け入れ状態を追加します。
  • 矢印に複数のラベルがある場合、または2つの状態の間に複数の矢印がある場合は、それらをそれらのラベルの和集合(または)に置き換えます

@Jeff、それは一般化された非決定的有限オートマトン(GNFA)と呼ばれます
アニッシュB

ヒント: DFAは実際にどの言語を受け入れますか?DFAを見るだけで、受け入れられている言語の英語の説明を理解できるはずです。さて、2つの正規表現とどちらがその言語を正しく記述していますか?a+bbabbabb+aab
JeffE 2013年

@JeffEまた、GNFAアルゴリズムを使用する場合、通常は英語の説明で読み取るのと同じではないので、どちらかが他よりも意味があることに同意します。
アニッシュB 2013

1
「どちらか一方がもう一方より意味がある」と言ったことはありません。GNFAアルゴリズムの代わりに脳を使用して、第一原理から問題を解決し、2つの正規表現のどちらが正しいかを確認することをお勧めします。(注:「2つの正規表現のどちら正しいか」書きませんでした。)
JeffE 2013年

1
その他の手法については、参考質問も参照してください。これらの手法はすべて、異なる(まだ正しい)結果をもたらす可能性があります。
ラファエル

回答:


8

「他の人」が別の表現を得た理由を知りたいですか?

正規表現を解釈する場合、一意の正解はありません。通常、「理にかなっている」という表現がいくつかあります。この場合は、状態消去法を使用します(これは、BrzozowskiとMcCluskeyという名前で学びました)。ここで、削除の順序によって、見つかった式が決まります。それで、最初に削除すると何が得られますか?q2

建設中に「巧妙なトリック」を行うこともできます。あなたの例では、持っていると同等です。 baabab


+1 b U aa*b = a*bと名前BrzozowskiとMcCluskey
Maha 14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.