算法笔记五之最优二分检索树问题(动态规划)【应试版】

提示:本文章不含代码,纯应试解题~(中国地质大学(武汉)研究生算法考试题目)


前言

最优二分检索树(Optimal Binary Search Tree, OBST)问题是一个经典的动态规划问题,它涉及到在给定一组有序关键字及其搜索概率的情况下,构建一棵二叉搜索树,使得查找这些关键字的平均代价最小。

说人话就是——想象一下,你有一个装满不同书籍的书架,每本书都有人可能会来查找。每个人来找书的时候,他们可能对某几本书更感兴趣,所以这些书被查找的频率会更高。现在,你想要重新排列这些书,使得人们找书的平均时间最短。
最优二分检索树就像是这样一个书架的最优排列方式。在这个排列中,每本书(或者说每个关键字)都放在一个位置上,这样当人们来找书时,他们平均需要翻阅的书的数量最少。这就像是在计算机中搜索数据,我们希望找到一种方式,使得搜索数据的平均步骤数最少。


提示:以下是本篇文章正文内容

一、问题描述

1.题目

设 n = 4 , ( a 1 , a 2 , a 3 , a 4 ) = ( d o , i f , r e a d , w h i l e ) , P ( 1 : 4 ) = ( 3 , 3 , 1 , 1 ) , Q ( 0 , 4 ) = ( 2 , 3 , 1 , 1 , 1 ) 设n=4,(a_1,a_2,a_3,a_4)=(do,if,read,while),\\ P(1:4)=(3,3,1,1),Q(0,4)=(2,3,1,1,1) n=4,(a1,a2,a3,a4)=(do,if,read,while),P(1:4)=(3,3,1,1),Q(0,4)=(2,3,1,1,1)

2.递推公式介绍

公式一:
W ( i , j ) = Q ( i ) + ∑ i < r < = j [ P ( r ) + Q ( r ) ] = W ( i , j − 1 ) + P ( j ) + Q ( j ) \begin{aligned} W(i,j) &= Q(i)+\sum_{i<r<=j}[P(r)+Q(r)]\\ &=W(i,j-1)+P(j)+Q(j) \\ \end{aligned} W(i,j)=Q(i)+i<r<=j[P(r)+Q(r)]=W(i,j1)+P(j)+Q(j)
W(i,j)表示i~j范围内的搜索成本。

举个栗子~
如下图所示:对应的 W W W就是 W = ( 0 , 1 ) W=(0,1) W=(0,1),且
W ( 0 , 1 ) = W ( 0 , 0 ) + P ( 1 ) + Q ( 1 ) W(0,1)=W(0,0)+P(1)+Q(1) W(0,1)=W(0,0)+P(1)+Q(1)

在这里插入图片描述
公式二:
设最优二叉检索树的成本为 C ( 0 , n ) C(0,n) C(0,n),有
C ( 0 , n ) = m i n 1 < = k < = j { C ( 0 , k − 1 ) + C ( k , n ) + 1 } C(0,n)=min_{1<=k<=j}\{C(0,k-1)+C(k,n)+1\} C(0,n)=min1<=k<=j{ C(0,k1)+C(k,n)+1}
对于任意 i i i j j j的节点,其最优二叉搜索树的成本为:
C ( i , j ) = m i n i < k < = j { C ( i , k − 1 ) + C ( k , j ) } + W ( i , j ) C(i,j)=min_{i<k<=j}\{C(i,k-1)+C(k,j)\}+W(i,j) C(i,j)=mini<k<=j{ C(i,k1)+C(k,j)}+W(i,j)
小声哔哔:懒得推(hiahia~)

二、解题步骤

1.W的计算

W ( i , j ) = W ( i , j − 1 ) + P ( j ) + Q ( j ) \begin{aligned} W(i,j) &= W(i,j-1)+P(j)+Q(j) \\ \end{aligned} W(i,j)=W(i,j1)+P(j)+Q(j)

step 0
首先是初始化过程,即初始化所有未成功检索的节点
W ( 0 , 0 ) = Q ( 0 ) = 2 W(0,0)=Q(0)=2 W(0,0)=Q(0)=2 W ( 1 , 1 ) = Q ( 1 ) = 3 W(1,1)=Q(1)=3 W(1,1)=Q(1)=3 W ( 2 , 2 ) = Q ( 2 ) = 1 W(2,2)=Q(2)=1 W(2,2)=Q(2)=1 W ( 3 , 3 ) = Q ( 3 )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值