質問

私は双方向有限オートマトンの理論を経て、私は dfa a=(q、σ、δ、q1、f)があったときに与えられた例を理解していませんでした。 2 - dfa b=(q∞|∞q || {q0、qn、qf}、σ≠{#}、δ|、q0、{qf})および次の言語
l= {#u#|






私たちが言語に属する単語を読んでいるならば、私はどのように機能するのでしょうか。

最初の手順Automaton Bは、オートマトンAの状態に従います。 承認の状態を忘れず、オートマトンa:q |それが右「#」に来る限り。その後、コピーされた状態を通過し始めるQ || Automaton Aのうち、そしてそれが節約された受付状態であるかどうかを確認してください。下の図は、Qnが失敗/非受容状態である動きを示し、ヘッドの右側のヘッドの右側への+1の移動、および-1の左への移動への移動です。

「2-DFAの移動」



画像の説明が入力されています

質問

2-DFAは、2番目の散歩のための受付状態を最初に歩くときに最初に歩いたことを覚えていますか?

役に立ちましたか?

解決

NFASのためのより単純な例です。

$ l_1、l_2 $ の場合、isJoint Alphabets $ \ sigma_1、\ sigma_2 $ は、次の言語である $ \ sigma=sigma_1 \ cup \ sigma_2 $ です。 $$ l={xyz:x、z \ in \ sigma_1 ^ *、y \ in \ sigma_2 ^ *、xz \ in l_1、y \ in l_2 \}。 $$ これがアイデアです。 dfas $ a_1、$ a_1、a_2 $ から始めてください。 $ l_1、l_2 $ 。次のように機能する $ l $ のためのDFAを構築します。 $ a_1 $ をシミュレーションすることから始まります。 $¥sigma_2 $ からシンボルが遭遇すると、 $ a_1 $ $ a_2 $ に切り替えます。 $ \ sigma_1 $ からシンボルが発生すると、 $ a_1 $ に切り替わります。 SPAN CLASS="math-container"> $ A_2 $ は受け入れ状態です。 $ \ sigma_2 $ から文字が発生した場合は、失敗状態になります。

詳細は詳細です。 $ a_1 $ の状態を記憶する方法を示しています。

$ A_1=langle q_1、\ sigma_1、q_ {01}、\ delta_1、f_1 \ rangle $ 、let $ A_2= \ラングルQ_2、\ SIGMA_2、Q_ {02}、\ DELTA_2、F_2 \ RANGLE $ 。新しいDFA $ a=langle "、\ sigma、q_0、\ delta、f \ rangle $ を次のように構築します。

  • 状態の集合は $ q=(q_1 \ quey \ {1 \})\ cup(q_1 \ times q_2)\ cup(q_1 \ times} { 2 \})\ cup \ {q_f \} $ 。最初の部分の状態は、 $ \ sigma_2 $ からのシンボルの前に $ a_1 $ をシミュレートするために使用されます。今まで出会いました。 2番目の部分の状態は、を記憶するの状態 $の状態をシミュレートするために使用されます。 A_1 $ 。 3番目の部分の状態は、 $ y $ 部分を読み取った後、 $ A_1 $ をシミュレートするために使用されます。最終状態はさまざまな障害モードを処理します。

  • 初期状態は $(q_ {01}、1)$ です。

  • 遷移関数は次のように定義されています:

      $ \ sigma \ in \ sigma_1 $ の場合 $ \ delta((q、1)、\ Sigma)=(\ delta_1(q、\ sigma)、1)$ $ a_1 $ を前に進むだけです。 $ \ sigma \ in \ sigma_2 $ の場合 $ \ delta((q、1)、\ Sigma)=(Q、\ Delta_2(Q_ {02}、\ Sigma))$ $ a_1 $ $ A_2 $ $ \ sigma \ in \ sigma_2 $ の場合 $ \ delta((q_1、q_2)、\ sigma)=(Q_1、\ DELTA_2(Q_2、\ SIGMA))$ $ a_2 $ を前に進めます-container "> $ A_1 $ intact $ \ sigma \ in \ sigma_1 $ $ q_2 \ notin f_2 $ class="math-container"> $ \ delta((q_1、q_2)、\ sigma)= q_f $ : $ y $ 部分はそうではありません $ L_2 $ では、障害が発生します。 $ \ sigma \ in \ sigma_1 $ $ q_2 \ in f_2 $ $ \ delta((q_1、q_2)、\ sigma)=(\ delta_1(q_1、\ sigma)、2)$ $ A_1 $ $ \ sigma \ in \ sigma_1 $ の場合 $ \ delta((q_1,2)、\ Sigma)=(\ DELTA_1(Q_1、\ SIGMA)、2)$ $ a_1 $ を前に進むだけです。
    • $ \ sigma \ in \ sigma_2 $ $ \ delta((q_1,2)、\ Sigma)= q_f $ :入力が不正なので、故障しています。
    • $ \ sigma $ $ \ delta(q_f、\ sigma)= q_f $
  • 最終状態は $(f_1 \ quey-container "> $(f_1 \ quey \ {1 \})\ cup(f_1 \ quew_2)\ cup(f_1 \ times \ {2})$ < /スパン>。最初の部分は、ケース $ Y= Z=epsilon $ を処理し、2番目のハンドルはケース $ y \ neq \ epsilon $ $ z=epsilon $ 、3番目のハンドル
TH-Container "> $ Y、Z \ NEQ \ epsilon $ 。

DFAが情報をメモリにコミットできる方法について説明します。DFAはかなり多くの状態のみを持ち、一定量の情報しか保存できません。

ライセンス: CC-BY-SA帰属
所属していません cs.stackexchange
scroll top