1. 二分检索树的性能

能成功检索的关键字是绿色的,即ai,不能成功被检索的关键字是红色的,即Ei,假设他们按从小到大排列。他们被检索的概率分别是P(i)和Q(i)。

设level(ai)为第i内个节点所在深度,level(Ei)为第i外个节点所在深度。
能使
∑1≤i≤nP(i)∗level(ai)+∑0≤i≤nQ(i)∗(level(Ei)−1) \sum_{1 \leq i \leq n} \mathrm{P}(\mathrm{i}) * \operatorname{level}\left(a_{i}\right)+\sum_{0 \leq \mathrm{i} \leq \mathrm{n}} \mathrm{Q}(\mathrm{i}) *(\operatorname{level}(E i)-1) 1≤i≤n∑P(i)∗level(ai)+0≤i≤n∑Q(i)∗(level(Ei)−1)
取值最小的二分检索树为最优二分检索树。
上图二分检索树的代价为P(2)*1 + P(1)*2 + P(4)*2 + P(3)*3 + P(5)*3 + Q(0)*2 + Q(1)*2 + Q(2)*3 + Q(3)*3 + Q(4)*3 + Q(5)*3。
2.多阶段决策
将最优二叉检索树的构造,看作一个多阶段决策过程。第i个阶段要决策怎样构造一个共有i个内节点的二叉检索树。即第一个阶段,找出所有只有1个内节点的检索树,第二个阶段,找出所有有2个节点的检索树,第三阶段,找出所有3个节点的检索树。注意,第i个阶段,依赖于第i-1个阶段,体现在当节点数增加1时,要怎样调整树根,才能保证是最优二叉检索树。也就是说,第i个阶段要遍历所有节点,其左子树和右子树的装配来自于第i-1个阶段已经决策好的最优检索树,找到总成本最小的一种情况。
记原始问题为T0nT_{0n}T0n,即要构造E0,a1,E1,...,an,EnE_0, a_1, E_1, ..., a_n, E_nE0,a1,E1,...,an,En共2n+12n+12n+1个节点的最优二分检索树。
设C(i,j)C(i, j)C(i,j)为Tij(Ei,ai,Ei+1,...,aj,Ej)T_{ij}(E_i, a_i, E_{i+1}, ..., a_j, E_j)Tij(Ei,ai,Ei+1,...,aj,Ej)的检索成本。则原问题T0nT_{0n}T0n的检索成本为C(0,n)C(0, n)C(0,n)。
那么第nnn阶段的决策过程,就是确定一个树根AKA_KAK,使C(0,n)=min{ Ak}C(0, n)=min\{A_k\}C(0,n)=min{ Ak},他表示以AkA_kAk为根,左右子树均来自于第n−1n-1n−1个阶段已经确定的最优二叉检索树的成本。
3.左右子树的成本
以aka_kak为根,其左右子树的成本分别为C(0,k−1)C(0, k-1)C(0,k−1)和C(k,n)C(k, n)C(k,n)。

COST(L)=∑1≤i<kP(i)∗level(ai)+∑0≤i<kQ(i)∗(level(Ei)−1)COST(R)=∑k<i≤nP(i)∗level(ai)+∑k≤i≤nQ(i)∗(level(Ei)−1)\begin{array}{l} \operatorname{COST}(L)=\sum_{1 \leq i<k} P(i)^{*} \operatorname{level}\left(a_{i}\right)+\sum_{0 \leq i<k} Q(i)^{*}\left(\operatorname{level}\left(E_{i}\right)-1\right) \\ \operatorname{COST}(R)=\sum_{k<i \leq n} P(i) * \operatorname{level}\left(a_{i}\right)+\sum_{k \leq i \leq n} Q(i)^{*}\left(\operatorname{level}\left(E_{i}\right)-1\right) \end{array} COST(L)=∑1≤i<kP(i)∗level(ai)+∑0≤i<kQ(i)∗(level(Ei)−1)COST(R)=∑k<i≤nP(i)∗level(a<

本文详细介绍了二分检索树的性能评估,特别是最优二分检索树的概念,通过多阶段决策过程来构造这样的树。具体涉及节点检索概率、树的层次代价以及递推公式来计算不同阶段的最优解。通过示例展示了如何逐步计算各个阶段的节点成本,并最终确定树的形态,以达到最小检索成本。
5708

被折叠的 条评论
为什么被折叠?



