1 / 38

Algorithms and Data Structures Lecture XIV

Algorithms and Data Structures Lecture XIV. Simonas Šaltenis Nykredit Center for Database Research Aalborg University simas@cs.auc.dk. This Lecture. Introduction to computational geometry Algorithms Points and lines in 2D space Line sweep technique

blandm
Download Presentation

Algorithms and Data Structures Lecture XIV

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Algorithms and Data StructuresLecture XIV Simonas Šaltenis Nykredit Center for Database Research Aalborg University simas@cs.auc.dk

  2. This Lecture • Introduction to computational geometry • Algorithms • Points and lines in 2D space • Line sweep technique • Closest pair of points using divide-and-conquer • A peek at data structures for mutidimensional range searching

  3. Computational Geometry • The term first appeared in the 70’s • Originally referred to computational aspects of solid/geometric modeling • Later as the field of algorithm design and analysis of discrete geometry • Algorithmic bases for many scientific & engineering disciplines • GIS, robotics, computer graphics, computer vision, CAD/CAM, VLSI design, etc.

  4. Geometric Objectsin Plane • Point: defined by a pair of coordinates (x,y) • Segment: portion of a straight line between two points – their convex combinaiton • Polygon: a circular sequence of points (vertices) and segments (edges) between them B A

  5. Some Geomtric Problems • Segment intersection: Given two segments, do they intersect? • Simple closed path: Given a set of points, find a non-intersecting polygon with vertices on the points

  6. Some Geomtric Problems (2) • Inclusion in polygon:Is a point inside or outside a polygon?

  7. Segment Intersection • Test whether segments (a,b) and (c,d) intersect.How do we do it? • We could start by writing down the equations of thelines through the segments, then test whether thelines intersect, then ... • An alternative (and simpler) approach is based in thenotion of orientation of an ordered triplet of pointsin the plane

  8. Orientation in the Plane • The orientation of an ordered triplet of points in the plane can be • counterclockwise (left turn) • clockwise (right turn) • collinear (no turn) counterclockwise (left turn) collinear (no turn) clockwise (right turn)

  9. Intersection and Orientation • Two segments (p1,q1) and (p2,q2) intersect if and only ifone of the following two conditions is verified • General case: • (p1,q1,p2) and (p1,q1,q2) have differentorientations and • (p2,q2,p1) and (p2,q2,q1) have differentorientations • Special case • (p1,q1,p2), (p1,q1,q2), (p2,q2,p1), and(p2,q2,q1) are all collinear and • the x-projections of (p1,q1) and (p2,q2) intersect • the y-projections of (p1,q1) and (p2,q2) intersect

  10. Orientation Examples • General case: • (p1,q1,p2) and (p1,q1,q2) have differentorientations and • (p2,q2,p1) and (p2,q2,q1) have differentorientations

  11. Orientation Examples (2)

  12. Orientation Examples (3) • Special case • (p1,q1,p2), (p1,q1,q2), (p2,q2,p1), and (p2,q2,q1) areall collinear and • the x-projections of (p1,q1) and (p2,q2) intersect • the y-projections of (p1,q1) and (p2,q2) intersect

  13. Computing the Orientation • slope of segment (p1 ,p2 ): s = (y2-y1)/(x2-x1) • slope of segment (p2 ,p3 ): t = (y3-y2)/(x3-x2) • Orientation test • counterclockwise (left turn): s < t • clockwise (right turn): s > t • collinear (no turn): s = t

  14. Computing the Orientation (2) • The orientation depends on whether the following expression is positive, negative, or null(y2-y1)(x3-x2) - (y3-y2)(x2-x1) = ? • This is a cross product of two vectors

  15. Determining Intersections • Given a set of n segments, we want to determine whether any two line segments intersect • A brute force approach would take O(n2) time (testing each with every other segment for intersection)

  16. Determining Intersections (2) • It can be done faster by using a powerfull comp. geometry technique, called plane-sweeping. Two sets of data are maintained: • sweep-line status: the set of segments intersecting the sweep line l • event-point schedule: where updates to l are required event point l : sweep line

  17. Plane Sweeping Algorithm • Each segment end point is an event point • At an event point, update the status of the sweep line & perform intersection tests • left end point: a new segment is added to the status of l and it’s tested against the rest • right end point: it’s deleted from the status of l • Only testing pairs of segments for which there is a horizontal line that intersects both segments • This might be not good enough. It may still be inefficient, O(n2) for some cases

  18. Plane Sweep Algorithm (2) • To include the idea of being close in the horizontal direction, only test segments that are adjacent in the vertical direction • Only test a segment with the ones above and below (predecessor and successor, rings a bell…) • the ”above-below” relationship among segments does not change unless there is an intersection • New “status”: ordered sequence of segments

  19. Plane Sweeping Algorithm (3) b d c e a a ba bcb bcad bcd cd ecd ed e

  20. Pseudo Code AnySegmentsIntersect(S) 01T ® 02 sort the end points of the segments in S from left to right, breaking ties by putting points with lower y-coords first 03 for each point p in the sorted list of end points do 04 if p is the left end point of a segment s then 05 Insert(T,s) 06 if (Above(T,s) exists and intersects s) or (Below(T,s) exists and intersects s) then 07 return TRUE 08 if p is the right end point of a segment s then 09 if both Above(T,s) and Below(T,s) exist and Above(T,s) intersects Below(T,s) then 10 return TRUE 11 Delete(T,s) 12 return FALSE

  21. Implementing Event Queue • Define an order on event points • Store the event points in a priority queue • both insertion or deletion takes O(logn) time, where n is the number of events, and fetching minimum – O(1) • For our algorithm sorted array is enough, because the set of events does not change. • Maintain the status of l using a binary search treeT • the up-to-down order of segments on the line l <=> the left-to-right order of leaves in T • segments in internal nodes guide search • each update and search takesO(log n)

  22. Status and Structure l Sm Sl Sk Si Sj Sk Sl Si T Sj Sm Sl Si Sk Sj

  23. Running Time • Sorting the segments takes O(n log n) time • The loop is executed once for every end point (2n) taking each time O(log n) time (e.g., red-black tree operation) • The total running time is O(n log n)

  24. Closest Pair • Given a set P of N points, findp,q Î P, such that the distanced(p, q) is minimum • Algorithms for determining theclosest pair: • Brute Force O(n2) • Divide and Conquer O(n log n) • Sweep-Line O(n log n)

  25. Brute Force • Compute all the distances d(p,q) and select the minimum distance • Running time O(n2)

  26. Divide and Conquer • Sort points on the x-coordinate and divide them in half • Closest pair is either in one of the halves or has a member in each half

  27. Divide and Conquer (2) • Phase 1: Sort the points bytheir x-coordinate • p1 p2 ... pn/2... pn/2+1 ... pn

  28. Divide and Conquer (3) • Phase 2:Recursively compute closestpairs and minimum distances, • dl, drin • Pl = {p1, p2, ... , pn/2 } • Pr = {pn/2+1, ..., pn } • Find the closest pair andclosest distance in centralstrip of width 2d, where • d = min(dl, dr) • in other words...

  29. Divide and Conquer (4) • Find the closest ( ,) pairin a strip of width 2d,knowing that no ( , ) or( , ) pair is closer than d

  30. Combining Two Solutions • For each point p in the strip,check distances d(p, q),where p and q are of differentcolors and: • There are no more than four such points!

  31. Running Time • Sorting by the y-coordinate at each conquering step yields the following recurrence

  32. Improved Algorithm • The idea: Sort all the points by y-coordinate once • Before recursive calls, partition the sorted list into two sorted sublists for the left and right halves

  33. Running Time • Phase 1: • Sort by x and y coordinate: • O(n log n) • Phase 2: • Partition: O(n) • Recur: 2T(n/2) • Combine: O(n) • T(n) = 2 T(n/2) + n = O(n log n) • Total Time: O(n log n)

  34. Multidimensional DS • Multidimensional Data Structures are used to answer queries on the set of multidimensional points • Range query ([x1, x2], [y1,y2]): find all points (x, y) such that x1<x<x2 and y1<y<y2

  35. 1D Range Searching • Find x, such that x1<x<x2 • Can be done with balanced binary search trees (e.g., red-black trees) in O( logn + k) time, where k is the size of the answer T k elements x1 x2

  36. Range Trees • Build a binary tree T on x-coordinates • With each node v, associate a binary tree Tv that stores all the points in the subtree of T rooted at v. Organize Tv on y-coordinates. • Space: O(n logn) • Range query: O( log2n + k)

  37. Quadtrees • Quadtrees – partition tree • Linear space • Good average query performance b 1 3 2 a 3 2 4 4 c d e 4 1 3 3 a e b d f

  38. Next Lecture • Introduction to NP-Complete

More Related