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

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

18.04.2013 Views

Kd-Trees An exposition on kd-trees for orthogonal range queries in two dimensions appears in [PS85]. Expositions of grid files and other spatial data structures include [NH93]. Algorithms that quickly produce a point provably close to the query point are a recent development in higher-dimensional nearest neighbor search. A sparse weighted-graph structure is built from the data set, and the nearest neighbor is found by starting at a random point and walking greedily in the graph towards the query point. The closest point found during several random trials is declared the winner. Similar data structures hold promise for other problems in high-dimensional spaces. See [AM93, AMN 94]. Related Problems: Nearest-neighbor search (see page ), point location (see page ), range search (see page ). Next: Numerical Problems Up: Data Structures Previous: Set Data Structures Algorithms Mon Jun 2 23:33:50 EDT 1997 file:///E|/BOOK/BOOK3/NODE134.HTM (4 of 4) [19/1/2003 1:30:12]

Numerical Problems Next: Solving Linear Equations Up: A Catalog of Algorithmic Previous: Kd-Trees Numerical Problems If most problems you encounter are numerical in nature, there is a good chance that you are reading the wrong book. Numerical Recipes [PFTV86] gives a terrific overview to the fundamental problems in numerical computing, including linear algebra, numerical integration, statistics, and differential equations. Different flavors of the book include source code for all the algorithms in C, Pascal, and Fortran. Their coverage is skimpier on the combinatorial/numerical problems we consider in this section, but you should be aware of that book. Numerical algorithms tend to be different beasts than combinatorial algorithms, for at least two distinct reasons: ● Issues of Precision and Error - Numerical algorithms typically perform repeated floating-point computations, which accumulate error at each operation until, eventually, the results are meaningless. An amusing example [SK93] concerns the Vancouver Stock Exchange, which over a twenty-two month period accumulated sufficient round-off error to reduce its index from the correct value of 1098.982 to 574.081. A simple and dependable way to test for round-off errors in numerical programs is to run them both at single and double precision, and then think hard whenever there is a disagreement. ● Extensive Libraries of Codes - Large, high-quality libraries of numerical routines have existed since the 1960s, which is still not the case for combinatorial algorithms. This is true for several reasons, including (1) the early emergence of Fortran as a standard for numerical computation, (2) the nature of numerical computations to remain independent rather than be embedded within large applications, and (3) the existence of large scientific communities needing general numerical libraries. Regardless of why, you should exploit this software base. There is probably no reason to implement algorithms for any of the problems in this section instead of stealing existing codes. Searching Netlib (see Section ) is always a good place to start. Most scientist's and engineer's ideas about algorithms derive from Fortran programming and numerical methods, while computer scientists grew up programming with pointers and recursion, and so are comfortable with the more sophisticated data structures required for combinatorial algorithms. Both sides can and should learn from each other, since several problems such as pattern recognition can be modeled file:///E|/BOOK/BOOK3/NODE135.HTM (1 of 3) [19/1/2003 1:30:13]

Kd-Trees<br />

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

Expositions of grid files and other spatial data structures include [NH93].<br />

<strong>Algorithm</strong>s that quickly produce a point provably close to the query point are a recent development in<br />

higher-dimensional nearest neighbor search. A sparse weighted-graph structure is built from the data<br />

set, and the nearest neighbor is found by starting at a random point and walking greedily in the graph<br />

towards the query point. <strong>The</strong> closest point found during several random trials is declared the winner.<br />

Similar data structures hold promise for other problems in high-dimensional spaces. See [AM93, AMN<br />

94].<br />

Related Problems: Nearest-neighbor search (see page ), point location (see page ), range search<br />

(see page ).<br />

Next: Numerical Problems Up: Data Structures Previous: Set Data Structures<br />

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

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

file:///E|/BOOK/BOOK3/NODE134.HTM (4 of 4) [19/1/2003 1:30:12]

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

Saved successfully!

Ooh no, something went wrong!