跳转至

Dynamic Programming

Optimal Binary Search Tree

N 个词,按照字典序排列 \(w_1, w_2, \cdots, w_N\),每个词 \(w_i\) 的被检索到的概率为 \(p_i\),求一棵二叉搜索树,使得检索的期望代价最小。

即最小化 \(\sum_{i=1}^N p_i (d_i + 1)\),其中 \(d_i\)\(w_i\) 在树中的深度。

  • \(T_{ij}\)\(w_i, w_{i+1}, \cdots, w_j\) 的最优二叉搜索树
  • \(c_{ij}\)\(T_{ij}\) 的代价

则有

\[ c_{ij} = \min_{i \leq r \leq j} \left\{ c_{i,r-1} + c_{r+1,j} + \sum_{k=i}^j p_k \right\} \]

\(c_{ii} = p_i\)