prototype algorithm 8C2: 新しいSATアルゴリズムのプレリリースノート

ステータス: 比較実験で安定した結果を示すワーキング pre-release
バージョン: 0.9(最終版は開発中)
日付: 2026年3月


SAT(Boolean Satisfiability Problem)

SAT は計算機科学における代表的な NP 完全問題の一つです。

回路検証、計画問題、暗号解析などの実応用では、相転移付近でソルバ性能が急激に落ちるため、この領域での挙動が重要になります。

m/n ≈ 4.2-4.5Random 3-SAT は、stochastic local search (SLS) にとって特に難しい領域です。ステップ予算(例: 180 flips)を固定すると、多くの手法は局所最適にとどまり、全句 SAT には到達しません。

prototype algorithm 8C2 は CSAW の発想を拡張し、3つの要素を追加しています。具体的には、primal-dual に基づく句重みダイナミクス、問題サイズ/密度に応じた size/density-aware 動作、そして zero-break 候補の改善処理です。現時点の pre-release 実験では、固定予算下で probSAT および WalkSAT と比較して +0.04-0.19% の改善を確認しています。

n=3000m≈12800 では 0.19% の差が 約24句 の追加 SAT に相当し、高難度設定では実質的な差になります。

CNF 形式(Conjunctive Normal Form)

$$ F = {C_1, C_2, \dots, C_m} $$

ここで各 $C_i$ は、$n$ 個のブール変数上のリテラルの論理和です。

目的は、割り当て $x \in {0,1}^n$ の中で満たされる句数を最大化することです。

$$ \max_x ; S(x) = \sum_{i=1}^{m} \mathbf{1}[C_i(x) = \text{true}] $$

$\mathbf{1}[\cdot]$ は指示関数です。

SAT の特別ケース: $S(x)=m$ なら全句を満たします。

Hardレジームの評価指標

ステップ予算固定時(例: 180 flips)の主要指標は次です。

$$ \text{Success Rate} = \frac{S(x)}{m} \times 100% $$

比較実験では、サイズ n、密度 α=m/n、ステップ予算を固定します。

prototype algorithm 8C2 のアーキテクチャ

全体フロー(機微な実装詳細は省略)

Pipeline diagram (Japanese)

要素役割
Adaptive scoringmake/break による動的フリップ優先度
Clause weightingdense-gated 時の動的句重み更新
Size/density awarenessサイズ・密度に応じた挙動調整
Zero-break prioritization無償改善候補の専用分岐

Make/Break scoring

選択した UNSAT 句内の候補 $v$ ごとに次を計算します。

$$ p(v) \propto \bigl(1 + \alpha \cdot \text{make}(v)\bigr) \cdot \bigl(\varepsilon + \text{break}(v) + \text{novelty}(v)\bigr)^{-c_b} $$

Make/Break scoring diagram (Japanese)

make(v) はフリップ後に SAT になる句数、break(v) は UNSAT へ落ちる句数です。novelty(v) は直近で使った変数への抑制です。αmake_weight)は make 報酬の強さ、c_bcb)は break 罰則の形を調整します。ε は数値安定化のための小定数です。

特別ケース: break(v)=0 の候補は zero-break 集合からランダムに選び、無償改善を取りこぼさないようにします。

Primal-Dual 句重み更新

dense モードの有効化条件

$$ \frac{m}{n} \geq \text{dual_density_on} $$

高密度設定では一様重みだけでは不十分なため、重みダイナミクスで持続的競合へ焦点を当てます。

更新式

$$ \eta_t = \frac{\eta}{\sqrt{t+1}} $$

$$ g_t = \mathbf{1}[C_i \text{ remains UNSAT after flip}] $$

$$ w_i^{t+1} = \Pi_{[w_{\min}, w_{\max}]} \left( w_i^t + \eta_t \bigl(g_t - \lambda (w_i^t - 1)\bigr) \right) $$

Primal-Dual update diagram (Japanese)

$\eta_t$ は減衰ステップ幅、$g_t$ は競合シグナル、$\lambda$ は重みを 1.0 付近へ戻す正則化です。$\Pi_{[w_{\min}, w_{\max}]}$ は重みの範囲制約です。

これは実質的に、MAX-SAT の重み更新に対する正則化付き subgradient 風の dual update と解釈できます。

実験結果

上位サイズ帯(n=1500-3000

設定: ratio = 4.267steps = 180、random 3-SAT。

nprototype algorithm 8C2probSATW-WalkSATΔ vs probSATΔ vs W-WalkSAT
150099.835999.742299.6641+0.09375+0.17188
200099.850699.745199.6836+0.10546+0.16698
250099.838399.798499.6625+0.03984+0.17578
300099.816499.769599.6270+0.04687+0.18944

テストした全サイズで先行しています。

密度別の安定性

ratio ∈ {4.1, 4.2, 4.35, 4.5}n ∈ {500, 1000}、seeds {42, 123}

rationprototype algorithm 8C2probSATW-WalkSAT
4.35100099.833399.758699.7356
4.50100099.711199.706799.5689

A/B: primal-dual 有効化の効果

モードSuccess RateW/L vs baseline
baseline (--disable-primal-dual)99.6278
candidate (PD on)99.80004/0

改善量: +0.17222%

make/break scoring の実装断片

// Flip probability for candidate v
const double adjusted_break = eps_ + break_count + penalty;
const double make_factor = 1.0 + make_weight_ * make_count;
const double probability = make_factor * std::pow(adjusted_break, -cb_);

dual weight update の実装断片

// Decaying step size
double eta_t = dual_eta_ / std::sqrt(static_cast<double>(step) + 1.0);

// Conflict signal
double grad = unsat_mask[chosen_clause] ? 1.0 : 0.0;

// Regularized gradient
double regularized_grad = grad - dual_reg_ * (old_weight - 1.0);

// Bounded update
double new_weight = std::clamp(
    old_weight + eta_t * regularized_grad,
    dual_weight_floor_,
    dual_weight_cap_
);

未解決課題とロードマップ

残課題

  • sparse 領域における回帰有無の検証
  • 各設定で seed を 10 以上に拡張した統計評価
  • サイズ依存チューニングの削減と、より堅牢なデフォルト挙動への移行

次リリースまでの作業

  • n=2000/2500/3000 に対する seeds 200-210 の追加
  • 95% 信頼区間の提示
  • primal-dual と subgradient の解釈整理
  • adaptive bucket 選択と手動チューニングの比較

確定事項と仮説

確定:

  • dense hard 設定で probSAT / W-WalkSAT より高い success rate
  • dense モードで primal-dual の正の寄与
  • zero-break prioritization の有効性

仮説(継続検証):

  • n > 3000 でも優位性が維持される
  • サイズ依存を弱めた共通設定が可能
  • 収束/後悔境界の理論保証を強化できる

まとめ

prototype algorithm 8C2 は意図的な pre-release です。高難度 random 3-SAT 設定での競争力はすでに確認できており、理論面と統計面の最終化を進めています。

用語集

用語説明
SATBoolean Satisfiability Problem
CNFConjunctive Normal Form
3-SAT各句が3リテラルの SAT 変種
Phase transitionm/n ≈ 4.2-4.5 の難領域
SLSStochastic Local Search
make/breakフリップ後に SAT になる句 / UNSAT になる句
Primal-Dualprimal と dual を同時更新する最適化的枠組み

連絡先

質問、実験提案、コラボレーションは以下まで: email: vremyavnikuda@protonmail.com