《算法导论》笔记 第14章 14.3 区间树
来源:互联网 发布:prezi类似软件 编辑:程序博客网 时间:2024/06/05 22:46
【笔记】
待码!!!!!
把一个区间[t1,t2]表示为一个对象i,其各个域为low[i]=t1(低端点),high[i]=t2(高端点)。
我们说区间i和i'重叠,如果i∩i'≠ Ø。亦即如果low[i]<=high[i'],且low[i']<=high[i]。
任意两个区间i和i'满足区间三分法,也就是下列三种性质之一:
a) i 和 i' 重叠
b) i 在 i' 左边
c) i 在 i' 右边
区间树是一种对动态集合进行维护的红黑树,该集合中的每个元素x都包含一个区间int[x]。区间树支持下列操作:
INTERVAL-INSERT(T,x):将包含区间域int的元素x插入到区间树T中。
INTERVAL-DELETE(T,x):从区间树中删除元素x。
INTERVAL-SEARCH(T,i):返回一个指向区间树T中元素x的指针,使int[x]与i重叠;若集合中无此元素存在,则返回nil。
基础数据结构:红黑树,每个结点x包含一个区间域int[x],x的关键字为区间的低端点low[int[x]]。
附加信息:max[x],即以x为根的 子树中所有区间的端点的最大值。
对信息的维护:max[x] = max{ high[int[x]], max[left[x]], max[right[x]] }
设计新的操作:SEARCH,若left[x]!=nil且max[left[x]]>=low[i]则向右子树查询。
【练习】
14.3-1 写出作用于区间树的结点、并于O(1)时间内更新max域的LEFT-ROTATE的伪代码。
先维护旋转后的子树,在维护新的根。
14.3-2 重写INTERVAL-SEARCH代码,使得当所有的区间都是开区间时,它也能正确的工作。
其实把所有开区间都-1+1不就好了。
14.3-3 请给出一个有效的算法,使对给定的区间i,它返回一个与i重叠的、具有最小低端点的区间;或者,不存在返回nil。
SEARCH。
14.3-4 给定一个区间树T和一个区间i,请描述如何能在O(min(n,klgn))时间内,列出T中所有与i重叠的区间,此处k为输出区间数。
一个尽可能向右找的SEARCH。
14.3-5 支持操作INTERVAL-SEARCH-EXACTLY(T,i),它返回一个指向区间树T中结点x的指针,使low[int[x]]=low[i],high[int[x]]=high[i],不包含则返回nil。所有操作对于n结点树运行时间为O(lgn)。
暂缺
14.3-6 请说明如何来维护一个支持操作MIN-GAP的动态数集Q,使该操作能给出Q中最近的两个数之间的差幅。使操作INSERT,DELETE,SEARCH和MIN-GAP尽可能的高效,并分析它们的运行时间。
略
- 《算法导论》笔记 第14章 14.3 区间树
- 算法导论 第14章 14.3 区间树
- 算法导论 第14章 14.3 区间树
- 算法导论14.3 -区间树
- 算法导论 区间树
- 算法导论14.3区间树 练习总结
- 算法导论 14章 数据结构的扩张(二) 区间树
- 算法导论 第十四章:区间树
- 《算法导论》笔记 第14章 14.1 动态顺序统计
- 《算法导论》笔记 第14章 14.2 如何扩张数据结构
- 《算法导论》笔记 第14章 总结与思考
- 《算法导论》第14章 数据结构的扩张 个人笔记
- 《算法导论》笔记 第12章 12.1 二叉查找树
- 《算法导论》第12章 二叉搜索树 个人笔记
- 《算法导论》第18章 B树 个人笔记
- 《算法导论》第23章 最小生成树 个人笔记
- 《算法导论》笔记:第1章
- 《算法导论》笔记:第2章
- 第一篇博客
- 今天开始研究linux串口驱动
- 删除临时表报ora 14452
- 主要的推荐算法简介
- IE不兼容问题
- 《算法导论》笔记 第14章 14.3 区间树
- win8快捷键
- android应用程序如何调用支付宝接口
- 【Python 第3课】IDE
- 移动医疗数据含金量
- tomcat下的日志配置详细说明
- web视频会议又称网页版视频会议
- Minimum Depth of Binary Tree
- C10_C语言-extern和static