ここでの最初のトリックは、乗算表をオートマトン遷移表と考えることです。各状態は、乗算表の文字を表しますが、まだ受け入れについては心配していません。したがって、表の左側と本文の文字は実際には状態ですと書く方がより正確、実際にはそうしません。上の文字は入力です。q a、q b、q cAqa,qb,qc
次に、を転置して、逆乗算用のオートマトン(転置の場合は" ")を作成します。 T AATTA
ATabcaaacbcabcbca
したがって、は状態に移動し、同様には状態に移動します。cA(abc)ca A TAT(cba)aAT
ただし、は、右から左に進むことを前提としているため、左から右に進みたいと考えています。したがって、2番目のトリックは、すべての矢印を逆にすることで、オートマトンを逆転することです(乗算ではなく、最初に戻るだけです)。これにより、下の遷移表で与えられる非決定的なオートマトンられます。チキンを傷つけないようにサブセットを連結文字で示しているため、は実際にはです。(私はそれが大丈夫だと思います-うまくいくようです)。AT a c { a 、c }ATRac{a,c}
ATRabcabbcacabc∅aab∅cabcabcabc∅bbcabcacababc∅ccabacabcbcabc∅
これは、境界より上の3行のみの非決定的オートマトン、または8行すべての決定済みバージョンとして解釈できます。
最後に、問題を解決するマシンは、元のと外積オートマトンです。つまり、2つのオートマトンの交差動作を実行するです(は必要ありん)もっと)。 には、ようなペアの状態があります。遷移関数は、と独立して実行します。単一の開始状態入る入力下に、入力下、等 A T R A × A T R A TAATRA×ATRAT ⟨ 、C ⟩ A A T R ⟨ 1 、1 ⟩A×ATR⟨a,ac⟩AATR⟨1,1⟩⟨ B 、B ⟩ B⟨a,a⟩a⟨b,b⟩b
非決定的バージョンでの受け入れ状態はなどです。決定論的バージョンでは、受け入れ状態は、最初のコンポーネントが2番目のコンポーネントセットのであるペアです(または。⟨a,a⟩⟨ A 、⟩ ⟨ B 、BとC ⟩∈⟨a,a⟩⟨b,bc⟩
25 = 3 ⋅ 8 + 1 10 = 3 ⋅ 3 + 1A×ATR示されているように拡張および決定されは状態があるので、詳細に記述しない場合はご容赦ください。しかし、非決定的バージョンには状態しかありません。25=3⋅8+110=3⋅3+1