提供一对密钥及其频率,
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仅对特定顺序的配对是最佳的,对吗?如果是,我们可以在什么情况下应用此数据结构?
答案 0 :(得分:1)
您问:
那么最佳BST仅对特定顺序的配对是最佳的,对吧?
这就是维基百科文章所说的:
...是一种二进制搜索树,它为给定的访问序列(或访问概率)提供最小的搜索时间(或预期的搜索时间)。
换句话说,如果您更改单个单词的频率,则必须更改树中键的顺序。
您还问过:
如果是,我们可以在什么情况下应用此数据结构?
您可以像使用任何二进制搜索树一样使用它。这里的想法是,它安排树,以便频繁搜索的项目需要搜索的节点更少,而以不频繁访问的项目为代价,这需要更多的搜索。当单个项目的访问概率差异很大时,它的性能优于一般的二叉搜索树(包括平衡树)。
尽管您可以拥有动态的最佳BST,但是如果您进行了很多修改,则重新调整树的形状可能会变得昂贵。最好的应用是树是静态的,或者树的查询量大于修改量。
答案 1 :(得分:0)
最佳BST是BST,并且BST具有排序顺序,因此无论它是什么,您都可以查找该词。因此,是的,最佳BST仅对特定顺序的配对是最佳的。
它可以像BST一样用作字典。