本文是算法设计基于动规算法的问题“最优二叉搜索树”的实现。
一、问题
最优二叉搜索树问题:
给定一个n个不同关键字已排序的序列 :
K=<k1,k2,…,kn> (k1<k2<…<kn),
我们希望用这些关键字构造一棵二叉搜索树。对每个关键字ki,都有一个概率bi表示其搜索频率。有些要搜索的值可能不在K中,因此我们还有n+1个“伪关键字”d0,d1,d2…dn表示不在K中的值。d0表示所有小于k1的值, dn 表示所有大于kn的值,对i=1,2,…,n−1,伪关键字di表示所有在ki和ki+1之间的值。对每个伪关键字di,也都有一个概率ai表示对应的搜索频率。
二、环境
电脑硬件配置:
处理器:Intel i7 7700HQ
显卡:NVIDIA GeForce GTX 1050 Ti
内存:16GB
软件:
编程语言:C++
IDE:Microsoft Visual Studio 2019
Windows SDK版本:10.0
平台工具集:Visual Studio 2019(v142)
三、项目地址
本项目的源码、可执行程序均已经存放于我的Github,欢迎下载查看: