1. Trang chủ
  2. » Ngoại Ngữ

Giáo trình Phân tích thiết kế Giải thuật nâng cao Geometric Algorithms

62 472 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 62
Dung lượng 1,28 MB

Nội dung

• 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 3

 primitive operations

Trang 4

Geometric 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 5

Warning: 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 6

Polygon 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 7

public 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 8

CCW 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 9

Implementing 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 10

Immutable 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 11

Intersect: 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 12

 primitive operations

Trang 13

Convex 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 14

Mechanical Solution

Mechanical algorithm Hammer nails perpendicular to plane;

stretch elastic rubber band around points

http://www.dfanning.com/math_tips/convexhull_1.gif

Trang 15

For 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 16

Package 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 17

Package Wrap (Jarvis March)

Implementation

• Compute angle between current point and all remaining points

• Pick smallest angle larger than current angle

• (N) per iteration

Trang 18

How 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 19

Graham 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 20

Graham 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 21

Quick 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 22

Convex Hull Algorithms Costs Summary

Package wrap algorithm

Trang 23

Convex 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 24

 primitive operations

Trang 25

Closest 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 26

Closest Pair of Points

Algorithm

L

Trang 27

Closest Pair of Points

Algorithm

• Divide: draw vertical line L so that roughly N points on each side

12

21L

Trang 28

Closest 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 29

Closest Pair of Points

Find closest pair with one point in each side, assuming that distance < 

12

21

 = min(12, 21)

L

Trang 30

Closest 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 31

Closest 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 32

Closest 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 33

Closest 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 34

Closest 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 35

Closest 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 36

 primitive operations

Trang 37

1854 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 38

Nearest-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 39

Voronoi 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 40

Voronoi 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 41

Voronoi 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 42

Voronoi 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 43

Scientific 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 44

Adding 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 45

Randomized 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 46

Sweep-line Voronoi algorithm

Presort points on x-coordinate

Eliminates point location problem

Trang 47

Fortune'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 48

Fortune’s algorithm in action

Trang 49

Fortune’s algorithm in action

Trang 50

Fortune’s algorithm in action

Trang 51

Fortune’s algorithm in action

Trang 52

Fortune’s algorithm in action

Trang 53

Geometric-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 54

Geometric-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 55

Discretized 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 56

public 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 57

Discretized 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 58

Hoff'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 59

Delaunay 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 60

Euclidean MST

Euclidean MST Given N points in the plane, find MST connecting them

• Distances between point pairs are Euclidean distances

Ngày đăng: 23/03/2015, 07:42

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w