算法导论 14章 数据结构的扩张

算法导论第十四章数据结构的扩张 《算法导论》14数据结构的扩张 阅读详情

1、动态顺序统计
顺序统计树:向红黑树的结构中添加一个size域,表示包含自身节点的当前节点的子树节点的数目。修改后可以快速支持顺序统计量操作。
  1)检索具有给定排序的元素

    过程OS_SELECT(x,i)返回一个指向以x为根的子树中包含第小关键字的结点的指针,即为了找出顺序统计量树T中的第i小关键字。
OS_SELECT(x,i)
    r = size[left[x]]+1; //先计算x的处于的位置
    if i = r         //x正好是第i小的关键字
        then return x;
    else if i < r   //x比第i关键字大,则在其左子树查找
        then return OS_SELECT(left[x],i)
    else return OS_SELECT(right[x],i-r)  //x比第i关键字小,则在其右子树查找

  (2)确定一个元素的秩(位置)

  给定指向一顺序统计树T中节点x的指针,求x在顺序统计树中序遍历得到的线性序中的位置。
  

OS_RANK(T,x)
    r = size[left[x]]+1;   //获取以x为根子树中x的位置(中序遍历)
    y = x;
    while y != root[T]    //从下向上直到根节点
          do if y = right[p[y]]   //如果是右子树
                  then  r = r + size[left[p[y]]]+1; 
          y = p[y]; //向上移动
    return r;

  (3)对子树规模的维护

  在红黑树中添加size域后,能够通过OS_SELECT和OS_RANK迅速计算出所需的顺序统信息。通过修改红黑树的插入和删除操作,在此过程是通过旋转来修改size域。

2、如何扩张数据结构

对一种数据结构的扩张过程分为四个步骤:

1)选择基础数据结构

2)确定要在基础数据结构中添加哪些信息

3)验证可用基础数据结构上的基本修改操作来维护这些新添加的信息

4)设计新的操作

3、区间树

  这小结讲的是扩张红黑树以支持由区间构成的动态集合上的操作。区间可以很方便的表示各占用一段连续时间的一些事情。区间树是一种动态集合进行维护的红黑树,该集合中的每个元素x都包含在一个区间int[x]。区间树支持下列操作:

INTERVAL_INSERT(T,x):将包含区间域int的元素x插入到区间树T中

INTERVAL_DELETE(T,X):从区间树T中删除元素x

INTERVAL_SEARCH(T,i):返回一个指向区间树T中元素x的指针,使int[x]与i重叠,若集合中无此元素存在,则返回nil[T]。

算法导论 14章 数据结构的扩张(二) 区间树 区间树——红黑树的扩张           将红黑树进行扩张以支持由区间构成的动态集合,其节点主要除红黑树节点常规信息之外,还有一个区间信息,这样的一颗树称之为区间树。我们将利用14.2节总结的红黑树扩张的四个步骤来讨论如何进行扩充以得到区间树。 步骤1:基础数据结构         毫无疑问,我们将选择红黑树。该区间树的每个节点有一个区间信息,对于节点x,即为int[x],用low表示in 阅读详情

相关推荐

算法导论第十四章习题解答

能用代码表示的都用代码表示,不能表示的写出思路,思路都没写的就是我也做不出来

算法导论 练习题 14.1-5

1

苦海无涯闯进来 634

算法导论章节答案(11~15章)

11~15章

顺序统计树

顺序统计树 分类: 算法导论习题2011-06-06 23:24 878人阅读 评论(3) 收藏 举报 数据结构算法       在包含n个元素的无序集合中,寻找第i个顺序统计量的时间复杂度为O(n)。通过建立一种特定的结构,可以使得任意的顺序统计量都可以在O(lgn)的时间内找到。这就是下面会提到的基于红黑树的顺序统计树。       相比于基础的数据结构,顺

pi9nc的专栏 2680

3D坐标系转换实战:如何用Python快速实现旋转矩阵与平移向量的组合变换

本文详细介绍了如何使用Python和NumPy实现3D坐标系转换中的旋转矩阵与平移向量的组合变换。通过齐次坐标和变换矩阵的数学原理,结合代码示例,帮助开发者高效处理机器人路径规划和计算机视觉中的空间变换问题,并解决实际应用中的常见错误。

pluto的博客 959

微生物16S数据上传NCBI的SRA库

本篇内容仅包括:俺自己的实验收集了淡水、淡水沉积物、海水、海草附着微生物样品,测序所得的Fastq格式数据,在文章投稿发表时被要求数据需上传NCBI的SRA库,得到一个PRJNA2347899这样子的IDs。仅解决了这个上传过程!

Xf_Niu的博客 7435

算法导论 练习题 14.3-5

1

苦海无涯闯进来 513

【Docker】搭建一个媒体服务器插件后端API服务 - MetaTube

本教程基于群晖的NAS设备DS423+的docker功能进行搭建,DSM版为 7.2.1-69057 Update 5。MetaTube是一个媒体服务器插件,主要用于Emby和Jellyfin媒体服务器。它的主要功能是从互联网上抓取内容并响应 JSON 数据,然后通过预安装的 MetaTube 插件请求服务器并下载相应的元数据,以与 Jellyfin/Emby 服务器配合使用。使用 MetaTube 的步骤大致如下:部署后端:首先,需要部署一个名为​ 的后端 API 服务器来抓取内容。

小小笔记大大用处 1万+

算法导论 第14章 14.1 动态顺序统计

一、概念 1.动态顺序统计 动态顺序统计是指,在一个动态的无序的集合中,任意的顺序统计量都可以在O(lgn)时间内确定。 2.基础数组结构 红黑树,每个树结点的域包括:key[x],color[x],left[x],right[x] 3.附加信息 size[x]:以结点x为根的子树的内部结点(包括x)数,即子树的大小。 如果定义哨兵nil,则size[nil[T]]为0 size[

幸福在路上 4498

目标检测: yolo26在RK3588上部署

YOLO26发布:端到端目标检测新突破 摘要:Ultralytics最新发布的YOLO26算法采用原生端到端设计,无需NMS后处理,显著提升推理效率。该模型基于三大核心原则: 简洁性:消除NMS步骤,实现直接预测 部署效率:简化集成流程,降低延迟 训练创新:引入MuSGD混合优化器,加速收敛 部署教程显示,YOLO26可适配RK3588等边缘设备,通过ONNX转换和RKNN工具链实现高效部署。其创新架构特别优化了分割、姿态估计等专业任务,标志着目标检测技术的重要革新。 (字数:149)

qianxun 1448

YOLO26改进策略【Neck】| CVPR 2024 MFM(Modulation Fusion Module,调制融合模块):动态特征加权融合,突出关键特征抑制冗余

本文主要利用DCMPNet中的 MFM 模块优化 YOLO26 的目标检测网络模型。模块通过动态调制特征融合过程,实现了对多尺度、跨层级特征的智能聚合。将其应用于的改进过程中,针对目标检测中边界特征与语义信息的互补性需求,缓解网络中浅层细节与深层语义融合不足的问题。Depth Information Assisted Collaborative Mutual Promotion Network for Single Image Dehazing在图像去雾网络中,不同层级和类型的特征包含着互补的信息(如浅层的

Limiiiing的博客 223

《算法导论》第 14 章 - 数据结构的扩张

本文介绍了数据结构扩张的基本概念和方法,重点讲解了动态顺序统计树和区间树的实现与应用。动态顺序统计树通过为二叉搜索树节点增加size属性,支持快速查询第i小元素和元素排名;区间树则在BST基础上添加max属性,高效处理区间重叠查询。文章详细阐述了这两种扩张数据结构的C++实现,包括核心操作(插入、删除、查询)的算法流程和代码示例,并探讨了数据结构扩张的一般原则。这些技术为解决复杂问题提供了有效工具,如排名统计、区间调度等应用场景。

2302_80961196的博客 1370

改进的U-Net在视网膜血管分割上的应用

为了提高算法在血管边界的分割能力,在编码部分采用全局卷积网络(GCN)和边界细化(BR)替换传统的卷积层;在跳跃连接部分引入改进的位置注意模块(PA)和通道注意模块(CA),目的是增加血管与背景之间的对比度,使网络更好地将血管与背景分割开;此外,为了提高网络的性能,在编码部分的最后一层使用密集卷积网络解决网络过拟合问题,同时为了在一定程度上解决梯度爆炸、梯度消失的问题,在解码部分的每一层使用卷积长短记忆网络提升网络获取特征信息的能力。替换传统的卷积操作来解决血管边界非血管像素误分为血管的问题。

weixin_70923796的博客 783

《算法导论》第14章 数据结构的扩张 (1)动态顺序统计

《数据结构扩张》是《算法导论》第三部分的最后一章。在介绍学习了这么多种数据 结构之后,简要介绍了当这些基本数据结构不满足需求时,如何扩张它们来满足需求。 这才是学习算法的目的,能够根据需求选择合适的数据结构和算法,并在无法满足需求 时能够扩张它。这才是对算法的思想和本质的学习! 可以将本章看做深入学习的前奏吧,因为紧接着就要开始进入第四部分《高级设计和分析 技术》了。那么赶快来看

西代零零发 3340

我的GIT练习ONE

Git 是一个分布式版本控制及源代码管理工具;Git 可以为你的项目保存若干快照,以此来对整个项目进行版本管理每一次的练习,都是对自身知识的巩固,以及对自身知识的一个测试。

是个非常热爱生活、乐观、奋斗、努力的逗比青年 8869

YOLO26 旋转框检测 OBB 技术:角度预测与解码优化

YOLO26旋转框检测技术通过CSL角度编码有效解决了OBB检测中的周期性问题。该技术采用5参数表示法(cx,cy,w,h,θ),在检测头中分别处理分类、回归和角度预测。核心创新点包括:1)使用高斯或三角窗口的CSL编码对角度进行平滑表示;2)通过加权平均解码角度,避免边界不连续问题。该方法在遥感、文本检测等需要精确方向信息的场景中表现优异,相比传统HBB框可提升定位精度30%以上,同时保持了YOLO系列的高效特性。

一键难忘的博客 524

算法导论-第14章-数据结构的扩张

OS树,又称顺序统计树(Order-Statistic tree),是一棵红黑树在每个结点上扩充一个sizesizesize属性而得到的,如下图所示。在红黑树的结点xxx中,除了xkeyxcolorxleftxrightxpxkeyxcolorxleftxrightxp之外,还包括xsizex.sizexsize属性,这个属性包含了以xxx为根的子树(包括xxx。

优快云博客 301

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

《算法导论》第14章 数据结构的扩张 (2)

在上一节中,我们为树结点添加size域表示每颗子树的大小,即包含的结点个数,扩张了 二叉查找树为其增加顺序统计量的查找功能。更为自然的想法是直接添加顺序统计量rank域 到每个树结点上。这一节我们就来看下在这样的设计下,如何扩张来完成上一节相同的功能。 当我们插入一个结点到二叉树中,假设它的顺序统计量为5,那么之前二叉树中顺序统计量 大于5的结点都要更新。也就是说插入一个新结点到对

西代零零发 2859

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

《算法导论》第14章 数据结构的扩张 个人笔记

第14章 数据结构的扩张 14.1 动态顺序统计 14.2 如何扩张数据结构 14.3 区间树

Amber07的笔记本 631

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

《算法导论》笔记 第14章 14.2 如何扩张数据结构

【笔记】 四个步骤: 1) 选择基础数据  2) 3) 4) 【练习】

Azarath Metrion Zinthos 2027

算法导论代码 第14章 数据结构的扩张

第14章 数据结构的扩张 14.1 动态顺序统计 #include #include #include typedef struct red_black_tree_type *tree; enum color_enum { color_red, color_black }; struct tree_node { void *key; enum color_enum color;

MoXiaopeng的专栏 760

算法导论 第14章 数据结构的扩张(四) 14-1 最大重叠点

题目         同习题14.3-6我们依然运用数据结构扩张的四个步骤来解决这个问题。 步骤1:选取基础数据结构     我们选择红黑树作为基础数据结构来扩张,红黑树是这章的主题,扩张之后所得的树称之为最大重叠点(POM)树。由于要求得区间的最大重叠点,因而当然的,我们的节点必然包含一个域存储以该节点为根的子树的最大POM,即为pom域。 步骤2:附加信息

V然成风 1283
上一篇: 算法导论 16章 贪心算法
下一篇: new 、operator new 和 placement new 区别
cqcpp
博客等级 码龄12年 3粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值