Kd Trees What's the Goal for This Course? Data St

Kd Trees What's the Goal for This Course? Data St

Today’s Outline - kd trees CSE 326: Data Structures Too much light often blinds gentlemen of this sort, Seeing the forest for the trees They cannot see the forest for the trees. - Christoph Martin Wieland Hannah Tang and Brian Tjaden Summer Quarter 2002 What’s the goal for this course? Data Structures - what’s in a name? Shakespeare It is not possible for one to teach others, until one can first teach herself - Confucious • Stacks and Queues • Asymptotic analysis • Priority Queues • Sorting – Binary heap, Leftist heap, Skew heap, d - heap – Comparison based sorting, lower- • Trees bound on sorting, radix sorting – Binary search tree, AVL tree, Splay tree, B tree • World Wide Web • Hash Tables – Open and closed hashing, extendible, perfect, • Implement if you had to and universal hashing • Understand trade-offs between • Disjoint Sets various data structures/algorithms • Graphs • Know when to use and when not to – Topological sort, shortest path algorithms, Dijkstra’s algorithm, minimum spanning trees use (Prim’s algorithm and Kruskal’s algorithm) • Real world applications Range Query Range Query Example Y A range query is a search in a dictionary in which the exact key may not be entirely specified. Bellingham Seattle Spokane Range queries are the primary interface Tacoma Olympia with multi-D data structures. Pullman Yakima Walla Walla Remember Assignment #2? Give an algorithm that takes a binary search tree as input along with 2 keys, x and y, with xÃÃy, and ÃÃ ÃÃ prints all keys z in the tree such that x z y. X 1 Range Querying in 1-D Range Querying in 1-D with a BST Find everything in the rectangle… Find everything in the rectangle… x x Multi-Dimensional Search ADT Applications of Multi-D Search 5,2 • Astronomy (simulation of galaxies) - 3 dimensions • Dictionary operations 2,5 8,4 • Protein folding in molecular biology - 3 dimensions – find • Lossy data compression - 4 to 64 dimensions – insert 4,4 1,9 8,2 5,7 • Image processing - 2 dimensions – delete – range queries 4,2 3,6 9,1 • Graphics - 2 or 3 dimensions • Each item has k keys for a k-dimensional search tree • Animation - 3 to 4 dimensions • Searches can be performed on one, some, or all the • Geographical databases - 2 or 3 dimensions keys or on ranges of the keys • Web searching - 200 or more dimensions k-D Trees can be unbalanced Find in a k-D Tree (but not when built in batch!) find(<x1,x2, …, xk>, root) finds the node which has the given set of keys in it or returns 5,0 insert(<5,0>) null if there is no such node insert(<6,9>) 6,9 Node find(keyVector keys, Node root) { insert(<9,3>) int dim = root.getDimension(); insert(<6,5>) if (root == NULL) insert(<7,7>) 9,3 return root; else if (root.getKeys() == keys) insert(<8,6>) 6,5 return root; else if (keys[dim] < (root.getKeys())[dim]) return find(keys, root.getLeft()); 7,7 else return find(keys, root.getRight()); 8,6 } height: runtime: 2 Range Query Examples: Find Example Two Dimensions find(<3,6>) 5,2 find(<0,10>) • Search for items based on just one key 2,5 8,4 • Search for items based on ranges for all keys • Search for items based on 4,4 1,9 8,2 5,7 a function of several keys: e.g., a circular range query 4,2 3,6 9,1 Building a 2-D Tree (0/4) k-D Trees y • Split on the next dimension at each succeeding level • If building in batch, choose the median along the current dimension at each level – guarantees logarithmic height and balanced tree • In general, add as in a BST k-D tree node keys value The dimension that dimension this node splits on left right x Building a 2-D Tree (1/4) Building a 2-D Tree (2/4) y y x x 3 Building a 2-D Tree (3/4) Building a 2-D Tree (4/4) y y x x 2-D Tree k-D Tree y a b c d e e f h i g g h j m k l f k d l b a j c i m x 2-D Range Querying in 2-D Trees Other Shapes for Range Querying y y Search every partition that intersects the rectangle. x Search every partition that intersects the shape (circle). x Check whether each node (including leaves) falls into the range. Check whether each node (including leaves) falls into the shape. 4 Building a Quad Tree (0/5) Quad Trees y • Split on all (two) dimensions at each level • Split key space into equal size partitions (quadrants) • Add a new node by adding to a leaf, and, if the leaf is already occupied, split until only one node per leaf quadrant quad tree node 0,1 1,1 keys value Center: x y 0,0 1,0 Quadrants: 0,01,00,11,1 Center x Building a Quad Tree (1/5) Building a Quad Tree (2/5) y y x x Building a Quad Tree (3/5) Building a Quad Tree (4/5) y y x x 5 Building a Quad Tree (5/5) y Quad Tree Example a b c a g d d e f e f g b c x Quad Trees vs. k-D Trees Quad Trees can be unbalanced • k-D Trees – Density balanced trees – Number of nodes is O(n) where n is the number of points – Height of the tree is O(log n) with batch insertion – Supports insert, find, nearest neighbor, range queries • Quad Trees – Number of nodes is O(n(1+ log(∆/n))) where n is the number of points and ∆ is the ratio of the width (or height) of the key a space and the smallest distance between two points b – Height of the tree is O(log n + log ∆) – Supports insert, delete, find, nearest neighbor, range queries height: 6.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    6 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us