热门标签 | 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就要逐渐摆脱对各种软件的信赖。

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


推荐阅读
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 堆是一种常见的数据结构,广泛应用于计算机科学领域。它通常表示为一棵完全二叉树,并可通过数组实现。堆的主要特性是每个节点的值与其父节点的值之间存在特定的关系,这使得堆在优先队列和排序算法中非常有用。 ... [详细]
  • 探索电路与系统的起源与发展
    本文回顾了电路与系统的发展历程,从电的早期发现到现代电子器件的应用。文章不仅涵盖了基础理论和关键发明,还探讨了这一学科对计算机、人工智能及物联网等领域的深远影响。 ... [详细]
  • FinOps 与 Serverless 的结合:破解云成本难题
    本文探讨了如何通过 FinOps 实践优化 Serverless 应用的成本管理,提出了首个 Serverless 函数总成本估计模型,并分享了多种有效的成本优化策略。 ... [详细]
  • 2018年3月31日,CSDN、火星财经联合中关村区块链产业联盟等机构举办的2018区块链技术及应用峰会(BTA)核心分会场圆满举行。多位业内顶尖专家深入探讨了区块链的核心技术原理及其在实际业务中的应用。 ... [详细]
  • 尽管深度学习带来了广泛的应用前景,其训练通常需要强大的计算资源。然而,并非所有开发者都能负担得起高性能服务器或专用硬件。本文探讨了如何在有限的硬件条件下(如ARM CPU)高效运行深度神经网络,特别是通过选择合适的工具和框架来加速模型推理。 ... [详细]
  • 本文作者分享了在阿里巴巴获得实习offer的经历,包括五轮面试的详细内容和经验总结。其中四轮为技术面试,一轮为HR面试,涵盖了大量的Java技术和项目实践经验。 ... [详细]
  • 本题探讨了在大数据结构背景下,如何通过整体二分和CDQ分治等高级算法优化处理复杂的时间序列问题。题目设定包括节点数量、查询次数和权重限制,并详细分析了解决方案中的关键步骤。 ... [详细]
  • 智能车间调度研究进展
    本文综述了基于强化学习的智能车间调度策略,探讨了车间调度问题在资源有限条件下的优化方法。通过数学规划、智能算法和强化学习等手段,解决了作业车间、流水车间和加工车间中的静态与动态调度挑战。重点讨论了不同场景下的求解方法及其应用前景。 ... [详细]
  • 机器学习核心概念与技术
    本文系统梳理了机器学习的关键知识点,涵盖模型评估、正则化、线性模型、支持向量机、决策树及集成学习等内容,并深入探讨了各算法的原理和应用场景。 ... [详细]
  • 深入解析Java虚拟机(JVM)架构与原理
    本文旨在为读者提供对Java虚拟机(JVM)的全面理解,涵盖其主要组成部分、工作原理及其在不同平台上的实现。通过详细探讨JVM的结构和内部机制,帮助开发者更好地掌握Java编程的核心技术。 ... [详细]
  • 随着生活节奏的加快和压力的增加,越来越多的人感到不快乐。本文探讨了现代社会中导致人们幸福感下降的各种因素,并提供了一些改善建议。 ... [详细]
  • 掌握Linux:基础命令入门
    本章节深入浅出地介绍了Linux系统中的基本命令操作,帮助读者快速上手并理解其核心功能。 ... [详细]
  • 解决微信电脑版无法刷朋友圈问题:使用安卓远程投屏方案
    在工作期间想要浏览微信和朋友圈却不太方便?虽然微信电脑版目前不支持直接刷朋友圈,但通过远程投屏技术,可以轻松实现在电脑上操作安卓设备的功能。 ... [详细]
author-avatar
ssl87
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有