• Compute angle between current point and all remaining points.. • Any point inside cannot be on hull 4 ccw tests for quadrilateral 4 comparisons for rectangle Three-phase algorithm • Pa
Trang 2• Geographic information systems.
• Computer graphics (movies, games, virtual reality)
• Models of physical world (maps, architecture, medical imaging)
Reference: http://www.ics.uci.edu/~eppstein/geom.html
airflow around an aircraft wing
Trang 3primitive operations
Trang 4Geometric Primitives
Point: two numbers (x, y)
Line: two numbers a and b [ax + by = 1]
Line segment: two points
Polygon: sequence of points
Primitive operations
• Is a point inside a polygon?
• Compare slopes of two lines
• Distance between two points
• Do two line segments intersect?
• Given three points p1, p2, p3, is p1-p2-p3 a counterclockwise turn?
any line not through origin
Trang 5Warning: intuition may be misleading
• Humans have spatial intuition in 2D and 3D
• Computers do not
• Neither has good intuition in higher dimensions!
Is a given polygon simple?
Trang 6Polygon Inside, Outside
Jordan curve theorem [Veblen 1905] Any continuous simple closed
curve cuts the plane in exactly two pieces: the inside and the outside
Is a point inside a simple polygon?
Trang 7public boolean contains(double x0, double y0) {
int crossings = 0;
for (int i = 0; i < N; i++) {
double slope = (y[i+1] - y[i]) / (x[i+1] - x[i]);
boolean cond1 = (x[i] <= x0) && (x0 < x[i+1]);
boolean cond2 = (x[i+1] <= x0) && (x0 < x[i]);
boolean above = (y0 < slope * (x0 - x[i]) + y[i]);
if ((cond1 || cond2) && above ) crossings++;
Polygon Inside, Outside: Crossing Number
Does line segment intersect ray?
y0 = yi+1 - yi xi+1 - xi (x0 - xi) + yi
xi x0 xi+1
(xi, yi)
(xi+1, yi+1)
(x0, y0)
Trang 8CCW Given three point a, b, and c, is a-b-c a counterclockwise turn?
• Analog of comparisons in sorting
• Idea: compare slopes
Implementing CCW
c
a b
yes
b
a c
no
c
a b
Yes ( slope)
c
a b
???
(collinear)
c
b a
???
(collinear)
b
a c
???
(collinear)
Trang 9Implementing CCW
CCW Given three point a, b, and c, is a-b-c a counterclockwise turn?
• Determinant gives twice area of triangle
• If area > 0 then a-b-c is counterclockwise
• If area < 0, then a-b-c is clockwise
• If area = 0, then a-b-c are collinear
Trang 10Immutable Point ADT
public final class Point {
public final int x;
public final int y;
public Point(int x, int y) { this.x = x; this.y = y; }
public double distanceTo(Point q) { return Math.hypot(this.x - q.x, this.y - q.y); }
public static int ccw(Point a, Point b, Point c) {
double area2 = (b.x-a.x)*(c.y-a.y) - (b.y-a.y)*(c.x-a.x);
if else (area2 < 0) return -1;
else if (area2 > 0) return +1;
else if (area2 > 0 return 0;
Trang 11Intersect: Given two line segments, do they intersect?
• Idea 1: find intersection point using algebra and check
• Idea 2: check if the endpoints of one line segment are on different
"sides" of the other line segment
Trang 12primitive operations
Trang 13Convex Hull
A set of points is convex if for any two points p and q in the set,
the line segment pq is completely in the set
Convex hull Smallest convex set containing all the points
Properties
• "Simplest" shape that approximates set of points
• Shortest (perimeter) fence surrounding the points
• Smallest (area) convex polygon enclosing the points
convex hull
p
q p
q
Trang 14Mechanical Solution
Mechanical algorithm Hammer nails perpendicular to plane;
stretch elastic rubber band around points
http://www.dfanning.com/math_tips/convexhull_1.gif
Trang 15For all pairs of points p and q in P
• compute ccw(p, q, x) for all other x in P
• p-q is on hull if all values positive
p q
Trang 16Package Wrap (Jarvis March)
Package wrap
• Start with point with smallest y-coordinate
• Rotate sweep line around current point in ccw direction
• First point hit is on the hull
• Repeat
Trang 17Package Wrap (Jarvis March)
Implementation
• Compute angle between current point and all remaining points
• Pick smallest angle larger than current angle
• (N) per iteration
Trang 18How Many Points on the Hull?
Parameters
• N = number of points
• h = number of points on the hull
Package wrap running time (Nh) per iteration
How many points on hull?
Trang 19Graham Scan: Example
Graham scan
• Choose point p with smallest y-coordinate
• Sort points by polar angle with p to get simple polygon
• Consider points in order, and discard those that
would create a clockwise turn
p
Trang 20Graham Scan: Example
Implementation
• Input: p[1] , p[2] , …, p[N] are points
• Output: M and rearrangement so that p[1] , , p[M] is convex hull
// preprocess so that p[1] has smallest y-coordinate // sort by angle with p[1]
points[0] = points[N]; // sentinel int M = 2;
for (int i = 3; i <= N; i++) {
while (Point.ccw(p[M-1], p[M], p[i]) <= 0) M ;
M++;
swap(points, M, i); discard points that would create clockwise turn
Trang 21Quick Elimination
Quick elimination
• Choose a quadrilateral Q or rectangle R with 4 points as corners
• Any point inside cannot be on hull
4 ccw tests for quadrilateral
4 comparisons for rectangle
Three-phase algorithm
• Pass through all points to compute R
• Eliminate points inside R
• Find convex hull of remaining points
In practice
can eliminate almost all points in linear time
Q
these points eliminated
R
Trang 22Convex Hull Algorithms Costs Summary
Package wrap algorithm
Trang 23Convex Hull: Lower Bound
Models of computation
• Comparison based: compare coordinates
(impossible to compute convex hull in this model of computation)
• Quadratic decision tree model: compute any quadratic function
of the coordinates and compare against 0
Theorem [Andy Yao, 1981] In quadratic decision tree model,
any convex hull algorithm requires (N log N) ops
higher degree polynomial tests don't help either [Ben-Or, 1983] even if hull points are not required to be
(a.x < b.x) || ((a.x == b.x) && (a.y < b.y)))
(a.x*b.y - a.y*b.x + a.y*c.x - a.x*c.y + b.x*c.y - c.x*b.y) < 0
Trang 24primitive operations
Trang 25Closest pair problem
Given: N points in the plane
Goal: Find a pair with smallest Euclidean distance between them
Fundamental geometric primitive
• Graphics, computer vision, geographic information systems,
molecular modeling, air traffic control
• Special case of nearest neighbor, Euclidean MST, Voronoi
Brute force
Check all pairs of points p and q with (N2) distance calculations
1-D version O(N log N) easy if points are on a line
Degeneracies complicate solutions
[ assumption for lecture: no two points have same x coordinate]
as usual for geometric algs fast closest pair inspired fast algorithms for these problems
Trang 26Closest Pair of Points
Algorithm
L
Trang 27Closest Pair of Points
Algorithm
• Divide: draw vertical line L so that roughly N points on each side
12
21L
Trang 28Closest Pair of Points
Algorithm
• Divide: draw vertical line L so that roughly N points on each side
• Conquer: find closest pair in each side recursively
• Return best of 3 solutions
218
L
seems like (N 2 )
Trang 29Closest Pair of Points
Find closest pair with one point in each side, assuming that distance <
12
21
= min(12, 21)
L
Trang 30Closest Pair of Points
Find closest pair with one point in each side, assuming that distance <
• Observation: only need to consider points within of line L
21L
Trang 31Closest Pair of Points
Find closest pair with one point in each side, assuming that distance <
• Observation: only need to consider points within of line L
• Sort points in 2-strip by their y coordinate
Trang 32Closest Pair of Points
Find closest pair with one point in each side, assuming that distance <
• Observation: only need to consider points within of line L
• Sort points in 2-strip by their y coordinate
• Only check distances of those within 11 positions in sorted list!
21
6
Trang 33Closest Pair of Points
Def Let si be the point in the 2-strip, with
the ith smallest y-coordinate
Claim If |i – j| 12, then the
distance between si and sj is at least
Pf
• No two points lie in same -by- box
• Two points at least 2 rows apart
i
j
Trang 34Closest Pair Algorithm
Closest-Pair(p 1 , …, p n )
{
Compute separation line L such that half the points
are on one side and half on the other side.
1 = Closest-Pair(left half)
2 = Closest-Pair(right half)
= min(1 , 2 )
Delete all points further than from separation line L
Sort remaining points by y-coordinate.
Scan points in y-order and compare distance between
O(N log N) 2T(N / 2)
O(N) O(N log N) O(N)
Trang 35Closest Pair of Points: Analysis
Algorithm gives upper bound on running time
Recurrence
Solution
Upper bound Can be improved to O(N log N)
Lower bound In quadratic decision tree model, any algorithm for
closest pair requires (N log N) steps
avoid sorting by y-coordinate from scratch
T(N) 2T(N/2) + O(N log N) T(N) = O(N (log N)2 )
Trang 36primitive operations
Trang 371854 Cholera Outbreak, Golden Square, London
Life-or-death question:
Given a new cholera patient p, which water pump is closest to p’s home?
Trang 38Nearest-neighbor problem
Input
N Euclidean points
Nearest neighbor problem
Given a query point p, which one of original N points is closest to p?
Brute Algorithm Goal
1 Preprocess
N log N
N Query
log N
Trang 39Voronoi Diagram
Voronoi region Set of all points closest to a given point
Voronoi diagram Planar subdivision delineating Voronoi regions
Fact Voronoi edges are perpendicular bisector segments
Voronoi of 2 points Voronoi of 3 points
Trang 40Voronoi Diagram
Voronoi region Set of all points closest to a given point
Voronoi diagram Planar subdivision delineating Voronoi regions
Fact Voronoi edges are perpendicular bisector segments
Trang 41Voronoi Diagram: Applications
Toxic waste dump problem N homes in a region Where to locate
nuclear power plant so that it is far away from any home as possible?
Path planning Circular robot must navigate through environment with
N obstacle points How to minimize risk of bumping into a obstacle?
Reference: J O'Rourke Computational Geometry.
looking for largest empty circle (center must lie on Voronoi diagram)
robot should stay on Voronoi diagram of obstacles
Trang 42Voronoi Diagram: More Applications
Anthropology Identify influence of clans and chiefdoms on geographic regions.
Astronomy Identify clusters of stars and clusters of galaxies.
Biology, Ecology, Forestry Model and analyze plant competition
Cartography Piece together satellite photographs into large "mosaic" maps.
Crystallography Study Wigner-Setiz regions of metallic sodium.
Data visualization Nearest neighbor interpolation of 2D data.
Finite elements Generating finite element meshes which avoid small angles.
Fluid dynamics Vortex methods for inviscid incompressible 2D fluid flow.
Geology Estimation of ore reserves in a deposit using info from bore holes.
Geo-scientific modeling Reconstruct 3D geometric figures from points.
Marketing Model market of US metro area at individual retail store level.
Metallurgy Modeling "grain growth" in metal films.
Trang 43Scientific Rediscoveries
1644 Year 1850
Descartes Discoverer Dirichlet
Astronomy Discipline Math
"Heavens"
Name
Dirichlet tesselation 1908
1909
Voronoi Boldyrev
Math Geology
Voronoi diagram area of influence polygons 1911
1927
Thiessen Niggli
Meteorology Crystallography
Thiessen polygons domains of action 1933
1958
Wigner-Seitz Frank-Casper
Physics Physics
Wigner-Seitz regions atom domains 1965
1966
Brown Mead
Ecology Ecology
area of potentially available
plant polygons
Trang 44Adding a Point to Voronoi Diagram
Challenge Compute Voronoi
Basis for incremental algorithms: region containing point gives points
to check to compute new Voronoi region boundaries
Trang 45Randomized Incremental Voronoi Algorithm
Add points (in random order)
• Find region containing point
• Update neighbor regions, create region for new point
• Running time: O(N log N) on average
using Voronoi itself
Trang 46Sweep-line Voronoi algorithm
Presort points on x-coordinate
Eliminates point location problem
Trang 47Fortune's Algorithm
Industrial-strength Voronoi implementation
• Sweep-line algorithm
• O(N log N) time
• properly handles degeneracies
• properly handles floating-point computations
Try it yourself!
Interface between numeric and combinatorial computing
• exact calculations impossible (using floating point)
Brute Algorithm Goal
1 Preprocess
N log N
N Query
log N
http://www.diku.dk/hjemmesider/studerende/duff/Fortune/ best animation on the web
student Java project
“lost” the source decompiled source available
Trang 48Fortune’s algorithm in action
Trang 49Fortune’s algorithm in action
Trang 50Fortune’s algorithm in action
Trang 51Fortune’s algorithm in action
Trang 52Fortune’s algorithm in action
Trang 53Geometric-algorithm challenge
Problem: Draw a Voronoi diagram
Goals: lecture slide, book diagram
How difficult?
1) any COS126 student could do it
2) need to be a typical diligent COS226 student
3) hire an expert
4) intractable
5) no one knows
6) impossible
Trang 54Geometric-algorithm challenge
Problem: Draw a Voronoi diagram
Goals: lecture slide, book diagram
How difficult?
1) any COS126 student could do it
2) need to be a typical diligent COS226 student
Trang 55Discretized Voronoi diagram
Observation: to draw a Voronoi diagram, only need an approximation
Ex: Assign a color to each pixel corresponding to its nearest neighbor
An effective approximate solution to the nearest neighbor problem
Brute Algorithm Fortune
1 Preprocess
N log N
N Query log N
P pixels
complicated alg (stay tuned)
Trang 56public class Voronoi implements DrawListener {
private int SIZE = 512;
private Point[][] nearest = new Point[SIZE][SIZE];
private InteractiveDraw draw;
public Voronoi() {
draw = new InteractiveDraw(SIZE, SIZE);
draw.setScale(0, 0, SIZE, SIZE);
draw.addListener(this);
draw.show();
} public void keyTyped(char c) { }
Discretized Voronoi: Java Implementation
InteractiveDraw Version of StdDraw that supports user interaction
DrawListener Interface to support InteractiveDraw callbacks
send callbacks to Voronoi
Trang 57Discretized Voronoi: Java Implementation
public void mousePressed(double x, double y)
{
Point p = new Point(x, y);
draw.setColorRandom();
for (int i = 0; i < SIZE; i++)
for (int j = 0; j < SIZE; j++)
Trang 58Hoff's algorithm Align apex of a right circular cone with sites.
• Minimum envelope of cone intersections projected onto plane is
the Voronoi diagram
• View cones in different colors render Voronoi
Voronoi alternative 2: Hoff's algorithm
Trang 59Delaunay Triangulation
Delaunay triangulation Triangulation of N points such that no point
is inside circumcircle of any other triangle
Fact 0 It exists and is unique (assuming no degeneracy)
Fact 1 Dual of Voronoi (connect adjacent points in Voronoi diagram)
Fact 2 No edges cross O(N) edges
Fact 3 Maximizes the minimum angle for all triangular elements
Fact 4 Boundary of Delaunay triangulation is convex hull
Fact 5 Shortest Delaunay edge connects closest pair of points
Delaunay Voronoi
Trang 60Euclidean MST
Euclidean MST Given N points in the plane, find MST connecting them
• Distances between point pairs are Euclidean distances