最优二叉搜索树

最优二叉搜索树(Optimal Binary Search Tree, OBST)是动态规划的经典问题。

二叉搜索树定义

二叉搜索树是一种二叉树:左子树所有节点值均小于该结点,右子树所有结点均大于该节点,左右子树都是二叉搜索树。中序遍历二叉搜索树即可得到有序序列。

问题描述

在搜索情境下,已知搜索关键字 k 的概率和搜索失败情况 d 的概率,求一种树的构建方式,使得搜索树的期望代价最小。

优化解结构

一个优化解包含的子树一定也是该子树的优化解。

一个树的优化解就是以其中一个结点为根,左右子树都是优化解,且总代价比以其他结点为根的方案都小。

代价传递方程

注意加上 W(增加树的高度使每个结点的代价上升一个概率)。

自下向上计算

最下层代表只有 d 元素,从 i=j 开始才加入 k 元素。

与哈夫曼树的区别

  • 最优二叉搜索树:顺序固定,在顺序不变的情况下找到最优构建方法
  • 哈夫曼树:顺序没有规定,通过贪心思想在每一步选择当前最小的两个结点合并

链接到