热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

《算法导论》CH6习题6.3-3的证明

求证:在任一含n个元素的堆中,至多有┌n2h+1┐w个高度为h的节点。首先解释一下名词的概念:节点高度(heightofnode):从在该节点下的最低的叶子向上,该节点所在的层数节点深度(de

求证:在任一含n个元素的堆中,至多有┌n/2h+1┐w个高度为h的节点。

首先解释一下名词的概念:
节点高度(height of node):从在该节点下的最低的叶子向上,该节点所在的层数
节点深度(depth of node):从根节点向下,经过的层数。
注意:以上计数都是从0开始的,如图1:
节点4的高度为2,深度为2
节点5的高度为1,深度为2
因此,属于同一层的节点一定有同样的深度,但是高度可能相同,也可能相差1.

   图2       图1

                        图1                                                                    图2

证明:(1)先证当h=0时,该结论是成立的。
h=0,即高度为0的节点,显然是叶子节点,这些节点有两种,第一种A在树的最下面的一层的所有节点,第二种B是在倒数第二层没有叶子结点的结点。对于有n个节点的堆:
当n为奇数时,如图1所示,叶子节点共有k1=┌n/2┐个,相应地非叶子节点有k2=n-┌n/2┐=└n/2┘个,可以看出k1=k2+1,即n=2*k1-1,得出k1=(n+1)/2=┌n/20+1┐(因为n为奇数),属于叶子节点的高度都为0,即我们要证的h=0,得证。
当n为偶数时,如图2,可以利用n为奇数时的结论,为其添加一个节点,研究n+1个节点的叶子节点。有叶子节点k1'=┌(n+1)/2┐=n/2+1个,n+1=2*k1'-1,k1'比k1多一个添加的叶子节点,故k1=k1'-1=n/2=┌n/20+1┐(因为n为偶数)。

(2)下面证,已知高度为h-1的节点至多有┌n/2h┐个,高度为h的点至多有┌n/2h+1┐个。
对于高度为h-1的点,无论它是叶子节点还是内部节点,它们的所有的父节点一定是高度为h的节点,所以可以从这里下手,已知高度为h-1的节点至多有┌n/2h┐,刚它的父节点个数为C=┌┌n/2h┐/2┐。
当n为奇数时,┌n/2h┐=(n+1)/2h,上式可化为C=┌(n+1)/2h+1┐,同样因为n为奇数,C=┌n/2h+1┐;当n为偶数时,┌n/2h┐=n/2h,父节点个数为C=┌(n/2h)/2┐=┌n/2h+1┐。
综上,可得证。

===========================分割线===================================

吐糟一下,网上有算法导论的答案,参考了一下,觉得外国人分析的也真挺严密的,以上是我的理解。还是要原创嘛。

数学符号实在找不到,只能先用这个奇怪的┌┐代替,哈哈,发现自己已经习惯用这个了。

第一次用GIMP作图,把PS的思想全盘搬,发现自己快要疯掉了,没办法,要用Linux就要逐渐摆脱对各种软件的信赖。

以上如果有不严密的地方,欢迎一起来討論。


推荐阅读
  • 分布式计算助力链力实现毫秒级安全响应,确保100%数据准确性
    随着分布式计算技术的发展,其在数据存储、文件传输、在线视频、社交平台及去中心化金融等多个领域的应用日益广泛。国际知名企业如Firefox、Google、Opera、Netflix、OpenBazaar等均已采用该技术,推动了技术创新和服务升级。 ... [详细]
  • Java高级工程师学习路径及面试准备指南
    本文基于一位朋友的PDF面试经验整理,涵盖了Java高级工程师所需掌握的核心知识点,包括数据结构与算法、计算机网络、数据库、操作系统等多个方面,并提供了详细的参考资料和学习建议。 ... [详细]
  • 如何高效学习鸿蒙操作系统:开发者指南
    本文探讨了开发者如何更有效地学习鸿蒙操作系统,提供了来自行业专家的建议,包括系统化学习方法、职业规划建议以及具体的开发技巧。 ... [详细]
  • 本文详细介绍了 Java 网站开发的相关资源和步骤,包括常用网站、开发环境和框架选择。 ... [详细]
  • 探索CNN的可视化技术
    神经网络的可视化在理论学习与实践应用中扮演着至关重要的角色。本文深入探讨了三种有效的CNN(卷积神经网络)可视化方法,旨在帮助读者更好地理解和优化模型。 ... [详细]
  • 我整理了HMOV四大5G旗舰的参数,可依然没能拯救我的选择困难症
    伊瓢茕茕发自凹非寺量子位报道|公众号QbitAI报道了那么多发布会,依然无法选出要换的第一部5G手机。这不,随着华为P40系列发布,目前国 ... [详细]
  • 本周三大青年学术分享会即将开启
    由雷锋网旗下的AI研习社主办,旨在促进AI领域的知识共享和技术交流。通过邀请来自学术界和工业界的专家进行在线分享,活动致力于搭建一个连接理论与实践的平台。 ... [详细]
  • 知识图谱与图神经网络在金融科技中的应用探讨
    本文详细介绍了融慧金科AI Lab负责人张凯博士在2020爱分析·中国人工智能高峰论坛上的演讲,探讨了知识图谱与图神经网络模型如何在金融科技领域发挥重要作用。 ... [详细]
  • 我的读书清单(持续更新)201705311.《一千零一夜》2006(四五年级)2.《中华上下五千年》2008(初一)3.《鲁滨孙漂流记》2008(初二)4.《钢铁是怎样炼成的》20 ... [详细]
  • MySQL InnoDB 存储引擎索引机制详解
    本文深入探讨了MySQL InnoDB存储引擎中的索引技术,包括索引的基本概念、数据结构与算法、B+树的特性及其在数据库中的应用,以及索引优化策略。 ... [详细]
  • 本文总结了一次针对大厂Java研发岗位的面试经历,探讨了面试中常见的问题及其背后的原因,并分享了一些实用的面试准备资料。 ... [详细]
  • PHP函数的工作原理与性能分析
    在编程语言中,函数是最基本的组成单元。本文将探讨PHP函数的特点、调用机制以及性能表现,并通过实际测试给出优化建议。 ... [详细]
  • Redis 是一个高性能的开源键值存储系统,支持多种数据结构。本文将详细介绍 Redis 中的六种底层数据结构及其在对象系统中的应用,包括字符串对象、列表对象、哈希对象、集合对象和有序集合对象。通过12张图解,帮助读者全面理解 Redis 的数据结构和对象系统。 ... [详细]
  • 自动驾驶中的9种传感器融合算法
    来源丨AI修炼之路在自动驾驶汽车中,传感器融合是融合来自多个传感器数据的过程。该步骤在机器人技术中是强制性的,因为它提供了更高的可靠性、冗余性以及最终的 ... [详细]
  • LeetCode 实战:寻找三数之和为零的组合
    给定一个包含 n 个整数的数组,判断该数组中是否存在三个元素 a、b、c,使得 a + b + c = 0。找出所有满足条件且不重复的三元组。 ... [详细]
author-avatar
大眼-猫_945
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有