最佳二叉搜索树仅对密钥和频率对的特定顺序是最佳的吗?

时间:2018-08-27 18:45:39

标签: algorithm data-structures binary-search-tree dynamic-programming

提供一对密钥及其频率,

a 32
an 7
and 69
by 13
effects 6
for 15
from t 0
high 8
in 64
of t 42
on 22
the 79
to 18
with 9 

我们可以通过optimal BST来构建Knuth's dynamic programming algorithm

如果我们改组配对,我们可以构建另一个最佳BST。

因此,最佳BST仅对特定顺序的配对是最佳的,对吗?如果是,我们可以在什么情况下应用此数据结构?

2 个答案:

答案 0 :(得分:1)

您问:

  

那么最佳BST仅对特定顺序的配对是最佳的,对吧?

这就是维基百科文章所说的:

  

...是一种二进制搜索树,它为给定的访问序列(或访问概率)提供最小的搜索时间(或预期的搜索时间)。

换句话说,如果您更改单个单词的频率,则必须更改树中键的顺序。

您还问过:

  

如果是,我们可以在什么情况下应用此数据结构?

您可以像使用任何二进制搜索树一样使用它。这里的想法是,它安排树,以便频繁搜索的项目需要搜索的节点更少,而以不频繁访问的项目为代价,这需要更多的搜索。当单个项目的访问概率差异很大时,它的性能优于一般的二叉搜索树(包括平衡树)。

尽管您可以拥有动态的最佳BST,但是如果您进行了很多修改,则重新调整树的形状可能会变得昂贵。最好的应用是树是静态的,或者树的查询量大于修改量。

答案 1 :(得分:0)

最佳BST是BST,并且BST具有排序顺序,因此无论它是什么,您都可以查找该词。因此,是的,最佳BST仅对特定顺序的配对是最佳的。

它可以像BST一样用作字典。