17.01.2013 Views

Algorithms and Data Structures for External Memory

Algorithms and Data Structures for External Memory

Algorithms and Data Structures for External Memory

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

110 Spatial <strong>Data</strong> <strong>Structures</strong> <strong>and</strong> Range Search<br />

The above bootstrapping approach also yields dynamic EM segment<br />

trees with optimal query <strong>and</strong> update bound <strong>and</strong> O(nlog B N)-block<br />

space usage.<br />

Stabbing queries are important because, when combined with onedimensional<br />

range queries, they provide a solution to dynamic interval<br />

management, in which one-dimensional intervals can be inserted<br />

<strong>and</strong> deleted, <strong>and</strong> intersection queries can be per<strong>for</strong>med. These operations<br />

support indexing of one-dimensional constraints in constraint<br />

databases. Other applications of stabbing queries arise in graphics <strong>and</strong><br />

GIS. For example, Chiang <strong>and</strong> Silva [106] apply the EM interval tree<br />

structure to extract at query time the boundary components of the isosurface<br />

(or contour) of a surface. A data structure <strong>for</strong> a related problem,<br />

which in addition has optimal output complexity, appears in [10].<br />

Range-max <strong>and</strong> stabbing-max queries are studied in [13, 15].<br />

12.4 Bootstrapping <strong>for</strong> Three-Sided Orthogonal<br />

2-D Range Search<br />

Arge et al. [50] provide another example of the bootstrapping paradigm<br />

by developing an optimal dynamic EM data structure <strong>for</strong> three-sided<br />

orthogonal 2-D range searching (see Figure 12.1(c)) that meets all<br />

three design criteria. In internal memory, the optimal structure is the<br />

priority search tree [251], which answers three-sided range queries in<br />

O(logN + Z) CPU time, does updates in O(logN) CPU time, <strong>and</strong><br />

uses O(N) space. The EM structure of Arge et al. [50] is an externalization<br />

of the priority search tree, using a weight-balanced B-tree as<br />

the underlying base tree. Each node in the base tree corresponds to a<br />

one-dimensional range of x-values, <strong>and</strong> its Θ(B) children correspond<br />

to subranges consisting of vertical slabs. Each node v contains a small<br />

substructure called a child cache that supports three-sided queries. Its<br />

child cache stores the “Y-set” Y (w) <strong>for</strong> each of the Θ(B) children w<br />

of v. The Y-set Y (w) <strong>for</strong> child w consists of the highest Θ(B) points in<br />

w’s slab that are not already stored in the child cache of some ancestor<br />

of v. There are thus a total of Θ(B 2 ) points stored in v’s child cache.<br />

We can answer a three-sided query of the <strong>for</strong>m [x1,x2] × [y1,+∞)by<br />

visiting a set of nodes in the base tree, starting with the root. For each

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!