18.04.2013 Views

The.Algorithm.Design.Manual.Springer-Verlag.1998

The.Algorithm.Design.Manual.Springer-Verlag.1998

The.Algorithm.Design.Manual.Springer-Verlag.1998

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Range Search<br />

subdivisions in C++. In particular, it supports orthogonal range queries in time, where n is the<br />

complexity of the subdivision and k is the number of points in the rectangular region.<br />

Ranger is a tool for visualizing and experimenting with nearest-neighbor and orthogonal-range queries in<br />

high-dimensional data sets, using multidimensional search trees. Four different search data structures are<br />

supported by Ranger: naive kd-trees, median kd-trees, nonorthogonal kd-trees, and the vantage point<br />

tree. For each of these, Ranger supports queries in up to 25 dimensions under any Minkowski metric. It<br />

is available in the algorithm repository.<br />

A bare bones implementation in C of orthogonal range search using kd-trees appears in [GBY91].<br />

Sedgewick [Sed92] provides code fragments of the grid method for orthogonal range search in C++. See<br />

Section for details on both of them.<br />

Notes: Good expositions on data structures with worst-case performance for orthogonal-range<br />

searching [Wil85] include [PS85]. An exposition on kd-trees for orthogonal range queries in two<br />

dimensions appears in [PS85]. <strong>The</strong>ir worst-case performance can be very bad; [LW77] describes an<br />

instance in two dimensions requiring time to report that a rectangle is empty.<br />

<strong>The</strong> problem becomes considerably more difficult for nonorthogonal range queries, where the query<br />

region is not an axis-aligned rectangle. For half-plane intersection queries, time and linear space<br />

suffice [CGL85]; for range searching with simplex query regions (such as a triangle in the plane), lower<br />

bounds preclude efficient worst-case data structures. See [Yao90] for a discussion.<br />

Related Problems: Kd-trees (see page ), point location (see page ),<br />

Next: Point Location Up: Computational Geometry Previous: Nearest Neighbor Search<br />

<strong>Algorithm</strong>s<br />

Mon Jun 2 23:33:50 EDT 1997<br />

file:///E|/BOOK/BOOK4/NODE189.HTM (3 of 3) [19/1/2003 1:31:45]

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

Saved successfully!

Ooh no, something went wrong!