- 概述
利用最优二叉搜索树来实现树的搜索代价最小。树上的每一个节点都有一个被搜索到的概率值,搜索一个节点的花费为,如何构造一个二叉查找树使搜索树上的 所有节点的花费最小即为实现最优二叉查找树的问题。该问题可以用动态规划的思路实现。
形式化定义:给定n个不同关键字已经排序的序列,我们希望用这些关键字构造一个二叉搜索树。对每个关键字,都有概率表示起搜索概率。有些要搜索的值可能不再K中,因此我们还需要n+1个伪关键字,对于每一个伪关键字都有一个概率表示对应的搜索概率。 - 问题案例
n=5的关键字集合以及如下的搜索概率,构造二叉搜索树。
期望搜索代价的计算公式:
1 | #include<bits/stdc++.h> |
參考博客
https://blog.csdn.net/zhangyifei521/article/details/50833792