web-dev-qa-db-ja.com

交差構造を使用してDFAを形成する方法

計算クラスの理論について宿題をしているのですが、2つのDFAを組み合わせる方法が少し混乱しています。その本はそうするためにそれが「交差点構造」を使うと言います、しかし私はそれが何であるかわかりません。以下に2つの例を示します。

enter image description here

enter image description here

27
jfisk

混乱はどこにあるのかはわかりますが、アイデアはかなり単純です。直交プロダクトマシンの構造を介して交差(和、差)マシンを作成するプロセスをテキスト/記号で説明します(あなたが話しているのと同じことです)約)。

DFAは5タプル(E、Q、q0、A、f)です。

  1. Eは入力アルファベット、空でない有限の記号のセット
  2. Qは空ではない、有限の状態のセットです。
  3. q0は開始状態、Qの要素
  4. Aは受け入れ状態または最終状態のセットであり、Qのサブセットです。
  5. fは、Q x EからQへのペアを取る遷移関数です。

2つのマシンM '=(E'、Q '、q0'、A '、f')とM '' =(E ''、Q ''、q0 ''、A ''、f '')があるとします。 。議論を簡単にするために、E '= E' 'と仮定します。ここで、L(M '' ')= L(M')がL(M '')と交差(または和集合または差)するようにM '' 'を作成します。

  1. 取るE '' '= E' '= E'
  2. Q '' '= Q' x Q ''を取る
  3. Q0 '' '=(q0'、q0 '')を取る
  4. A '' '=(x、y)を取るxのA'とyのA ''(和集合の場合、xのA 'またはyのA' 'の場合、差の場合、xはA'ですが、yのA 'はありません')。
  5. F '' '((x、y)、e)=(f'(x、e)、f ''(y、e))を取ります。

よし! 2つのマシンを考えてみましょう。1つはa ^ 2nを受け入れ、もう1つはa ^ 3nを受け入れます(交点はa ^ 6nを受け入れるマシンでなければなりません...正しいですか?)。

M 'には...

  1. E '= {a}
  2. Q '= {s0、s1}
  3. q0 '= s0
  4. A '= {s0}
  5. f '(s0、a)= s1、f'(s1、a)= s0

M ''には、...

  1. E '' = {a}
  2. Q '' = {t0、t1、t2}
  3. q0 '' = t0
  4. A '' = {t0}
  5. f ''(t0、a)= t1、f ''(t1、a)= t2、f ''(t2、a)= t0

M '' 'には、...

  1. E '' '= {a}
  2. Q '' '= {(s0、t0)、(s0、t1)、(s0、t2)、(s1、t0)、(s1、t1)、(s1、t2)}
  3. q0 '' '=(s0、t0)
  4. A '' '= {(s0、t0)}は交差、{(s0、t0)、(s0、t1)、(s0、t2)、(s1、t0)}はユニオン、{(s0、t1)、 (s0、t2)}違います。
  5. f '' '((s0、t0)、a)=(s1、t1)、f' ''((s1、t1)、a)=(s0、t2)、f '' '((s0、t2) 、a)=(s1、t0)、f '' '((s1、t0)、a)=(s0、t1)、f' ''((s0、t1)、a)=(s1、t2)、 f '' '((s1、t2)、a)=(s0、t0)。

これで完了です。説明が必要な場合はお知らせください。

47
Patrick87

これらは次のとおりです。{s∈{a、b、c} ∗:sのすべてのaの直後にabが続く} {s∈{a、b、c} ∗:sのすべてのaの直後にab}と{s ∈{a、b、c} *:sのすべてのcの直前にab} enter image description here

前と別のオートマトンでは、状態「0」と「2」を結合できます。

そして、あなたはそれを保持する必要があります...

言語の交差のためにオートマトンを実行するための正確な方法があります。 AAとBBを入力オートマトンとします。新しいオートマトンのケースは、AAとBBの状態のすべてのペアになります。つまり、SA∩B= SA×SBSA∩B= SA×SBであり、初期状態はiA∩B=⟨iA、iB⟩iA∩B=になります。 ⟨iA、iB⟩、ここでiAiAとiBiBはAAとBBの初期状態、FA∩B= FA×FBFA∩B= FA×FBここで、FXFXはXXの受け入れ状態のセットを示します。最後に、遷移関数δA∩BδA∩Bは、任意の文字α∈Σα∈Σに対して次のように定義され、p1、p2∈SAp1、p2∈SA、q1、q2∈SBq1、q2∈SBを示します。

⟨p1、q1⟩−→−−A∩Bα⟨p2、q2⟩iff p1−→Aαp2andq1−→Bαq2⟨p1、q1⟩→A∩Bα⟨p2、q2⟩iff p1→Aα p2andq1→Bαq2このようなオートマトンは通常最小限ではないことに注意してください(たとえば、交差部分は単なる空の言語かもしれません)。また、出力のサイズは2次であるため、入力オートマトンを最小限にすると便利です(ただし、必須ではありません)。 //リファレンス:math.stackexchange.com Happy Coding ...

0
Sohaib Aslam