効率的なヒューリスティックスを得るために、状態エンコードの問題(バイナリ識別子をDFAの状態に割り当てて、状態遷移関数のロジックの量を最小限に抑える)に関するCAD文献を調べることをお勧めします 。DevadasとNewton、ステートマシン」、IEEE TCAD、8(11):1206-1217、1989は、ステートエンコーディングとステートマシン分解との間に密接な関係があることを指摘しています。
DFAのための場合はあなたがユニークに割り当てる状態Mの(各状態にビット状態識別子をLG 2 N < M ≤ N)、その後は本質的にネットワークにDFAを分解したM二状態マシン相互作用します。等価的に:あなたは、設定された定義されているSをとMの要素、そして独特のサブセット割り当てられたSを元のDFAの各状態に。これもNMlg2N<M≤NMSMS Rabin-Scottパワーセット構築アルゴリズムが行うことでもあります。したがって、DFAで状態エンコードを行うことにより、パワーセット構築アルゴリズムが開始したセットをリバースエンジニアリングしようとしています。
従来の状態エンコードの問題では、すべてのエンコードが合法であり、最小化しようとしているいくつかの目的関数(状態遷移関数のロジックの量に関連)があります。NFAを生成するには、次のような制約付きバージョンのenconding問題を解決する必要があります。
ビット識別子のDFA状態へのエンコードは、アルファベットの各シンボルのNFA差分を表します。各ビットの遷移関数は、ビットの単純な分離です。(結合または否定は許可されていません。)M
あなたが列挙できるよう、すべてのすべてのためにエンコードビットLG 2 N < M ≤ N各1を満たすかどうかの制約、およびチェック。(M = Nの場合、些細な「ワンホット」エンコーディングは常に制約を満たし、DFAを提供することに注意してください。)ただし、列挙は途方もなく大きいです(Di Micheliの教科書では、2 Mのようなものとして示されています!Mlg2N<M≤NM=N))CADの資料を提案している理由は、この検索を列挙するのではなく暗黙的に行う手法があるためです(たとえば、BDDを使用して、Lin、Touati、およびNewtonを参照してください。「マルチレベルの順次の最小化は気にしない論理ネットワーク」、国際会議Comp-Aided DsgnICCAD-90:414-417、1990。2M!(2M−N)!M!
例
次のDFAを取り上げます(不正行為によって派生した状態エンコードを使用します(Rabin-Scottを使用してNFAからDFAを生成し、エンコードはRabin-Scottによって選択されたサブセットを表します)。)
状態割り当てABCDのビットを呼び出すと、入力シンボルが1の場合、遷移関数はA = A、B = A、C = B、D = Cになります。入力シンボルが0の場合、遷移関数はA = A、C = B、D = Cです。これは、論理積も否定もない純粋な分離遷移関数であるため、この状態エンコードによりNFAが得られます。NFAの状態は、エンコードのビットと1対1で対応し、遷移関数は次のとおりです。
ブール充足可能性問題としての定式化
上記の非公式な説明は、ブール充足可能性問題としてのエンコーディングに直接つながります。NFAの遷移を説明する一連の変数と、選択されたNFAのRabin-Scottから導出されるDFA状態エンコーディングの一連の変数があります。分解しようとしている特定のDFAの遷移は、NFA遷移に制約を配置するために使用されます。
S記号のある言語の状態のDFAが与えられ、lg 2 M状態NFA を導出したいとします。NSM。変数 y s f tを使用して、NFAで可能な遷移を表します。 Y S F tは真IFFなりNFAの遷移があるからNFA状態 FにNFA状態 Tでシンボル sがlg2N<M≤Nysftysftf t s。上記の例のNFAでは、アルファベットのサイズは2で、4つのNFA状態があるため、は偽です。y変数と y 0 A A、y 1 A A、および y 1 A Bはすべてtrueで、 y 1 D ASM2=32 yy0AA,y1AAy1ABy1DA
変数を使用して、Rabin-ScottアルゴリズムがNFA状態nをDFA状態dをラベル付けする状態のセットに含めるかどうかを示します。上記の例では、N = 8 DFA状態とM =xdnndN=8M=4xkxkAxkCxkDxkB は偽です。
i<j{A,B,⋯,D}
(xiA≠xjA)+(xiB≠xjB)+⋯+(xiD≠xjD).
ijskjljlkなし NFAからNFA遷移を状態AをNFA状態CまたはDに変更します。o(SN2)
xjAxjBxjD===ysAAxiA+ysBAxiB+⋯+ysDAxiDysABxiA+ysBBxiB+⋯+ysDBxiD⋯ysADxiA+ysBDxiB+⋯+ysDDxiD.
x0A+x0B+⋯+x0DfnxiAfA+xiBfB+⋯+xiDfDi¬(xjAfA+xjBfB+⋯+xjDfD) j