最优二叉搜索树

本文介绍了最优二叉搜索树的概念,它是最小化搜索代价的二叉搜索树。通过应用动态规划算法,讨论了最优二叉搜索树的结构、递归算法以及如何计算其期望搜索代价,并提供了构建最优解的思路。

问题定义

给定一个n个不同关键词的已排序的序列K=<k1,k2,...,kn>(k1<k2<...<kn)K=<k_1,k_2,...,k_n>(k_1<k_2<...<k_n)K=<k1,k2,...,kn>(k1<k2<...<kn),用这些关键字构建一棵二叉搜索树T

  • 对每个关键字kik_iki,都有一个频率pip_ipi表示其搜索频率
  • 有n+1个**“伪关键字”d0,d1,d2...,dnd_0,d_1,d_2...,d_nd0,d1,d2...,dn表示不在K中的值**,每个值都有一个频率qiq_iqi表示对应的搜索频率
    • d0d_0d0:所有小于k1k_1k1的值
    • dnd_ndn:所有大于knk_nkn的值
    • di(i=1,2,...n−1)d_i(i=1,2,...n-1)di(i=1,2,...n1):所有介于(ki,ki+1)(k_i,k_{i+1})(ki,ki+1)之间的值
  • 每个关键字kik_iki是一个内部节点
  • 每个伪关键字did_idi是一个叶子节点

对于每次搜索,有两种情况:

  • 成功:找到某个关键字kik_iki
  • 失败:找到某个伪关键字$d_i $

所以:
∑i=1npi+∑i=0nqi=1 \sum_{i=1}^{n}p_i+\sum_{i=0}^{n}q_i=1 i=1npi+i=0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值