|
|
Excavating the past, for a better future. | |
|
WHITEBOARDS links into revise activity how to use SITENAV meetings what's new? whiteboards post article frontpage downloads ORIENTATION legalisms history glossary participants BACK-ENDS udanax-green udanax-gold ALGORITHMS coordspaces enfilade ent OLD MANUALS XIA HELPING puzzles needs funding site-traffic admin
|
(The k-d tree is definitely different from the KTree, which is pretty much a linear address-space enfilade.) The k-d tree is a data structure for multidimensional sparse data. The basic idea is that at each node in the tree, you split along one dimension. Specifically, if you have "k" dimensions (k-d), then on level n you split based on dimension number n mod k. (I seem to remember Ents--at least over multi-D spaces--using some combo of k-D and splay trees. With splay trees being as fast and loose with levels as they are, I'd think you'd need a looser policy about what dimension to split along, but further speculations deleted.) : --SteveWitham? References for k-d trees Steve Omohundro has done work with k-d trees and similar structures, so I (sw) asked him for references to papers on the k-d tree. He replied: Hi Steve, The original paper introducing them was: Jerome H. Friedman, Jon Louis Bently, and Raphael Ari Finkel, "An Algorithm for Finding Best Matches in Logarithmic Expected Time," ACM Transactions on Mathematical Software, 3:3 (1977) 209-226. I don't know if that is online somewhere. ACM has a library of their papers online but I don't know if it goes back that far. I wrote a long article on how to use the ideas behind kd trees to do various tasks that people were using neural networks for in: Stephen M. Omohundro, "Efficient Algorithms with Neural Network Behavior", Complex Systems 1:2 (1987) 273-347. Unfortunately, I don't think that one's online either. I did several shorter tech reports at the International Computer Science Institute which are online and which are related: http://www.icsi.berkeley.edu//techreports/1989.abstracts/tr-89-041.html is a short survey of some techniques. (That paper also describes the Delaunay triangulation. -sw) http://www.icsi.berkeley.edu//techreports/1989.abstracts/tr-89-063.html describes "balltrees" a related data structure which has some advantages in some situtations. That tech report has code in Eiffel but should be pretty easy to convert to other languages. http://www.icsi.berkeley.edu//techreports/1991.abstracts/tr-91-009.html describes "bumptrees" which are good for dealing with mixtures of Gaussians and related situations. Hope that helps. What is your application? --Steve (Stephen M. Omohundro) (Back to Steve Witham talking:) Another reference found by David was this: http://filebox.vt.edu/users/jegrant/stuff/kdtrees.html This one talks about splitting along dimension 0 at level 0 of the tree, dimension 1 at level 1, etc. ----------- Actually, my research has shown that the original paper introducing them was: Jon Louis Bentley, "Multidimensional Binary Search Trees Used for Associative Searching," Communications of the ACM, 18:9 (1975) 509 - 517. In this paper, Bentley has provided a nearest neighbor query algorithm. Friedman, Bentley, and Finkel then wrote the article referenced above that included an improved nearest negihbor search with a slightly revised k-d tree structure. I've recently (Apr 2002) pulled both from the ACM digital library in .pdf format. -- G. Mayer ----------- |
|
| All trademarks and copyrights on this page are owned by their respective companies. Comments are owned by the Poster. The Rest ©2001 Jeff Rush. |