Download presentation
Presentation is loading. Please wait.
Published byJeffry Ellis Modified over 9 years ago
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
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
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
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.