【发布时间】:2012-12-15 13:38:07
【问题描述】:
好的,我希望有人可以向我解释一下。我正在为期末考试而学习,但我无法弄清楚。
问题是动态规划;构建最优二叉搜索树(OBST)。我大致了解动态规划,特别了解这个问题的概念,但我不了解这个问题的递归形式。
我知道我们正在为这些节点的不断增加的子集构建最佳二叉搜索树,并在进行过程中将答案保存在表格中以避免重新计算。我还知道,当您在 a_{k} 根树时,从 a_{1} 到 a_{k-1} 的所有成功节点以及它们相应的虚构不成功节点(即树的叶子)都在左子树,然后右子树是a_{k+1}到a_{n}。
这是我不明白的等式的递归形式:
c(i, j) = min (i
其中 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 并在网上搜索过,我遇到的任何内容都无法很好地解释方程中这些部分之间的差异。
【问题讨论】:
-
什么是 q(i)。你能告诉?是因为搜索不成功吗?
标签: algorithm computer-science binary-search-tree