正の命題式を選言標準形 (DNF)に圧縮したいと思います。
今のところ、否定されたリテラルのない単純な DNF のみを想定しています。逆のプロセス、解凍は簡単に定義できます。論理積と論理和のみから構築された数式の場合、次の書き換え規則によって DNF が生成されます。
A & (B v C) --> (A & B) v (A & C)
(A v B) & C --> (A & C) v (B & C)
解凍の例を次に示します。
Example: Decompression
Input:
(p & (q v r) & s & (t v u)) v
w.
Output:
(p & q & s & t) v
(p & r & s & t) v
(p & q & s & u) v
(p & r & s & u) v
w.
ここで、DNF から単一の数式を生成できるアルゴリズムがいくつかあるのではないかと考えています。私はすでに二分決定図を調べました。私がこれらの問題を抱えているのは、途中ですべての選言を組み合わせることができないということです。
たとえば、共有を使用する二分決定図のアルゴリズムは、印刷中に同様の分岐を表示したり、新しい前置詞変数を導入したりしますが、どちらも望ましくありません。
Example: Compression (Bad)
Input:
(p & q & s & t) v
(p & r & s & t) v
(p & q & s & u) v
(p & r & s & u) v
w.
Output:
(p & ((q & s & (t v u)) v (r & s & (t v u)))) v
w.
- or -
Output:
(p & ((q & h) v (r & h))) & (h <-> s & (t v u))) v
w.
結果は、もはや DNF ではなく、単一の式になるはずです。これは、元の DNF に既にある前置詞変数と、選言と接続詞のみを使用する二分決定図アルゴリズムよりもコンパクトです。必要な圧縮の例を次に示します。
Example: Compression (Good)
Input:
(p & q & s & t) v
(p & r & s & t) v
(p & q & s & u) v
(p & r & s & u) v
w.
Output:
(p & (q v r) & s & (t v u)) v
w.
あなたはどう思いますか?Prolog の実装が優先されます。
さよなら