2-SATとは何か|2点間の矛盾発見を多項式時間で検証する

Decrypt history, Encrypt future™

2-SATとは何か|2点間の矛盾発見を多項式時間で検証する

2-SATとは、各節が2個以下のリテラルからなるCNF(Conjunctive Normal Form/連言標準形)の充足可能性問題である。Implication Graph(含意グラフ)と強連結成分(SCC/Strongly Connected Components)を用い、多項式時間で解ける。Pに属する。

3-SATや一般のCNF-SAT、3COL全体を2-SATへ還元できるわけではない。経営へ応用するなら、隣接する二者間の禁止条件・含意条件だけを二項射影として取り出し、局所Conflictを監視する手続である。全体問題を解いたことにはならない。

2-SATと3-SATの境界

問題 節幅 位置づけ
2-SAT 2以下 P
3-SAT ちょうど3 NP完全
一般SAT 制限なし NP完全

2-SATでは、節 (a ∨ b) を (¬a → b) かつ (¬b → a) という含意に直し、グラフの到達関係から矛盾を検出する。同じ変数 x と ¬x が同一SCCに入ればUNSAT(Unsatisfiable/充足不能)である。

例題:共有信号線上の左右ドライバ

ここでいうバスは、乗用車ではなく、複数の回路が同じ線を共有する信号線(共有ネット)を指す。変数を L(左ドライバが駆動)、R(右ドライバが駆動)とする。同時駆動禁止 (¬L ∨ ¬R) と、フローティング禁止 (L ∨ R) を置くと、割当は (L,R)=(1,0) または (0,1) に限られる。一方、「左右は常に同じ駆動状態」 (¬L ∨ R)、(¬R ∨ L) を足すと、同時駆動禁止と衝突し、L と ¬L が同一SCCに入って UNSAT になる。矛盾の有無を Yes/No で確認できる規模に留めることが要点である。

バリューチェーンの二項射影

実務では、バリューチェーンの隣接ペアから禁止条件を書く。

接続 監視する問い
論理 → 知財 公理が知財を防御できるか
知財 → 企画 模倣困難な表現へ落ちているか
企画 → 調達 コンセプトが調達思想に準拠するか
調達 → 製造 素材が品質を具現化するか
製造 → 流通 経路が価値を保存するか
流通 → 販売 検証可能な体験を届けるか

目的は全体最適化ではない。局所Conflictを安く早く露出させることである。

対話型証明との類似点

独立に生成された二つの回答・証跡をVerifierが照合する設計は、2証明者対話の着想に近い。証明者間の通信を許さず、相関する問いへの回答が二項制約を破らないかを見る。

全部を解かずに局所矛盾を高確率で露出させることが目的である。通過は「たぶん正しい」ではなく、「いま抜いた局所については矛盾が見つからなかった」という記録である。

チェックリスト

  1. 監視対象が二項制約に落ちているか
  2. 3リテラル以上の全体問題と混同していないか
  3. Implication GraphとSCCで矛盾を見ているか
  4. 局所通過を全体証明と書いていないか
  5. 値引きをreject破綻として扱えるか

2-SATの有効性は、難しい全体を簡単だと偽ることではなく、多項式時間で監視できる二項の層を切り出し、Conflictを先に洗う点にある。3-SATや3COLの全体充足を主張したいなら、別の手続と別の証跡が要る。

『P vs NP経営』の詳細はこちら https://link.amazon/B04IEdYsn