1 Today’s Material Computational Geometry Problems –Closest Pair Problem –Convex Hull...

Post on 17-Dec-2015

223 views 0 download

Transcript of 1 Today’s Material Computational Geometry Problems –Closest Pair Problem –Convex Hull...

1

Today’s Material

• Computational Geometry Problems– Closest Pair Problem– Convex Hull

• Jarvis’s March, Graham’s scan

– Farthest Point Problem

2

Closest pair problem• Given a set of points on the plane, find the

two points whose distance from each other is the maximum

– What’s the brute-force solution?– An efficient divide-and-conquer solution?

3

Convex Hull (CH)• Convex Hull (CH) of a set Q of points is the

smallest convex polygon P, for which each point in Q is either on the boundary of P or in its interior

p0

p1

p2

p3p4

p5

p6p7p8

p9

p10

p11p12

4

Convex Hull – Jarvis’s March

p0

p1

p2

p3p4

p5

p6p7p8

p9

p10

p11p12

• Take the horizontal line going through p0, and gift wrap it around the remaining points by turning the wrap to the left.

• The first point touched is the next point on CH• In this example, it is p1

5

Convex Hull – Jarvis’s March

p0

p1

p2

p3p4

p5

p6p7p8

p9

p10

p11p12

• Continue gift-wrapping from p1. Next point is p3

6

Convex Hull – Jarvis’s March

p0

p1

p2

p3p4

p5

p6p7p8

p9

p10

p11p12

• Continue gift-wrapping from p3. Next point is p10

7

Convex Hull – Jarvis’s March

p0

p1

p2

p3p4

p5

p6p7p8

p9

p10

p11p12

• Continue gift-wrapping from p10. Next point is p12

8

Convex Hull – Jarvis’s March

p0

p1

p2

p3p4

p5

p6p7p8

p9

p10

p11p12

• Continue gift-wrapping from p12. Next point is p0

9

Convex Hull – Jarvis’s March

p0

p1

p2

p3p4

p5

p6p7p8

p9

p10

p11p12

• Continue gift-wrapping from p12. Next point is p0. We are done now.

10

Jarvis’s March – Running Time• O(n*h), where h is the number of points on

the convex hull– If h is O(logn), then we get a running time of

O(nlogn)– If h is O(n), then we a quadratic running time of

O(n2)– Can we make sure that the running time is

always O(nlogn)?• Graham’s scan

11

Graham’s Scan• Let p0 be the point in Q with the min y-coordinate or the leftmost such point in the case of a

tie

• Let <p1, p2, .., pm> be the remaining points in Q sorted by polar angle in counter-clockwise order around p0. If more than one point has the same angle, remove all but the one that is farthest from p0

p0

p1

p2

p3

p4

p5

p6p7p8

p9

p10

p11p12

12

Graham’s Scan• Maintain a stack S of candidate points• Each point of the input set Q is pushed once

onto the stack, and the points that are not vertices of CH(Q) are eventually popped off the stack

• When the algorithm terminates, S contains exactly the vertices of CH(Q) in counter-clockwise order of their appearance on the boundary

13

Graham’s Scan - Algorithm Push(p0, S);

Push(p1, S);

Push(p2, S);

for i=3 to m do while the angle formed by points NEXT_TO_TOP(S), TOP(S) and pi

makes a non-left turn do Pop(S);

endwhile Push(pi, S);

endfor

return S;

14

Convex Hull – Initial State

p0

p1

p2

p3

p4

p5

p6p7p8

p9

p10

p11p12

Stack

p0

p1

p2

15

Convex Hull – p1p2p3

p0

p1

p2

p3

p4

p5

p6p7p8

p9

p10

p11p12

Stack

p0

p1

p2

p1p2p3 is a right turn. Pop p2, push p3

16

Convex Hull – p1p3p4

p0

p1

p2

p3p4

p5

p6p7p8

p9

p10

p11p12

Stack

p0

p1

p3

p1p3p4 is a left turn. Push p4

17

Convex Hull – p3p4p5

p0

p1

p2

p3p4

p5

p6p7p8

p9

p10

p11p12

Stack

p0

p1

p3

p4

p3p4p5 is a right turn. Pop p4, push p5

18

Convex Hull – p3p5p6

p0

p1

p2

p3p4

p5

p6p7p8

p9

p10

p11p12

Stack

p0

p1

p3

p5

p3p5p6 is a left turn. Push p6

19

Convex Hull – p5p6p7

p0

p1

p2

p3p4

p5

p6p7p8

p9

p10

p11p12

Stack

p0

p1

p3

p5

p5p6p7 is a left turn. Push p7

p6

20

Convex Hull – p6p7p8

p0

p1

p2

p3p4

p5

p6p7p8

p9

p10

p11p12

Stack

p0

p1

p3

p5

p6p7p8 is a left turn. Push p8

p6

p7

21

Convex Hull – p7p8p9

p0

p1

p2

p3p4

p5

p6p7

p8

p9

p10

p11p12

Stack

p0

p1

p3

p5

p7p8p9 is a right turn. Pop p8

p6

p7

p8

22

Convex Hull – p6p7p9

p0

p1

p2

p3p4

p5

p6p7

p8

p9

p10

p11p12

Stack

p0

p1

p3

p5

p6p7p9 is a right turn. Pop p7, push p9

p6

p7

23

Convex Hull – p6p9p10

p0

p1

p2

p3p4

p5

p6

p7p8

p9

p10

p11p12

Stack

p0

p1

p3

p5

p6p9p10 is a right turn. Pop p9, p6, p5 and p6, push p10

p6

p9

24

Convex Hull – p3p10p11

p0

p1

p2

p3p4

p5

p6p7p8

p9

p10

p11p12

Stack

p0

p1

p3

p10

p3p10p11 is a left turn. Push p11

25

Convex Hull – p10p11p12

p0

p1

p2

p3p4

p5

p6p7p8

p9

p10

p11p12

Stack

p0

p1

p3

p10

p10p11p12 is a right turn. Pop p11, push p12

p11

26

Convex Hull – Final

p0

p1

p2

p3p4

p5

p6p7p8

p9

p10

p11p12

Stack

p0

p1

p3

p10

p12

27

Graham’s Scan – Running Time• Computing and sorting the polar angles –

O(nlogn)• The remaining scan – O(n)• Total: O(nlogn)

28

Farthest pair problem• Given a set of points on the plane, find the

two points whose distance from each other is the maximum

– It is shown than the farthest points must be on the Convex Hull of the points

– The idea is to compute the convex hull in O(nlogn), and then find the pair that is farthest, which can be done in O(n)

– So, we have a total running time of O(nlogn)