当前课程知识点:计算几何 > 08. Windowing Query > G. 1D-GRQ Using Heap > 08-G-03. Example
我们接下来就来通过这样的
一个具体的例子
加深你对刚才那个算法的原理
和它的执行过程的理解
先验证一下
这是一个不折不扣的minimum heap
其中最小的那个元素
不出意外确实就出现在堆顶
对照我们刚才说的那个
order property来验证一下
在处处这个堆序性
都是满足的
举几个例子
比如说3
它的右孩子是5
确实不比它小
它的左孩子
压根就没有
所以也谈不上小和大
对于没有的东西来说
什么都是成立的
所以order property
在这个位置
是成立的
好再来看5
它的左右孩子都俱全
一个是7 一个是12
无论是谁都不比5要小
也是成立的
好在课后
你可以对照讲义
把这个例子中所有的节点
都逐一的去检查一遍
现在我们假设
这确实像我们所预料得那样
是一个最小堆
那么我们假设
查询的范围是什么呢
是以8来界定的
或者准确地来讲
是这样的一个unbounded range
它的开口是负无穷
而它的下面这一个
截至的这个grounded的
这个部分是8
我们要查询
所有那些落在这个区域里的那些点
而对于之外的那些点
我们都需要将它们忽略掉
好现在我们看一看那个算法
回顾一下那个算法
对照这个来执行
首先第一个参数用的v
就是这个1
也就是这个root
我们会发现它既是存在的
而且会比8要小
还没有达到超出8的部分
所以它不会被剪枝
恰恰相反它会被报告出来
然后算法会相应地接下来
对它的左孩子4和右孩子2
分别去作查找
好 我们不妨把目光跟踪到
对于4的这次查找
这个时候的那个v
也就是刚才那个root
在悄然之间被替换成了4
对于4而言依然是没有超过8
所以它也会被打印出来
算法如果从深度优先来执行的话
会紧接着会转向6
对于6来说
依然会被报告出来
然后算法
又会去指向它的左孩子10和8
我们先来看8
8这个位置
还好至少还没有超过8
还是小于等于8的
所以它也会被报告出来
接下来试图
去对它的左和右孩子
进行调用
事实上按照我们刚才那个算法
左孩子和右孩子
确实会被调用一次
但是因为正如我们这里看到的
它的左孩子和右孩子都是空
所以对于一个调用的
那个root是空的情况
应该记得
就会命中我们汽车的那个安全带
它会被判作为递归基
而直接地return回来
什么都没做
所以你也可以认为
我们的递归
在8这个位置的
左和右这个地方中止了
好 现在我们再返回到
刚才的父亲6
来看一下8这个节点的这个兄弟
也就是这个10
在这个位置上
我们会发现它确实是一个实在的
非空的一个节点
但是我们首次碰到了这么一种情况
也就是它的关键码10
会比我们查询的目标8
严格的大
这说明什么呢
说明它已经溢出到了
我们的查询范围之外
所以在这个位置上
我们不能把它报告出来
我们的算法是怎么写的你应该记得
在这个地方我们会直接的return
假装什么都不知道
什么都没有干
其实不仅是这个节点
在这个地方被忽略掉
其实在悄然之间
它的后代
比如在这里来讲
至少有一左一右
实际上当然还可能有更多的后代
无论多少都会统统的
因为这个节点处被忽略了
而都被相应地忽略掉
这背后的原因
你能看得出来吗
没错因为堆的
order property
我们刚才刚讲过
作为一个最小堆来说
任何的后代
都不会比祖先更小
而它的祖先
已经比我们的目标要大了
所以它的所有的后代
无论多少一个不漏地
都会比那个目标要更大
换而言之
它们都是应该被忽略掉的
你这里已经看得出来
我们的巧妙的地方了
通过这样的一次剪枝
O(1)的一个剪枝的一个操作
我们已经将很多的点
轻松地剔除掉了
当然对于这边这个分支
有同样类似的故事会发生
限于时间的关系
我就不再逐一地介绍了
你可以对照这个图
对照这个图中
所标定的不同颜色的节点
来验证这一条
我们来介绍一下
这个颜色就够了
在这里所有的蓝色的节点
都是被报告出来的
而所有红色的节点像这个10
包括这个12
乃至这个9
都是发生剪枝的地方
而相对于这种
红色的节点来说的所有的后代
也就是这些绿色的节点
都是因为它们的祖先被剪枝了
而整体地被忽略了
在这些绿色的点上
也可以说我们没有消耗
任何的时间
这是我们节省下来的计算成本
-Before we start
--html
-Evaluation
--html
-Online Judge
--html
-Lecture notes
--html
-Discussion
--html
-A. History of This Course
--00-A. History of This Course
-B. What's Computational Geometry
--00-B. What's Computational Geometry
-B. What's Computational Geometry--作业
-C. How to Learn CG Better
--00-C. How to Learn CG Better
-C. How to Learn CG Better--作业
-D. Why English
-A. Convexity
-A. Convexity--作业
-B. Extreme Points
-B. Extreme Points--作业
-C. Extreme Edges
-C. Extreme Edges--作业
-D. Incremental Construction
--01-D-01. Decrease and Conquer
--01-D-02. In-Convex-Polygon Test
--01-D-03. Why Not Binary Search
-D. Incremental Construction--作业
-E. Jarvis March
--01-E-06. Lowest-Then-Leftmost
-E. Jarvis March--作业
-F. Lower Bound
--01-F-02. CAO Chong's Methodology
-F. Lower Bound--作业
-G. Graham Scan: Algorithm
-G. Graham Scan: Algorithm--作业
-H. Graham Scan: Example
-H. Graham Scan: Example--作业
-I. Graham Scan: Correctness
-I. Graham Scan: Correctness--作业
-J. Graham Scan: Analysis
-J. Graham Scan: Analysis--作业
-K. Divide-And-Conquer (1)
-K. Divide-And-Conquer (1)--作业
-L. Divide-And-Conquer (2)
--01-L-03. Topmost + Bottommost ?
--01-L-07. More Considerations
-L. Divide-And-Conquer (2)--作业
-M. Wrap-Up
-0. Introduction
-0. Introduction--作业
-A. Preliminary
-A. Preliminary--作业
-B. Interval Intersection Detection
-B. Interval Intersection Detection--作业
-C. Segment Intersection Reporting
-C. Segment Intersection Reporting--作业
-D. BO Algorithm: Strategy
--02-D-01. Proximity & Separability
--02-D-02. Comparability & Ordering
-D. BO Algorithm: Strategy--作业
-E. BO Algorithm: Implementation
--02-E-03. Events & Operations
-E. BO Algorithm: Implementation--作业
-F. BO Algorithm: Analysis
--02-F-04. Complexity of Event Queue
--02-F-05. Complexity of Status Structure
-F. BO Algorithm: Analysis--作业
-G. Convex Polygon Intersection Detection
--02-G-01. Problem Specification
--02-G-02. Monotone Partitioning
--02-G-04. Decrease-And-Conquer
-G. Convex Polygon Intersection Detection--作业
-H. Edge Chasing
--02-H-01. Eliminating Sickles
-H. Edge Chasing--作业
-I. Plane Sweeping
-I. Plane Sweeping--作业
-J. Halfplane Intersection Construction
-J. Halfplane Intersection Construction--作业
-0. Methodology
-0. Methodology--作业
-A. Art Gallery Problem
--03-A-02. Lower & Upper Bounds
--03-A-04. Approximation & Classification
-A. Art Gallery Problem--作业
-B. Art Gallery Theorem
--03-B-01. Necessity of floor(n/3)
--03-B-02. Sufficiency by Fan Decomposition
-B. Art Gallery Theorem--作业
-C. Fisk's Proof
--03-C-04. Pigeon-Hole Principle
-C. Fisk's Proof--作业
-D. Orthogonal Polygons
--03-D-01. Necessity of floor(n/4)
--03-D-02. Sufficiency by Convex Quadrilateralization
-D. Orthogonal Polygons--作业
-E. Triangulation
-E. Triangulation--作业
-F. Triangulating Monotone Polygons
--03-F-02. Monotonicity Testing
--03-F-04. Stack-Chain Consistency
-F. Triangulating Monotone Polygons--作业
-G. Monotone Decomposition
-G. Monotone Decomposition--作业
-I. Tetrahedralization
--03-I-01. Polyhedron Decomposition
--03-I-02. Schonhardt's Polyhedron
-I. Tetrahedralization--作业
-A. Introduction
--04-A-02. Dining Halls on Campus
--04-A-03. More Analogies & Applications
-A. Introduction--作业
-B. Terminologies
--04-B-02. Intersecting Halfspaces
--04-B-04. Planar Voronoi Diagram
-B. Terminologies--作业
-C. Properties
--04-C-03. Nearest = Concyclic
--04-C-04. Number of Nearest Sites = Degree
-C. Properties--作业
-D. Complexity
-D. Complexity--作业
-E. Representation
-E. Representation--作业
-F. DCEL
-F. DCEL--作业
-G. Hardness
--04-G-03. Voronoi Diagram In General Position
-G. Hardness--作业
-H. Sorted Sets
--04-H-01. Convex Hull Made Easier
--04-H-02. Convex Hull As A Combinatorial Structure
--04-H-03. Voronoi Diagram As A Geometric Structure
-H. Sorted Sets--作业
-I. VD_sorted
--04-I-06. Sorting Not Made Easier
-I. VD_sorted--作业
-J. Naive Construction
-J. Naive Construction--作业
-K. Incremental Construction
-K. Incremental Construction--作业
-L. Divide-And-Conquer
--04-L-09. Intersecting with Cells
-L. Divide-And-Conquer--作业
-M. Plane-Sweep
--04-M-09. Circle Event: What, When & Where
-M. Plane-Sweep--作业
-A. Point Set Triangulation
-A. Point Set Triangulation--作业
-B. Delaunay Triangulation
-B. Delaunay Triangulation--作业
-C. Properties
-C. Properties--作业
-D. Proximity Graph
--05-D-02. Relative Neighborhood Graph
-D. Proximity Graph--作业
-E. Euclidean Minimum Spanning Tree
-E. Euclidean Minimum Spanning Tree--作业
-F. Euclidean Traveling Salesman Problem
-G. Minimum Weighted Triangulation
-G. Minimum Weighted Triangulation--作业
-H. Construction
--05-H-03. Maximizing The Minimum Angle
--05-H-04. Evolution By Edge Flipping
-H. Construction--作业
-I. RIC With Example
-I. RIC With Example--作业
-J. Randomized Incremental Construction
--05-J-01. Recursive Implementation
--05-J-02. Iterative Implementation
-J. Randomized Incremental Construction--作业
-K. RIC Analysis
--05-K-04. Types Of Edge Change
--05-K-05. Number Of Edge Changes
--05-K-07. Number Of Rebucketings
--05-K-08. Probability For Rebucketing
--05-K-10. Further Consideration
-0. Online/Offline Algorithms
--06-0. Online/Offline Algorithms
-0. Online/Offline Algorithms--作业
-A. Introduction
--06-A-03. Assumptions For Clarity
--06-A-05. Performance Measurements
-A. Introduction--作业
-B. Slab Method
--06-B-02. Ordering Trapezoids
-B. Slab Method--作业
-C. Persistence
--06-C-01. Ephemeral Structure
--06-C-02. Persistent Structure
-C. Persistence--作业
-D. Path Copying
--06-D-03. Storage Optimization
-D. Path Copying--作业
-E. Node Copying
-E. Node Copying--作业
-F. Limited Node Copying
-G. Kirkpatrick Structure
--06-G-01. Optimal And Simpler
--06-G-06. The More The Better
--06-G-07. The Fewer The Better
--06-G-09. Existence Of Independent Subset
--06-G-10. Construction Of Independent Subset
-G. Kirkpatrick Structure--作业
-H. Trapezoidal Map
--06-H-03. Properties & Complexity
--06-H-04. Search Structure: Example
--06-H-05. Search Structure: Nodes
--06-H-06. Search Structure: Performance
-H. Trapezoidal Map--作业
-I. Constructing Trapezoidal Map
--06-I-04. Case 1: Two Endpoints
--06-I-05. Case 2: One Endpoint
--06-I-06. Case 3: No Endpoints
-J. Performance Of Trapezoidal Map
--06-J-03. Number Of Ray Trimmed
--06-J-04. Number Of Trapezoidals Created (1)
--06-J-05. Number Of Trapezoidals Created (2)
--06-J-06. Time For Point Location
--06-J-07. Size Of Search Structure
--06-J-08. Fixed Query Point + Randomly Created Maps
--06-J-10. Probability Of Enclosing Trapezoid Changed
-A. Range Query
--07-A-01. 1-Dimensional Range Query
-A. Range Query--作业
-B. BBST
--07-B-02. Lowest Common Ancestor
-B. BBST--作业
-C. kd-Tree: Structure
-C. kd-Tree: Structure--作业
-D. kd-Tree: Algorithm
-D. kd-Tree: Algorithm--作业
-E. kd-Tree: Performance
--07-E-01. Preprocessing Time + Storage
-E. kd-Tree: Performance--作业
-F. Range Tree: Structure
--07-F-03. x-Query * y-Queries
-F. Range Tree: Structure--作业
-G. Range Tree: Query
-G. Range Tree: Query--作业
-H. Range Tree: Performance
-H. Range Tree: Performance--作业
-I. Range Tree: Optimization
--07-I-04. Fractional Cascading
-A. Orthogonal Windowing Query
-A. Orthogonal Windowing Query--作业
-B. Stabbing Query
-C. Interval Tree: Construction
-C. Interval Tree: Construction--作业
-D. Interval Tree: Query
-D. Interval Tree: Query--作业
-E. Stabbing With A Segment
--08-E-03. Query Algorithm (1)
--08-E-04. Query Algorithm (2)
-F. Grounded Range Query
--08-F-03. 1D-GRQ Using Range Tree
--08-F-04. 1D-GRQ By Linear Scan
-G. 1D-GRQ Using Heap
-G. 1D-GRQ Using Heap--作业
-H. Priority Search Tree
--08-H-03. Sibling Partitioning
-H. Priority Search Tree--作业
-I. 2D-GRQ Using PST
-I. 2D-GRQ Using PST--作业
-J. Segment Tree
--08-J-01. General Windowing Query
--08-J-02. Elementary Interval
--08-J-06. Solving Stabbing Query
--08-J-11. Constructing A Segment Tree
--08-J-12. Inserting A Segment (1)
--08-J-13. Inserting A Segment (2)
--08-J-14. Inserting A Segment (3)
-K. Vertical Segment Stabbing Query