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.

Nearest Neighbor Search<br />

Implementations: Ranger is a tool for visualizing and experimenting with nearest-neighbor and<br />

orthogonal-range queries in high-dimensional data sets, using multidimensional search trees. Four<br />

different search data structures are supported by Ranger: naive kd-trees, median kd-trees, nonorthogonal<br />

kd-trees, and the vantage point tree.<br />

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

includes generators for a variety of point distributions in arbitrary dimensions. Finally, Ranger provides a<br />

number of features to aid in visualizing multidimensional data, best illustrated by the accompanying<br />

video [MS93]. To identify the most appropriate projection at a glance, Ranger provides a matrix of<br />

all two-dimensional projections of the data set. Ranger is written in C, using Motif. It runs on Silicon<br />

Graphics and HP workstations and is available in the algorithm repository http://www.cs.sunysb.edu/<br />

algorith.<br />

See Section for a complete collection of Voronoi diagram implementations. In particular, LEDA (see<br />

Section ) provides an implementation of 2D Voronoi diagrams in C++, as well as planar point<br />

location to make effective use of them for nearest-neighbor search.<br />

A Pascal implementation of the divide-and-conquer algorithm for finding the closest pair of points in a<br />

set of n points appears in [MS91]. See Section .<br />

Notes: <strong>The</strong> best reference on kd-trees and other spatial data structures is two volumes by Samet<br />

[Sam90b, Sam90a], where all major variants are developed in substantial detail. Good expositions on<br />

finding the closest pair of points in the plane [BS76] include [CLR90, Man89]. <strong>The</strong>se algorithms use a<br />

divide-and-conquer approach instead of just selecting from the Delaunay triangulation.<br />

A recent development in higher-dimensional nearest-neighbor search is algorithms that quickly produce a<br />

point that if not the nearest neighbor lies provably close to the query point. A sparse weighted graph<br />

structure is built from the data set, and the nearest neighbor is found by starting at a random point and<br />

greedily walking in the graph towards the query point. <strong>The</strong> closest point found over several random trials<br />

is declared the winner. Similar data structures hold promise for other problems in high-dimensional<br />

spaces. See [AM93, AMN 94].<br />

Related Problems: Kd-trees (see page ), Voronoi diagrams (see page ), range search (see page<br />

).<br />

file:///E|/BOOK/BOOK4/NODE188.HTM (3 of 4) [19/1/2003 1:31:43]

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

Saved successfully!

Ooh no, something went wrong!