non-determinism-and-infinite-branching

从 CDCL 到 MCTS:非确定性与无限分支

父节点:recursive-harness

经典的 SAT/CSP 框架(csp-formalizationconflict-learning-and-backjumping)假设有限、确定性、可靠(sound)三条同时成立。agent harness 把这三条全部打破,这就把算法推入了一个不同的范式(regime)。

保留的与打破的

  • 保留的(结构): worlds 对应 configurations,collapse 对应 pruning,收敛对应收窄到 P×C 残差,记录 collapse 信息对应 provenance,backjump 到真正的元凶。
  • 打破的(保证): CDCL 的收敛性建立在有限、确定性、可靠三者之上;agent 把这三条全部违反了。

差异一——非确定性 ⇒ 一个不可靠的 theory solver ⇒ no-good 可能是假的

经典的传播(propagation)/冲突检测是确定性且可靠的(学到的 no-good 永远为真)。LLM 对不兼容性的判断则是随机的,并且可能出错

  • 假冲突(false conflict)→ 一个错误的 no-good → 永久剪掉一个的 world;漏检的冲突 → 走入一个死 world。
  • deducible-not-known(不完备)更糟:这是不可靠的(断言了错误的蕴含关系)。
  • → "知识单调增长"这条收敛保证被打破——学到一个错误的 no-good,在真值意义上是非单调的(你删掉了一个真实解)。

修复: no-good 不能是硬性的、永久性的子句(clause)。把它们变成软性的/加权的/可修正的:先验证再固化(commit)(多次采样/对抗式复核后再固化);对不确定的不兼容关系降权,而不是直接消除。范式(regime)从硬 CSP 滑向加权 CSP/Max-SAT/概率推断(信念传播,belief propagation)——collapse 变成一次信念更新(belief update),而不是硬性删除。

差异二——(实质上)无限分支 ⇒ 采样而非枚举 ⇒ MCTS,而非 DFS/BFS

经典的 DFS/BFS/CDCL 在一个有限的定义域上枚举子节点。agent 的定义域是无限的("标题该怎么写"):

  • 只能采样少量候选(LLM 作为 policy),再加一个价值估计(value estimate)来判断哪个更有希望;
  • 在一棵被采样、被随机评估的树上搜索=蒙特卡洛树搜索(Monte Carlo Tree Search):select(UCT = value + exploration bonus)→ expand → evaluate → backprop。(AlphaGo/AlphaProof。)
  • 完备性没有了: 无限分支加采样意味着你无法证明 UNSAT(无法枚举所有 world)→ 你只能satisfice(满足即止),停在 P×C

形式化归宿的转移:SAT/CSP → MCTS + 软约束

经典 CDCLagent harness
分支有限,枚举无限,采样(LLM=policy)
传播/冲突确定性,可靠随机,不可靠
no-good硬子句,永久软性/加权/可修正的信念
搜索DFS + 学习 + backjumpMCTS(价值引导 + 探索/利用)
终止完备(可证明 UNSAT)satisfice 到 P×C

这正是LLM + 树搜索这个前沿方向:Tree of Thoughts、LATS(Language Agent Tree Search)、AlphaProof 那种由 MCTS 引导的推理。

一句话

结构(worlds/collapse/provenance/backjump)继承自 CSP;但非确定性(no-good 可能为假 → 把它们软化为加权的、可修正的信念)和无限分支(无法枚举 → 只能采样 → 用 MCTS,而非 DFS/BFS;没有完备性,只有 satisfice)把算法从 CDCL 推向了"LLM 同时充当 policy 与 value 的 MCTS + 软约束 + P×C satisficing"

about this entry

One of sijie's wiki entries. The AI on this site is grounded in the same corpus and answers in sijie's voice, with citations back to entries like this one — answering costs sijie money, so it waits behind a code: enter an access code →