
基于论文第 3.3 节、附录 A 及算法 1,以下是对 RAP-MCTS 伪代码的逐行技术解析与系统性分析:
一、算法框架与输入参数
1.1 输入参数体系(基于第 3.3 节与算法 1)
| 参数 | 数学符号 | 功能定义 | 工程对应 |
|---|---|---|---|
| 初始状态 | s_0 | 推理起点(如 Blocksworld 初始积木配置) | 问题输入 |
| 状态转移 | p_\theta | 世界模型(LLM 改造) | p(s_{t+1} |
| 奖励函数 | r_\theta | 四维度评估(第 3.2 节) | r(s_t, a_t) |
| 动作生成器 | p_\varphi | 智能体 LLM 策略 | p(a |
| 分支因子 | d | 每节点扩展的动作数 | 控制树宽度 |
| 深度限制 | L | 最大推理步数 | 防止无限搜索 |
| 迭代次数 | N | MCTS 模拟次数 | 计算预算 |
| 探索权重 | w | UCT 公式中平衡探索/利用 | c in UCT |
1.2 初始化数据结构(第 1-2 行)
A: S → A(s) # 动作记忆:记录每个状态 s 的候选动作集合
c: S×A → S # 子节点映射:状态 - 动作对 → 下一状态
r: S×A → R # 奖励映射:状态 - 动作对的即时奖励
Q: S×A → R # 动作价值函数:长期累积回报估计
N: S → N # 访问计数器:状态被访问次数
关键设计:与标准 MCTS 不同,RAP 显式维护动作记忆 A(s) 和子节点映射 c(s,a),这是因为 LLM 动作空间巨大且随机,无法像围棋那样枚举所有合法动作(附录 A:'对于开放域问题,无法枚举所有可能行动')。
二、主循环:四阶段详解(第 3-23 行)
2.1 选择阶段(Selection,第 5-10 行)
while N(s_t)>0: # 树策略:沿已访问节点下行
N(s_t) ← N(s_t)+1 # 更新访问计数
a_t ← argmax[UCT 公式] # 公式 (1) 实现
r_t = r(s_t, a_t) # 获取即时奖励(用于后续反向传播)
s_{t+1} ← c(s_t, a_t) # 通过子节点映射转移状态
t ← t +1
UCT 公式实现(第 7 行对应公式 1): a_t = \arg\max_{a \in A(s_t)} [ Q(s_t, a) + w\sqrt{\frac{\ln N(s_t)}{N(c(s_t, a))}} ]
工程细节(附录 A 补充):
- 未探索动作处理:若存在 a∈A(s_t) 满足 N(c(s_t,a))=0(即未访问),算法使用轻量级局部奖励(如仅 r_3 自我评估)估算初始 Q 值,而非标准 UCT 的无穷大探索 bonus
- 终止检查:若 s_t 为终止状态(满足目标或失败),跳过扩展直接进入反向传播

