Presentation is loading. Please wait.

Presentation is loading. Please wait.

Convex hull smallest convex set containing all the points.

Similar presentations


Presentation on theme: "Convex hull smallest convex set containing all the points."— Presentation transcript:

1 Convex hull smallest convex set containing all the points

2 Convex hull smallest convex set containing all the points

3 Convex hull smallest convex set containing all the points representation = circular doubly-linked list of points on the boundary of the convex hull 1 2 3 4 1.next = 2 = 3.prev 2.next = 3 = 4.prev 3.next = 4 = 1.prev 4.next = 1 = 2.prev start = 1

4 Jarvis march find the left-most point (assume no 3 points colinear) s

5 Jarvis march find the point that appears most to the right looking from s (assume no 3 points colinear) s

6 Jarvis march (assume no 3 points colinear) s p find the point that appears most to the right looking from p

7 Jarvis march (assume no 3 points colinear)

8 Jarvis march (assume no 3 points colinear)

9 Jarvis march (assume no 3 points colinear) s  point with smallest x-coord p  s repeat 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  q until p = s

10 Jarvis march (assume no 3 points colinear) Running time = O(n.h)

11 Graham scan (assume no 3 points colinear) start with a simple polygon containing all the points fix it in time O(n) O(n log n) homework

12 Graham scan (assume no 3 points colinear)

13 Graham scan (assume no 3 points colinear)

14 Graham scan (assume no 3 points colinear)

15 Graham scan (assume no 3 points colinear)

16 Graham scan (assume no 3 points colinear)

17 Graham scan (assume no 3 points colinear)

18 Graham scan (assume no 3 points colinear) A  start B  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)

19 Closest pair of points

20

21 2T(n/2)  min(left,right)

22 Closest pair of points 2T(n/2)  min(left,right) 

23 Closest pair of points 2T(n/2)  min(left,right)   

24 Closest pair of points X  sort the points by x-coordinate Y  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 S 1 and S 2 by the X-coord  1  Closest-pair(S 1 ),  2  Closest-pair(S 2 )  min(  1,  2 ) for points x in according to Y check 12 points around x, update  if a closer pair found

25 Smallest enclosing disc

26

27 The smallest enclosing disc is unique. Claim #1:

28 Smallest enclosing disc The smallest enclosing disc is unique. Claim #1:

29 Smallest enclosing disc SED(S) pick a random point x  S (c,r)  SED(S-{x}) if x  Disc(c,r) then return (c,r) else return SED-with-point(S,x)

30 Smallest enclosing disc SED(S) pick a random point x  S (c,r)  SED(S-{x}) if x  Disc(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 x  Disc(c,r) then return (c,r) else return SED-with-2-points(S,y,x)

31 Smallest enclosing disc SED(S) pick a random point x  S (c,r)  SED(S-{x}) if x  Disc(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 x  Disc(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 x  Disc(c,r) then return (c,r) else return SED-with-2-points(S,y,x)

32 Running time ? SED(S) pick a random point x  S (c,r)  SED(S-{x}) if x  Disc(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 x  Disc(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 x  Disc(c,r) then return (c,r) else return SED-with-2-points(S,y,x)

33 Running time ? SED(S) pick a random point x  S (c,r)  SED(S-{x}) if x  Disc(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 x  Disc(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 x  Disc(c,r) then return (c,r) else return SED-with-2-points(S,y,x) O(n)

34 Running time ? SED(S) pick a random point x  S (c,r)  SED(S-{x}) if x  Disc(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 x  Disc(c,r) then return (c,r) else return SED-with-2-points(S,y,x) T(n) = T(n-1) + 2 n SED-with-2-points T(n) = O(n) O(n)

35 Running time ? SED(S) pick a random point x  S (c,r)  SED(S-{x}) if x  Disc(c,r) then return (c,r) else return SED-with-point(S,x) T(n) = T(n-1) + 2 n SED-with-point T(n) = O(n) O(n)

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

37 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})

38 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

39 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


Download ppt "Convex hull smallest convex set containing all the points."

Similar presentations


Ads by Google