好吧,我希望有人能给我解释一下。我正在为期末考试而学习,但我无法弄清楚一些事情。
问题是动态规划;构建最优二叉搜索树(OBST)。我一般理解动态规划,特别是这个问题的概念,但我不理解这个问题的递归形式。
我知道我们正在为这些节点的越来越多的子集构建最佳二叉搜索树,并将答案保存在表格中以避免重新计算。我还知道,当您在 a_{k} 根树时,从 a_{1} 到 a_{k-1} 的所有成功节点以及它们相应的虚构不成功节点(即树的叶子)都在左子树,然后右子树中的那些是a_{k+1}到a_{n}。
这是我不明白的方程的递归形式:
c(i, j) = min (i < k <= j) {c(i, k-1) + c(k, j) + p(k) + w(i, k-1) + w(k +j)}
其中 w(i, j) = q(i) + 从 i+1 到 j 的总和 (q(l) + p(l))。
所以在 c(i,j) 中,从左到右,我们有左子树的成本 + 右子树的成本 + 成功搜索根的概率 + w(i, k-1) + w(k +j)。
我的困惑是 c(i, k-1) 与 w(i, k-1) 有何不同。
文本是 Horowitz、Sahni 和 Rajasekeran 的计算机算法,但我也阅读了 OBST 上的 CLRS 并在线搜索,我遇到的任何内容都无法很好地解释方程中这些部分之间的差异。