好的,我希望有人能够向我解释这个问题。我正在准备期末考试,但无法完全理解动态规划;构造最优二叉搜索树(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的《计算机算法》,但我也阅读了CLRS关于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的《计算机算法》,但我也阅读了CLRS关于OBST的内容,还搜索了一些在线文章,但没有任何一篇文章能很好地解释方程中这些部分的区别。