39
Convex hull smallest convex se containing all the points

Convex hull smallest convex set containing all the points

Embed Size (px)

Citation preview

Page 1: Convex hull smallest convex set containing all the points

Convex hull smallest convex setcontaining all the points

Page 2: Convex hull smallest convex set containing all the points

Convex hull smallest convex setcontaining all the points

Page 3: Convex hull smallest convex set containing all the points

Convex hull smallest convex setcontaining all the points

representation = circular doubly-linked list of pointson the boundary of the convex hull

1

2

3

4

1.next = 2 = 3.prev2.next = 3 = 4.prev3.next = 4 = 1.prev4.next = 1 = 2.prev

start = 1

Page 4: Convex hull smallest convex set containing all the points

Jarvis march

find the left-most point

(assume no 3 points colinear)

s

Page 5: Convex hull smallest convex set containing all the points

Jarvis march

find the point that appears most to the right looking from s

(assume no 3 points colinear)

s

Page 6: Convex hull smallest convex set containing all the points

Jarvis march (assume no 3 points colinear)

s

p

find the point that appears most to the right looking from p

Page 7: Convex hull smallest convex set containing all the points

Jarvis march (assume no 3 points colinear)

Page 8: Convex hull smallest convex set containing all the points

Jarvis march (assume no 3 points colinear)

Page 9: Convex hull smallest convex set containing all the points

Jarvis march (assume no 3 points colinear)

s point with smallest x-coordp srepeat PRINT(p) q point other than p for i from 1 to n do if i p and point i to the right of line (p,q) then q i p quntil p = s

Page 10: Convex hull smallest convex set containing all the points

Jarvis march (assume no 3 points colinear)

Running time = O(n.h)

Page 11: Convex hull smallest convex set containing all the points

Graham scan (assume no 3 points colinear)

start with a simple polygon containing all the pointsfix it in time O(n)

O(n log n)homework

Page 12: Convex hull smallest convex set containing all the points

Graham scan (assume no 3 points colinear)

Page 13: Convex hull smallest convex set containing all the points

Graham scan (assume no 3 points colinear)

Page 14: Convex hull smallest convex set containing all the points

Graham scan (assume no 3 points colinear)

Page 15: Convex hull smallest convex set containing all the points

Graham scan (assume no 3 points colinear)

Page 16: Convex hull smallest convex set containing all the points

Graham scan (assume no 3 points colinear)

Page 17: Convex hull smallest convex set containing all the points

Graham scan (assume no 3 points colinear)

Page 18: Convex hull smallest convex set containing all the points

Graham scan (assume no 3 points colinear)

A startB next(A)C next(B)

repeat 2n times if C is to the right of AB then A.next C; C.prev A B A A prev(A) else A B B C C next(C)

Page 19: Convex hull smallest convex set containing all the points

Closest pair of points

Page 20: Convex hull smallest convex set containing all the points

Closest pair of points

Page 21: Convex hull smallest convex set containing all the points

Closest pair of points

2T(n/2) min(left,right)

Page 22: Convex hull smallest convex set containing all the points

Closest pair of points

2T(n/2) min(left,right)

Page 23: Convex hull smallest convex set containing all the points

Closest pair of points

2T(n/2) min(left,right)

Page 24: Convex hull smallest convex set containing all the points

Closest pair of points

X sort the points by x-coordinateY sort the points by y-coordinate

pre-processing

Closest-pair(S) if |S|=1 then return if |S|=2 then return the distance of the pair split S into S1 and S2 by the X-coord 1 Closest-pair(S1), 2 Closest-pair(S2) min(1,2) for points x in according to Y check 12 points around x, update if a closer pair found

Page 25: Convex hull smallest convex set containing all the points

Smallest enclosing disc

Page 26: Convex hull smallest convex set containing all the points

Smallest enclosing disc

Page 27: Convex hull smallest convex set containing all the points

Smallest enclosing disc

The smallest enclosing disc is unique.Claim #1:

Page 28: Convex hull smallest convex set containing all the points

Smallest enclosing disc

The smallest enclosing disc is unique.Claim #1:

Page 29: Convex hull smallest convex set containing all the points

Smallest enclosing disc

SED(S) pick a random point x S (c,r) SED(S-{x}) if xDisc(c,r) then return (c,r) else return SED-with-point(S,x)

Page 30: Convex hull smallest convex set containing all the points

Smallest enclosing discSED(S) pick a random point x S (c,r) SED(S-{x}) if xDisc(c,r) then return (c,r) else return SED-with-point(S,x)

SED-with-point(S,y) pick a random point x S (c,r) SED-with-point(S-{x},y) if xDisc(c,r) then return (c,r) else return SED-with-2-points(S,y,x)

Page 31: Convex hull smallest convex set containing all the points

Smallest enclosing discSED(S) pick a random point x S (c,r) SED(S-{x}) if xDisc(c,r) then return (c,r) else return SED-with-point(S,x)

SED-with-2-point(S,y,z) pick a random point x S (c,r) SED-with-2-points(S-{x},y,z) if xDisc(c,r) then return (c,r) else return circle given by x,y,z

SED-with-point(S,y) pick a random point x S (c,r) SED-with-point(S-{x},y) if xDisc(c,r) then return (c,r) else return SED-with-2-points(S,y,x)

Page 32: Convex hull smallest convex set containing all the points

Running time ?SED(S) pick a random point x S (c,r) SED(S-{x}) if xDisc(c,r) then return (c,r) else return SED-with-point(S,x)

SED-with-2-point(S,y,z) pick a random point x S (c,r) SED-with-2-points(S-{x},y,z) if xDisc(c,r) then return (c,r) else return circle given by x,y,z

SED-with-point(S,y) pick a random point x S (c,r) SED-with-point(S-{x},y) if xDisc(c,r) then return (c,r) else return SED-with-2-points(S,y,x)

Page 33: Convex hull smallest convex set containing all the points

Running time ?SED(S) pick a random point x S (c,r) SED(S-{x}) if xDisc(c,r) then return (c,r) else return SED-with-point(S,x)

SED-with-2-point(S,y,z) pick a random point x S (c,r) SED-with-2-points(S-{x},y,z) if xDisc(c,r) then return (c,r) else return circle given by x,y,z

SED-with-point(S,y) pick a random point x S (c,r) SED-with-point(S-{x},y) if xDisc(c,r) then return (c,r) else return SED-with-2-points(S,y,x)

O(n)

Page 34: Convex hull smallest convex set containing all the points

Running time ?SED(S) pick a random point x S (c,r) SED(S-{x}) if xDisc(c,r) then return (c,r) else return SED-with-point(S,x)

SED-with-point(S,y) pick a random point x S (c,r) SED-with-point(S-{x},y) if xDisc(c,r) then return (c,r) else return SED-with-2-points(S,y,x)

T(n) = T(n-1) + 2

nSED-with-2-points

T(n) = O(n)

O(n)

Page 35: Convex hull smallest convex set containing all the points

Running time ?SED(S) pick a random point x S (c,r) SED(S-{x}) if xDisc(c,r) then return (c,r) else return SED-with-point(S,x)

T(n) = T(n-1) + 2

nSED-with-point

T(n) = O(n)

O(n)

Page 36: Convex hull smallest convex set containing all the points

Smallest enclosing disc

Claim #2:

md(I,B) = smallest enclosing disc with B on the boundary and I inside

if x is inside md(I,B) then md(I {x},B) = md(I,B)

Page 37: Convex hull smallest convex set containing all the points

Smallest enclosing disc

Claim #3:

md(I,B) = smallest enclosing disc with B on the boundary and I inside

if x is outside of md(I,B) then md(I {x},B) = md(I,B {x})

Page 38: Convex hull smallest convex set containing all the points

Smallest enclosing disc

Claim #3:

md(I,B) = smallest enclosing disc with B on the boundary and I inside

if x is outside of md(I,B) then md(I {x},B) = md(I,B {x})

md(I,B) md(l {x},B)

x

Page 39: Convex hull smallest convex set containing all the points

Smallest enclosing disc

Claim #3:

md(I,B) = smallest enclosing disc with B on the boundary and I inside

if x is outside of md(I,B) then md(I {x},B) = md(I,B {x})

Claim #2:if x is inside md(I,B) then md(I {x},B) = md(I,B)

Claim #1:md(I,B) is unique