Computational Geometry csci3250
Transcript of Computational Geometry csci3250
![Page 1: Computational Geometry csci3250](https://reader034.fdocuments.us/reader034/viewer/2022051114/62774cd4fdbe8d3bcb0a5d07/html5/thumbnails/1.jpg)
Computational Geometry csci3250
Laura Toma
Bowdoin College
![Page 2: Computational Geometry csci3250](https://reader034.fdocuments.us/reader034/viewer/2022051114/62774cd4fdbe8d3bcb0a5d07/html5/thumbnails/2.jpg)
Today
• Introduction • Warmup
• finding collinear points • finding closest pair of points
![Page 3: Computational Geometry csci3250](https://reader034.fdocuments.us/reader034/viewer/2022051114/62774cd4fdbe8d3bcb0a5d07/html5/thumbnails/3.jpg)
Introduction
• CG deals with algorithms for geometric data • Focuses on discrete geometry
• input is a discrete set of points/lines/polygons/.. • different emphasis than (continuous) geometry
![Page 4: Computational Geometry csci3250](https://reader034.fdocuments.us/reader034/viewer/2022051114/62774cd4fdbe8d3bcb0a5d07/html5/thumbnails/4.jpg)
Introduction
• CG deals with algorithms for geometric data
points
![Page 5: Computational Geometry csci3250](https://reader034.fdocuments.us/reader034/viewer/2022051114/62774cd4fdbe8d3bcb0a5d07/html5/thumbnails/5.jpg)
Introduction
• CG deals with algorithms for geometric data
lines and line segments
![Page 6: Computational Geometry csci3250](https://reader034.fdocuments.us/reader034/viewer/2022051114/62774cd4fdbe8d3bcb0a5d07/html5/thumbnails/6.jpg)
Introduction
• CG deals with algorithms for geometric data
polygons
![Page 7: Computational Geometry csci3250](https://reader034.fdocuments.us/reader034/viewer/2022051114/62774cd4fdbe8d3bcb0a5d07/html5/thumbnails/7.jpg)
Introduction
• CG deals with algorithms for geometric data
polygons
![Page 8: Computational Geometry csci3250](https://reader034.fdocuments.us/reader034/viewer/2022051114/62774cd4fdbe8d3bcb0a5d07/html5/thumbnails/8.jpg)
Introduction
• CG deals with algorithms for geometric data
polygons
![Page 9: Computational Geometry csci3250](https://reader034.fdocuments.us/reader034/viewer/2022051114/62774cd4fdbe8d3bcb0a5d07/html5/thumbnails/9.jpg)
Introduction
• CG deals with algorithms for geometric data
polygons
![Page 10: Computational Geometry csci3250](https://reader034.fdocuments.us/reader034/viewer/2022051114/62774cd4fdbe8d3bcb0a5d07/html5/thumbnails/10.jpg)
Introduction
• CG deals with algorithms for geometric data
2D, 3D..
![Page 11: Computational Geometry csci3250](https://reader034.fdocuments.us/reader034/viewer/2022051114/62774cd4fdbe8d3bcb0a5d07/html5/thumbnails/11.jpg)
Introduction
• CG deals with algorithms for geometric data
2D, 3D..
![Page 12: Computational Geometry csci3250](https://reader034.fdocuments.us/reader034/viewer/2022051114/62774cd4fdbe8d3bcb0a5d07/html5/thumbnails/12.jpg)
Computational geometry
• Questions • Come up with an algorithm to e.g. find the convex hull of a set of
points • What is the complexity of the convex hull of a set of n points n the
plane? • What is the worst-case running time (tight bound) for an
algorithm? • Can we do better? What is a lower bound for the problem? • Is the algorithm practical? Can we speed it up by exploiting
special cases of data (that arise in practice)? • …
![Page 13: Computational Geometry csci3250](https://reader034.fdocuments.us/reader034/viewer/2022051114/62774cd4fdbe8d3bcb0a5d07/html5/thumbnails/13.jpg)
Applications
• Computer graphics • find what objects intersect others for rendering • hidden surface removal • lighting
![Page 14: Computational Geometry csci3250](https://reader034.fdocuments.us/reader034/viewer/2022051114/62774cd4fdbe8d3bcb0a5d07/html5/thumbnails/14.jpg)
Applications
• Robotics • path planning involves finding paths that avoid obstacles; this
involves finding intersections • does this route intersect this obstacle?
![Page 15: Computational Geometry csci3250](https://reader034.fdocuments.us/reader034/viewer/2022051114/62774cd4fdbe8d3bcb0a5d07/html5/thumbnails/15.jpg)
Applications
• Spatial database engines • e.g. Oracle spatial • contain specialized data structures for answering queries on
geometric data • e.g. find all intersections between two sets of line segments (road
and rivers)
![Page 16: Computational Geometry csci3250](https://reader034.fdocuments.us/reader034/viewer/2022051114/62774cd4fdbe8d3bcb0a5d07/html5/thumbnails/16.jpg)
Applications
• Computational geosciences • geographical data has coordinates (geometry) • overlay county maps with vegetation types • meshes of triangles are used to model surfaces
![Page 17: Computational Geometry csci3250](https://reader034.fdocuments.us/reader034/viewer/2022051114/62774cd4fdbe8d3bcb0a5d07/html5/thumbnails/17.jpg)
Applications
• Mobile networks / sensor networks • collections of devices that can communicate, and may be moving • e.g. keep track of their convex hulls as devices are moving • e.g. sending messages from one device to another requires e.g.
planning a route for the message (combination of CG and graph theory)
• chose a minimum set of sensors to turn on to assure that every point in the area is covered by a sensor.
![Page 18: Computational Geometry csci3250](https://reader034.fdocuments.us/reader034/viewer/2022051114/62774cd4fdbe8d3bcb0a5d07/html5/thumbnails/18.jpg)
Applications
• Cell phone data • stream of coordinates • e.g. find congestion patterns, model real-time traffic conditions
(done by cell phone apps)
![Page 19: Computational Geometry csci3250](https://reader034.fdocuments.us/reader034/viewer/2022051114/62774cd4fdbe8d3bcb0a5d07/html5/thumbnails/19.jpg)
Class overview
• Convex hull
![Page 20: Computational Geometry csci3250](https://reader034.fdocuments.us/reader034/viewer/2022051114/62774cd4fdbe8d3bcb0a5d07/html5/thumbnails/20.jpg)
Class overview
• Convex hull • comes up in a lot of applications • objects are approximated by their CH shape
![Page 21: Computational Geometry csci3250](https://reader034.fdocuments.us/reader034/viewer/2022051114/62774cd4fdbe8d3bcb0a5d07/html5/thumbnails/21.jpg)
Class overview
• Intersections • orthogonal line segment intersection
![Page 22: Computational Geometry csci3250](https://reader034.fdocuments.us/reader034/viewer/2022051114/62774cd4fdbe8d3bcb0a5d07/html5/thumbnails/22.jpg)
Class overview
• Intersections • general line segment intersection
![Page 23: Computational Geometry csci3250](https://reader034.fdocuments.us/reader034/viewer/2022051114/62774cd4fdbe8d3bcb0a5d07/html5/thumbnails/23.jpg)
Class overview
• Intersections • general line segment intersection
![Page 24: Computational Geometry csci3250](https://reader034.fdocuments.us/reader034/viewer/2022051114/62774cd4fdbe8d3bcb0a5d07/html5/thumbnails/24.jpg)
Class overview
• Visibility • art gallery problem
What part of the polygon can the guard see? How many guards necessary to cover this polygon?
![Page 25: Computational Geometry csci3250](https://reader034.fdocuments.us/reader034/viewer/2022051114/62774cd4fdbe8d3bcb0a5d07/html5/thumbnails/25.jpg)
Class overview
• Visibility • art gallery problem
What part of the polygon can the guard see? How many guards necessary to cover this polygon?
![Page 26: Computational Geometry csci3250](https://reader034.fdocuments.us/reader034/viewer/2022051114/62774cd4fdbe8d3bcb0a5d07/html5/thumbnails/26.jpg)
Class overview
• Triangulation and partitioning • subdivide a complex domain into simpler objects • simplest object: triangulation
![Page 27: Computational Geometry csci3250](https://reader034.fdocuments.us/reader034/viewer/2022051114/62774cd4fdbe8d3bcb0a5d07/html5/thumbnails/27.jpg)
Class overview
• Triangulation and partitioning • polygon triangulation: divide a polygon into a set of triangles
![Page 28: Computational Geometry csci3250](https://reader034.fdocuments.us/reader034/viewer/2022051114/62774cd4fdbe8d3bcb0a5d07/html5/thumbnails/28.jpg)
Class overview
• Triangulation and partitioning • triangulation of a set of points
![Page 29: Computational Geometry csci3250](https://reader034.fdocuments.us/reader034/viewer/2022051114/62774cd4fdbe8d3bcb0a5d07/html5/thumbnails/29.jpg)
Class overview
• Range searching • fundamental problem • searching in 2D
![Page 30: Computational Geometry csci3250](https://reader034.fdocuments.us/reader034/viewer/2022051114/62774cd4fdbe8d3bcb0a5d07/html5/thumbnails/30.jpg)
Class overview
• Range searching • fundamental problem • searching in 2D
find all points in this range
![Page 31: Computational Geometry csci3250](https://reader034.fdocuments.us/reader034/viewer/2022051114/62774cd4fdbe8d3bcb0a5d07/html5/thumbnails/31.jpg)
Class overview
• Range searching • fundamental problem • searching in 2D
find all points in this range
![Page 32: Computational Geometry csci3250](https://reader034.fdocuments.us/reader034/viewer/2022051114/62774cd4fdbe8d3bcb0a5d07/html5/thumbnails/32.jpg)
Class overview
• Range searching • range tree • kd-tree
![Page 33: Computational Geometry csci3250](https://reader034.fdocuments.us/reader034/viewer/2022051114/62774cd4fdbe8d3bcb0a5d07/html5/thumbnails/33.jpg)
Class overview
• Proximity problems • Voronoi diagram
• applications: nearest neighbor
![Page 34: Computational Geometry csci3250](https://reader034.fdocuments.us/reader034/viewer/2022051114/62774cd4fdbe8d3bcb0a5d07/html5/thumbnails/34.jpg)
Class overview
• Proximity problems • Voronoi diagram • Delaunay triangulations
![Page 35: Computational Geometry csci3250](https://reader034.fdocuments.us/reader034/viewer/2022051114/62774cd4fdbe8d3bcb0a5d07/html5/thumbnails/35.jpg)
DT Applications
![Page 36: Computational Geometry csci3250](https://reader034.fdocuments.us/reader034/viewer/2022051114/62774cd4fdbe8d3bcb0a5d07/html5/thumbnails/36.jpg)
Class overview
• Motion planning • robots moving among obstacles, find (shortest) paths
![Page 37: Computational Geometry csci3250](https://reader034.fdocuments.us/reader034/viewer/2022051114/62774cd4fdbe8d3bcb0a5d07/html5/thumbnails/37.jpg)
Logistics
• Work • in-class group work • programming assignments • no exams
![Page 38: Computational Geometry csci3250](https://reader034.fdocuments.us/reader034/viewer/2022051114/62774cd4fdbe8d3bcb0a5d07/html5/thumbnails/38.jpg)
Today: warmup
Problem 1: finding collinear points
Given a set of n points in 2D, determine if there exist three that are collinear
• What is the brute force solution? • Can you refine it?
![Page 39: Computational Geometry csci3250](https://reader034.fdocuments.us/reader034/viewer/2022051114/62774cd4fdbe8d3bcb0a5d07/html5/thumbnails/39.jpg)
Finding collinear points
Brute force: • for all distinct triplets of points pi, pj, pk
• check if they are collinear
• Analysis: • n chose 3 = O(n3) triplets • checking if three points are collinear can be done in constant time
==> O(n3) algorithm
![Page 40: Computational Geometry csci3250](https://reader034.fdocuments.us/reader034/viewer/2022051114/62774cd4fdbe8d3bcb0a5d07/html5/thumbnails/40.jpg)
Finding collinear points
Improved idea 1: • initialize array L = empty • for all distinct pairs of points pi, pj
• compute their line equation (slope, intercept) and store in an array L • sort array L //note: primarily by slope, secondarily by intercept • //invariant: identical lines will be consecutive in the sorted array • scan array L, if find any identical lines ==> there exist 3 collinear points
• Analysis: • n chose 2 = O(n2) pairs • time: O(n2 lg n) • space: O(n2)
![Page 41: Computational Geometry csci3250](https://reader034.fdocuments.us/reader034/viewer/2022051114/62774cd4fdbe8d3bcb0a5d07/html5/thumbnails/41.jpg)
Finding collinear points
Improved idea 2: • initialize BBST = empty • for all distinct pairs of points pi, pj
• compute their line equation (slope, intercept) • insert (slope, intercept) in BBST; if when inserting you find that (slope,
intercept) is already in the tree, you got 3 collinear points
Note: for this to work, you need to make sure that the key for the BBST is both the slope and the intercept
• Analysis: • n chose 2 = O(n2) pairs • time: O(n2 lg n) • space: O(n2)
![Page 42: Computational Geometry csci3250](https://reader034.fdocuments.us/reader034/viewer/2022051114/62774cd4fdbe8d3bcb0a5d07/html5/thumbnails/42.jpg)
Finding collinear points
Can you find a solution that runs in O(n2 lg n) time with only linear space?
![Page 43: Computational Geometry csci3250](https://reader034.fdocuments.us/reader034/viewer/2022051114/62774cd4fdbe8d3bcb0a5d07/html5/thumbnails/43.jpg)
Finding collinear points
Can you improve your solution, for example by making some assumption about the input?
e.g.: integer coordinates
![Page 44: Computational Geometry csci3250](https://reader034.fdocuments.us/reader034/viewer/2022051114/62774cd4fdbe8d3bcb0a5d07/html5/thumbnails/44.jpg)
Finding collinear points
If points have integer coordinates, we can immediately think of using hashing instead of BBST;
- families of universal hash functions are known for integers ==> guarantee no collision with high probability => O(1) insert/search
![Page 45: Computational Geometry csci3250](https://reader034.fdocuments.us/reader034/viewer/2022051114/62774cd4fdbe8d3bcb0a5d07/html5/thumbnails/45.jpg)
Finding collinear points
If points have integer coordinates, we can immediately think of using hashing instead of BBST;
- families of universal hash functions are known for integers ==> guarantee no collision with high probability => O(1) insert/search
Improved idea 4: • initialize HT = empty • for all distinct pairs of points pi, pj
• compute their line equation (slope, intercept) • check HT to see if already there => if yes, you got 3 collinear
points