Geometric Algorithms. range search quad and kd trees intersection search VLSI rules check. References: Algorithms in C (2nd edition), Chapters 26-27

Similar documents
Algorithms. Algorithms GEOMETRIC APPLICATIONS OF BSTS. 1d range search line segment intersection kd trees interval search trees rectangle intersection

EE602 Algorithms GEOMETRIC INTERSECTION CHAPTER 27

A Note on Maximum Independent Sets in Rectangle Intersection Graphs

Computational Geometry. Lecture 1: Introduction and Convex Hulls

Data Warehousing und Data Mining

Computational Geometry: Line segment intersection

Arrangements And Duality

A binary search tree or BST is a binary tree that is either empty or in which the data element of each node has a key, and:

Persistent Data Structures and Planar Point Location

Binary Heap Algorithms

5.4 Closest Pair of Points

Scan-Line Fill. Scan-Line Algorithm. Sort by scan line Fill each span vertex order generated by vertex list

Vector storage and access; algorithms in GIS. This is lecture 6

Closest Pair Problem

Binary Search Trees. basic implementations randomized BSTs deletion in BSTs

Tables so far. set() get() delete() BST Average O(lg n) O(lg n) O(lg n) Worst O(n) O(n) O(n) RB Tree Average O(lg n) O(lg n) O(lg n)

28 Closest-Point Problems

Shortest Path Algorithms

Partitioning and Divide and Conquer Strategies

1) The postfix expression for the infix expression A+B*(C+D)/F+D*E is ABCD+*F/DE*++

DNS LOOKUP SYSTEM DATA STRUCTURES AND ALGORITHMS PROJECT REPORT

Binary Search Trees. Data in each node. Larger than the data in its left child Smaller than the data in its right child

R-trees. R-Trees: A Dynamic Index Structure For Spatial Searching. R-Tree. Invariants

Previous Lectures. B-Trees. External storage. Two types of memory. B-trees. Main principles

Binary Heaps * * * * * * * / / \ / \ / \ / \ / \ * * * * * * * * * * * / / \ / \ / / \ / \ * * * * * * * * * *

CSE 326, Data Structures. Sample Final Exam. Problem Max Points Score 1 14 (2x7) 2 18 (3x6) Total 92.

Ordered Lists and Binary Trees

Algorithms and Data Structures

B-Trees. Algorithms and data structures for external memory as opposed to the main memory B-Trees. B -trees

Binary Search Trees. A Generic Tree. Binary Trees. Nodes in a binary search tree ( B-S-T) are of the form. P parent. Key. Satellite data L R

root node level: internal node edge leaf node Data Structures & Algorithms McQuain

Efficient representation of integer sets

Persistent Data Structures

INTERSECTION OF LINE-SEGMENTS

Sample Questions Csci 1112 A. Bellaachia

Fast Sequential Summation Algorithms Using Augmented Data Structures

Binary Space Partitions

1. Relational database accesses data in a sequential form. (Figures 7.1, 7.2)

Geometry Chapter Point (pt) 1.1 Coplanar (1.1) 1.1 Space (1.1) 1.2 Line Segment (seg) 1.2 Measure of a Segment

Data Structures and Algorithms

BALTIC OLYMPIAD IN INFORMATICS Stockholm, April 18-22, 2009 Page 1 of?? ENG rectangle. Rectangle

A Comparison of Dictionary Implementations

Outline BST Operations Worst case Average case Balancing AVL Red-black B-trees. Binary Search Trees. Lecturer: Georgy Gimel farb

Data Structures for Moving Objects

Binary Heaps. CSE 373 Data Structures

Section 1.1. Introduction to R n

Parallel and Perpendicular. We show a small box in one of the angles to show that the lines are perpendicular.

Unit 6 Direction and angle

Converting a Number from Decimal to Binary

Operations: search;; min;; max;; predecessor;; successor. Time O(h) with h height of the tree (more on later).

Solving Geometric Problems with the Rotating Calipers *

Sorting revisited. Build the binary search tree: O(n^2) Traverse the binary tree: O(n) Total: O(n^2) + O(n) = O(n^2)

2.3 WINDOW-TO-VIEWPORT COORDINATE TRANSFORMATION

Geometry and Measurement

TREE BASIC TERMINOLOGIES

From Last Time: Remove (Delete) Operation

Questions 1 through 25 are worth 2 points each. Choose one best answer for each.

Dhiren Bhatia Carnegie Mellon University

Binary Search Trees CMPSC 122

MODERN APPLICATIONS OF PYTHAGORAS S THEOREM

Union-Find Algorithms. network connectivity quick find quick union improvements applications

Section IV.1: Recursive Algorithms and Recursion Trees

Review of Hashing: Integer Keys

Binary Search Trees 3/20/14

DATA STRUCTURES USING C

1. The memory address of the first element of an array is called A. floor address B. foundation addressc. first address D.

CompSci-61B, Data Structures Final Exam

PES Institute of Technology-BSC QUESTION BANK

CS104: Data Structures and Object-Oriented Design (Fall 2013) October 24, 2013: Priority Queues Scribes: CS 104 Teaching Team

Clustering & Visualization

Lecture 6: Binary Search Trees CSCI Algorithms I. Andrew Rosenberg

Figure 2.1: Center of mass of four points.

4.2 Sorting and Searching

1. A student followed the given steps below to complete a construction. Which type of construction is best represented by the steps given above?

Seminar. Path planning using Voronoi diagrams and B-Splines. Stefano Martina

Planar Curve Intersection

Chapter Objectives. Chapter 9. Sequential Search. Search Algorithms. Search Algorithms. Binary Search

Analysis of Micromouse Maze Solving Algorithms

DATABASE DESIGN - 1DL400

CSE373: Data Structures & Algorithms Lecture 14: Hash Collisions. Linda Shapiro Spring 2016

Line Segment Intersection

Persistent Binary Search Trees

cs2010: algorithms and data structures

Binary Trees and Huffman Encoding Binary Search Trees

Physical Data Organization

Data Structures and Algorithm Analysis (CSC317) Intro/Review of Data Structures Focus on dynamic sets

PCB ROUTERS AND ROUTING METHODS

Shortest Inspection-Path. Queries in Simple Polygons

Common Core Unit Summary Grades 6 to 8

Solutions to old Exam 1 problems

Analysis of Binary Search algorithm and Selection Sort algorithm

Part 2: Community Detection

Sorting Algorithms. Nelson Padua-Perez Bill Pugh. Department of Computer Science University of Maryland, College Park

THREE DIMENSIONAL GEOMETRY

6. Standard Algorithms

Internet Packet Filter Management and Rectangle Geometry

A floor is a flat surface that extends in all directions. So, it models a plane. 1-1 Points, Lines, and Planes

Fast Multipole Method for particle interactions: an open source parallel library component

dictionary find definition word definition book index find relevant pages term list of page numbers

Why Use Binary Trees?

Transcription:

Geometric Algorithms range search quad and kd trees intersection search VLSI rules check References: Algorithms in C (2nd edition), Chapters 26-27 http://www.cs.princeton.edu/introalgsds/73range http://www.cs.princeton.edu/introalgsds/74intersection 1

Overview Types of data. Points, lines, planes, polygons, circles,... This lecture. Sets of N objects. Geometric problems extend to higher dimensions. Good algorithms also extend to higher dimensions. Curse of dimensionality. Basic problems. Range searching. Nearest neighbor. Finding intersections of geometric objects. 2

range search quad and kd trees intersection search VLSI rules check 3

1D Range Search Extension to symbol-table ADT with comparable keys. Insert key-value pair. Search for key k. How many records have keys between k 1 and k 2? Iterate over all records with keys between k 1 and k 2. Application: database queries. Geometric intuition. Keys are point on a line. How many points in a given interval? insert B B insert D B D insert A A B D insert I A B D I insert H A B D H I insert F A B D F H I insert P A B D F H I P count G to K 2 search G to K H I 4

1D Range search: implementations Range search. How many records have keys between k 1 and k 2? Ordered array. Slow insert, binary search for k 1 and k 2 to find range. Hash table. No reasonable algorithm (key order lost in hash). BST. In each node x, maintain number of nodes in tree rooted at x. Search for smallest element k 1 and largest element k 2. insert count range ordered array N log N R + log N hash table 1 N N BST log N log N R + log N N = # records R = # records that match nodes examined within interval not touched 5

2D Orthogonal Range Search Extension to symbol-table ADT with 2D keys. Insert a 2D key. Search for a 2D key. Range search: find all keys that lie in a 2D range? Range count: how many keys lie in a 2D range? Applications: networking, circuit design, databases. Geometric interpretation. Keys are point in the plane Find all points in a given h-v rectangle 6

2D Orthogonal range Search: Grid implementation Grid implementation. [Sedgewick 3.18] Divide space into M-by-M grid of squares. Create linked list for each square. Use 2D array to directly access relevant square. Insert: insert (x, y) into corresponding grid square. Range search: examine only those grid squares that could have points in the rectangle. RT LB 7

2D Orthogonal Range Search: Grid Implementation Costs Space-time tradeoff. Space: M 2 + N. Time: 1 + N / M 2 per grid cell examined on average. Choose grid square size to tune performance. Too small: wastes space. Too large: too many points per grid square. Rule of thumb: N by N grid. Running time. [if points are evenly distributed] Initialize: O(N). Insert: O(1). M N Range: O(1) per point in range. RT LB 8

Clustering Grid implementation. Fast, simple solution for well-distributed points. Problem. Clustering is a well-known phenomenon in geometric data. Ex: USA map data. 13,000 points, 1000 grid squares. half the squares are empty half the points are in 10% of the squares Lists are too long, even though average length is short. Need data structure that gracefully adapts to data. 9

range search quad and kd trees intersection search VLSI rules check 10

Space Partitioning Trees Use a tree to represent a recursive subdivision of d-dimensional space. BSP tree. Recursively divide space into two regions. Quadtree. Recursively divide plane into four quadrants. Octree. Recursively divide 3D space into eight octants. kd tree. Recursively divide k-dimensional space into two half-spaces. [possible but much more complicated to define Voronoi-based structures] Applications. Ray tracing. Flight simulators. N-body simulation. Collision detection. Astronomical databases. Adaptive mesh generation. Accelerate rendering in Doom. Hidden surface removal and shadow casting. Grid Quadtree kd tree BSP tree 11

Quadtree Recursively partition plane into 4 quadrants. Implementation: 4-way tree. actually a trie partitioning on bits of coordinates (0..., 1...) b public class QuadTree { private Quad quad; private Value value; private QuadTree NW, NE, SW, SE; } a c d a h e d e f g f g h b c (01..., 00...) Primary reason to choose quad trees over grid methods: good performance in the presence of clustering 12

Curse of Dimensionality Range search / nearest neighbor in k dimensions? Main application. Multi-dimensional databases. 3D space. Octrees: recursively divide 3D space into 8 octants. 100D space. Centrees: recursively divide into 2 100 centrants??? Raytracing with octrees http://graphics.cs.ucdavis.edu/~gregorsk/graphics/275.html 13

2D Trees Recursively partition plane into 2 halfplanes. Implementation: BST, but alternate using x and y coordinates as key. Search gives rectangle containing point. Insert further subdivides the plane. p p points left of p points right of p even levels q q points below q points above q odd levels 14

Near Neighbor Search Useful extension to symbol-table ADT for records with metric keys. Insert a k dimensional point. Near neighbor search: given a point p, which point in data structure is nearest to p? Need concept of distance, not just ordering. kd trees provide fast, elegant solution. Recursively search subtrees that could have near neighbor (may search both). O(log N)? Yes, in practice (but not proven) 15

kd Trees kd tree. Recursively partition k-dimensional space into 2 halfspaces. Implementation: BST, but cycle through dimensions ala 2D trees. p level i (mod k) points whose i th coordinate is less than p s points whose i th coordinate is greater than p s Efficient, simple data structure for processing k-dimensional data. adapts well to clustered data. adapts well to high dimensional data. widely used. discovered by an undergrad in an algorithms class! 16

Summary Basis of many geometric algorithms: search in a planar subdivision. grid 2D tree Voronoi diagram intersecting lines basis N h-v lines N points N points N lines representation 2D array of N lists N-node BST N-node multilist ~N-node BST cells ~N squares N rectangles N polygons ~N triangles search cost 1 log N log N log N extend to kd? too many cells easy cells too complicated use (k-1)d hyperplane 17

range search quad and kd trees intersection search VLSI rules check 18

Search for intersections Problem. Find all intersecting pairs among set of N geometric objects. Applications. CAD, games, movies, virtual reality. Simple version: 2D, all objects are horizontal or vertical line segments. Brute force. Test all (N 2 ) pairs of line segments for intersection. Sweep line. Efficient solution extends to 3D and general objects. 19

Orthogonal segment intersection search: Sweep-line algorithm Sweep vertical line from left to right. x-coordinates define events. left endpoint of h-segment: insert y coordinate into ST. right endpoint of h-segment: remove y coordinate from ST. v-segment: range search for interval of y endpoints. insert y delete y range search 20

Orthogonal segment intersection: Sweep-line algorithm Reduces 2D orthogonal segment intersection search to 1D range search! Running time of sweep line algorithm. Put x-coordinates on a PQ (or sort). O(N log N) Insert y-coordinate into SET. O(N log N) Delete y-coordinate from SET. O(N log N) Range search. O(R + N log N) N = # line segments R = # intersections Efficiency relies on judicious use of data structures. 21

Immutable H-V segment ADT public final class SegmentHV implements Comparable<SegmentHV> { public final int x1, y1; public final int x2, y2; } public SegmentHV(int x1, int y1, int x2, int y2) {... } public boolean ishorizontal() {... } public boolean isvertical() {... } public int compareto(segmenthv b) {... } public String tostring() {... } compare by x-coordinate; break ties by y-coordinate (x, y2) (x1, y) (x2, y) (x, y1) horizontal segment vertical segment 22

Sweep-line event public class Event implements Comparable<Event> { private int time; private SegmentHV segment; public Event(int time, SegmentHV segment) { this.time = time; this.segment = segment; } } public int compareto(event b) { return a.time - b.time; } 23

Sweep-line algorithm: Initialize events MinPQ<Event> pq = new MinPQ<Event>(); for (int i = 0; i < N; i++) { if (segments[i].isvertical()) { Event e = new Event(segments[i].x1, segments[i]); pq.insert(e); } else if (segments[i].ishorizontal()) { Event e1 = new Event(segments[i].x1, segments[i]); Event e2 = new Event(segments[i].x2, segments[i]); pq.insert(e1); pq.insert(e2); } } initialize PQ vertical segment horizontal segment 24

Sweep-line algorithm: Simulate the sweep line int INF = Integer.MAX_VALUE; SET<SegmentHV> set = new SET<SegmentHV>(); while (!pq.isempty()) { Event e = pq.delmin(); int sweep = e.time; SegmentHV segment = e.segment; if (segment.isvertical()) { SegmentHV seg1, seg2; seg1 = new SegmentHV(-INF, segment.y1, -INF, segment.y1); seg2 = new SegmentHV(+INF, segment.y2, +INF, segment.y2); for (SegmentHV seg : set.range(seg1, seg2)) System.out.println(segment + " intersects " + seg); } } else if (sweep == segment.x1) set.add(segment); else if (sweep == segment.x2) set.remove(segment); 25

General line segment intersection search Extend sweep-line algorithm Intersections can only occur between adjacent segments. Add/delete line segment one new pair of adjacent segments. Intersection swap adjacent segments. Maintain order of segments that intersect sweep line by y-coordinate. A B C D insert segment delete segment A AB ABC ACB ACBD ACD CAD CA A intersection order of segments 26

Line Segment Intersection: Implementation Efficient implementation of sweep line algorithm. Maintain PQ of important x-coordinates: endpoints and intersections. Maintain SET of segments intersecting sweep line, sorted by y. O(R log N + N log N). Implementation issues. Degeneracy. Floating point precision. to support "next largest" and "next smallest" queries Use PQ, not presort (intersection events are unknown ahead of time). 27

range search quad and kd trees intersection search VLSI rules check 28

Algorithms and Moore's Law Rectangle intersection search. Find all intersections among h-v rectangles. Application. Design-rule checking in VLSI circuits. 29

Algorithms and Moore's Law Early 1970s: microprocessor design became a geometric problem. Very Large Scale Integration (VLSI). Computer-Aided Design (CAD). Design-rule checking: certain wires cannot intersect certain spacing needed between different types of wires debugging = rectangle intersection search 30

Algorithms and Moore's Law "Moore s Law." Processing power doubles every 18 months. 197x: need to check N rectangles. 197(x+1.5): need to check 2N rectangles on a 2x-faster computer. Bootstrapping: we get to use the faster computer for bigger circuits But bootstrapping is not enough if using a quadratic algorithm 197x: takes M days. 197(x+1.5): takes (4M)/2 = 2M days. (!) quadratic algorithm 2x-faster computer O(N log N) CAD algorithms are necessary to sustain Moore s Law. 31

Rectangle intersection search Move a vertical "sweep line" from left to right. Sweep line: sort rectangles by x-coordinate and process in this order, stopping on left and right endpoints. Maintain set of intervals intersecting sweep line. Key operation: given a new interval, does it intersect one in the set? 32

Interval Search Trees (7, 10) (20, 22) (5, 11) (17, 19) (4, 8) (15, 18) Support following operations. Insert an interval (lo, hi). Delete the interval (lo, hi). Search for an interval that intersects (lo, hi). Non-degeneracy assumption. No intervals have the same x-coordinate. 33

Interval Search Trees (7, 10) (20, 22) (5, 11) (17, 19) (4, 8) (15, 18) Interval tree implementation with BST. Each BST node stores one interval. use lo endpoint as BST key. (17, 19) (5, 11) (20, 22) (4, 8) (15, 18) (7, 10) 34

Interval Search Trees (7, 10) (20, 22) (5, 11) (17, 19) (4, 8) (15, 18) Interval tree implementation with BST. Each BST node stores one interval. BST nodes sorted on lo endpoint. Additional info: store and maintain max endpoint in subtree rooted at node. (17, 19) 22 (5, 11) 18 (20, 22) 22 (4, 8) 8 (15, 18) 18 (7, 10) 10 35

Finding an intersecting interval Search for an interval that intersects (lo, hi). Node x = root; while (x!= null) { if (x.interval.intersects(lo, hi)) return x.interval; else if (x.left == null) x = x.right; else if (x.left.max < lo) x = x.right; else x = x.left; } return null; Case 1. If search goes right, then either there is an intersection in right subtree there are no intersections in either subtree. Pf. Suppose no intersection in right. (x.left == null) trivial. (a, b) left subtree of x (x.left.max < lo) for any interval (a, b) in left subtree of x, we have b max < lo. max (lo,hi) defn of max reason for going right 36

Finding an intersecting interval Search for an interval that intersects (lo, hi). Node x = root; while (x!= null) { if (x.interval.intersects(lo, hi)) return x.interval; else if (x.left == null) x = x.right; else if (x.left.max < lo) x = x.right; else x = x.left; } return null; Case 2. If search goes left, then either there is an intersection in left subtree there are no intersections in either subtree. Pf. Suppose no intersection in left. Then for any interval (a, b) in right subtree, a c > hi no intersection in right. max intervals sorted by left endpoint no intersection in left subtree (lo,hi) (c,max) (a, b) left subtree of x right subtree of x 37

Interval Search Tree: Analysis Implementation. Use a red-black tree to guarantee performance. can maintain auxiliary information using log N extra work per op Operation insert interval delete interval find an interval that intersects (lo, hi) find all intervals that intersect (lo, hi) Worst case log N log N log N R log N N = # intervals R = # intersections 38

Rectangle intersection sweep-line algorithm: Review Move a vertical "sweep line" from left to right. Sweep line: sort rectangles by x-coordinates and process in this order. Store set of rectangles that intersect the sweep line in an interval search tree (using y-interval of rectangle). Left side: interval search for y-interval of rectangle, insert y-interval. Right side: delete y-interval. 39

VLSI Rules checking: Sweep-line algorithm (summary) Reduces 2D orthogonal rectangle intersection search to 1D interval search! Running time of sweep line algorithm. Sort by x-coordinate. O(N log N) Insert y-interval into ST. O(N log N) Delete y-interval from ST. O(N log N) Interval search. O(R log N) N = # line segments R = # intersections Efficiency relies on judicious extension of BST. Bottom line. Linearithmic algorithm enables design-rules checking for huge problems 40

Geometric search summary: Algorithms of the day 1D range search BST kd range search kd tree 1D interval intersection search interval tree 2D orthogonal line intersection search sweep line reduces to 1D range search 2D orthogonal rectangle intersection search sweep line reduces to 1D interval intersection search 41