- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
算法2013s扩展数据结构
* * * * * * * * * * * * * * * * * * * * * 算法设计与分析-扩展数据结构 算法设计与分析-扩展数据结构 算法设计与分析 * 讲授内容:扩展数据结构教 师:胡学钢、吴共庆 纲要 动态顺序统计方法 区间树 * 算法设计与分析-扩展数据结构 * OS-SELECT (i,S) :返回动态集合S中第个i最小元素 。 OS-RANK (x,S) :返回 x ∈S 在 S’的元素中的排序的位置 IDEA: 使用红黑树存储集合 S, 同时在节点中保存子树的大小。 节点示意: Key size 动态顺序统计 * 算法设计与分析-扩展数据结构 * 一个 OS-树的例子 * 算法设计与分析-扩展数据结构 * 实现技巧: 使用 监视哨 (哑记录) 为 NIL ,令 size[NIL] = 0. OS-SELECT (x, i) ? ith smallest element in the subtree rooted at x k←size[left[x]] + 1 ? k = rank(x) if i= k then return x if i k then return OS-SELECT (left[x], i) else return OS-SELECT (right[x], i –k) (OS-RANK请参考教材。) 选择 * 算法设计与分析-扩展数据结构 * OS-SELECT (root, 5) 对红黑树而言 运行时间 = O(h) = O(lg n). 例子 * 算法设计与分析-扩展数据结构 * Q. 为什么不在节点中直接保存它的级别,而是保存子树的大小? 当红黑树被修改后很难维护。 修改操作: INSERT和 DELETE. 策略: 当插入和删除的时候更新子树的大小。 数据结构维护 * 算法设计与分析-扩展数据结构 * INSERT (“K”) 插入的例子 * 算法设计与分析-扩展数据结构 * 不要忘记RB-INSERT和 RB-DELETE 操作为了维持平衡可能需要修改红黑树。 ?重着色: 对子树大小没有影响. ?旋转: 可以在 O(1) 的时间内修正子树的大小. 例子: ∴RB-INSERT 和 RB-DELETE 的运行时间仍然是 O(lg n) 。 处理重新平衡 * 算法设计与分析-扩展数据结构 * 方法: (e.g.,顺序统计树) 1. 选择底层数据结构 (红黑树)。 2. 确定在数据结构中存储的附加信息。 (子树大小)。 3. 验证这个信息在修改操作中会被正确的维护 (RB- INSERT, RB-DELETE—不要忘记旋转). 4. 利用这些信息设计新的动态集合操作 (OS-SELECT和 OS-RANK)。 这些步骤仅仅是指导,不是严格的公式。 数据结构扩展 * 算法设计与分析-扩展数据结构 * 目标: 维护一个区间的动态集合, 例如时间区间. 查询: 对于一个给定的查询区间 i, 在集合中找到一个区间与 i重叠。 区间树 * 算法设计与分析-扩展数据结构 * 1.选择底层数据结构。 ? 使用红黑树,并且以低(左)端点为键。 2. 决定在数据结构中存储的附加信息。 ? 在每个节点 x 中存储以 x为根的子树的最大值 m[x]和与键对应的区间int[x] 。 int m 按照方法 * 算法设计与分析-扩展数据结构 * 区间树举例 * 算法设计与分析-扩展数据结构 * 3. 验证这个信息可以在修改操作中得到维护。 ? 插入: Fix m’s on the way down. ? 旋转 —Fixup =每个旋转需要 O(1) 的时间: INSERT 需要的时间和 = O(lg n) ; DELETE 类似。 修改操作 * 算法设计与分析-扩展数据结构 * 4. 使用附加信息设计新的动态集合操作。. INTERVAL-SEARCH (i) x←root while x≠NIL and (low[i] high[int[x]] or low[int[x]] high[i]) do ? i and int[x] don’t overlap if left[x] ≠NIL and low [i] ≤m[left[x]] then x←le
您可能关注的文档
最近下载
- 胎圈钢丝市场洞察报告.pptx VIP
- Starter Unit 2 Keep Tidy Section A 1a-2e 课件 人教版2024七年级英语上册.pptx
- (9号)青岛天信电气500KW变频器培训资料(四象限).ppt
- 传统风貌区打测绘说明书.pdf
- 2025年传染病防治法培训试题及答案.docx VIP
- 金蝶云星空操作手册V3.5.docx VIP
- 《质量管理》试题题库汇总及参考答案 .pdf VIP
- 2024年八个方面检视剖析材料.docx VIP
- 2023燃气-蒸汽联合循环发电工程建设预算项目划分导则.docx VIP
- 基于文旅融合视角的研学旅游产品创新发展研究——以大连市为例.docx VIP
文档评论(0)