首页 > 其他分享 >【动态规划】最优二叉搜索树

【动态规划】最优二叉搜索树

时间:2023-11-18 23:01:46浏览次数:33  
标签:结点 kn 二叉 k1 搜索 权值 最优

问题描述:

    最优二叉搜索树的定义对给定的概率集合,期望搜索代价最小的二叉搜索树称为最优二叉搜索树

      这里把概率用结点权值代替,只讨论成功结点的搜索期望。

      给定 n 个有序的值,{k1,k2 ..... kn} ,其中 ki = i ;

    k1 到 kn 对应的权值分别为{ w1, w2 ..... wn } ;

    求以 k1 到 kn 为关键字构成的二叉搜索树期望代价最小。

    等价于求:

    

    根结点是从0开始,所以深度加1;

    

    遍历所有的 r 得到最小的。后面加上所有结点的权值是因为,前面左右子树的结点的深度都少了一层,所以后面是根结点的权值加上其他结点少的那一层乘对应权值。

    

    当 i=j 时,表示有一个结点构成的树,其最小期望就是结点权值本身。

    

 

标签:结点,kn,二叉,k1,搜索,权值,最优
From: https://www.cnblogs.com/wanna-be-star/p/17841433.html

相关文章

  • 变长子网划分问题的二叉树解法
    计网的变长子网划分、计组的变长操作码划分、数据结构的哈夫曼编码,都是前缀编码的本质(变长操作码的二叉树解法我还在琢磨中)【二叉树解法】每条从叶结点到根节点的路径上有且只有一个被分配的结点:【例】现将一个IP网络划分成4个子网,若其中一个子网是172.16.1.128/26,则下列网络中......
  • 数据结构之二叉树的遍历2(java)
    一:概述二叉树的深度遍历3种方式:前序遍历、中序遍历、后序遍历。下面是具体的这三种方式的遍历代码。二:具体概述用递归的方式实现前序遍历、中序遍历、后序遍历。publicclassTreeNodeTraveral{/***构建二叉树**@paraminputList输入序列*/......
  • 磁力搜索引擎大全教程,如何使用磁力链接。
      磁力链接是一种特殊的下载链接,磁力链接可以理解为一个文件识别码,而并非具体的资源地址,下载软件需要拿着这个识别码去整个互联网(DHT网络)去寻找持有该资源的用户(节点),如果找到则可以进行传输下载。一般年代越久远的磁力链接下载成功的几率越小,因为持有该资源的节点越少。一......
  • 【scipy 基础】--最优化
    SciPy库的optimize模块主要用于执行各种优化任务。优化是寻找特定函数的最小值或最大值的过程,通常用于机器学习、数据分析、工程和其他领域。scipy.optimize提供了多种优化算法,包括梯度下降法、牛顿法、最小二乘法等,可以解决各种复杂的优化问题。该模块还包含一些特定的函数,用于......
  • Angular 应用的搜索引擎优化(SEO)实战指南
    笔者之前在掘金社区发表了两篇关于Angular开发的文章,分别介绍了Angular支持服务器端渲染和PWA的技术细节:基于AngularUniversal引擎进行服务器端渲染的前端应用StateTransfer故障排查案例Angular应用支持PWA(ProgressiveWebApplication)特性的开发步骤分享本......
  • 代码随想训练营第三十七天(Python)| 738.单调递增的数字、968.监控二叉树
    738.单调递增的数字classSolution:defmonotoneIncreasingDigits(self,n:int)->int:#主要思路当前数字比前面数字小时。前面数字-1,当前数字变2为9str_n=str(n)foriinrange(len(str_n)-1,0,-1):ifstr_n[i]<str_n[......
  • 06_二叉树的右视图
    二叉树的右视图给定一个二叉树的根节点root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。示例1:输入:[1,2,3,null,5,null,4]输出:[1,3,4]示例2:输入:[1,null,3]输出:[1,3]示例3:输入:[]输出:[]提示:二叉树的节点个数的范......
  • 来自 szc 的字符串和搜索的总结
    膜拜szc大佬。原链接。题单+代码哈希普通哈希不讲了,讲讲树哈希。对于判断一对同构树,要考虑相同结构的儿子在两类树的不同位置。此时有两种方法,一种是正常的按序哈希,我们很好想到在哈希时对儿子节点的哈希值进行排序,规定一个顺序塞进去。另一种方法则是不使用多项式哈希,对......
  • Python模块的搜索路径
    在Python中,模块搜索路径是指解释器用来查找导入模块的位置列表。了解和掌握Python模块搜索路径对于正确导入模块和管理模块的位置至关重要。Python模块搜索路径的主要来源包括当前目录、Python标准库目录和用户自定义的目录。你可以通过sys模块中的sys.path来查看和修改模块搜索......
  • 二叉树的遍历
    先序遍历非递归算法1classSolution{public:vector<int>preorderTraversal(TreeNode*root){stack<TreeNode*>st;vector<int>result;if(root==NULL)returnresult;st.push(root);while(!st.empty())......