Presentation is loading. Please wait.

Presentation is loading. Please wait.

ACM Schedule… 2/23 Geometry problems 3/2 Lab problems (geometry!) 3/30 "Mock" competition and lab session (4:15) 3/9 Final algorithm discussion… 3/16 [Spring.

Similar presentations


Presentation on theme: "ACM Schedule… 2/23 Geometry problems 3/2 Lab problems (geometry!) 3/30 "Mock" competition and lab session (4:15) 3/9 Final algorithm discussion… 3/16 [Spring."— Presentation transcript:

1 ACM Schedule… 2/23 Geometry problems 3/2 Lab problems (geometry!) 3/30 "Mock" competition and lab session (4:15) 3/9 Final algorithm discussion… 3/16 [Spring break] 3/23 [Extended programming practicum break]

2 Current Jotto standings… SophsJrsSrsProfs Chalk 1Chalk 0Chalk 1 Quine 1 Quine 2 aught 2aught 1 aught 2 jotto 2 jotto 0jotto 1 ?? 2 ?? 0?? 1

3 Last time: the Muddy Problem Input Output 4 *.*..*** ***...*. # of rows and columns The environment * 4 The smallest number of boards needed to cover all the muddy patches! represents a muddy patch. represents a grassy patch

4 Turning direction Python code for CCW turning 1 2 3 def turningDirection( pt1, pt2, pt3 ): """ returns 1 if pt1 -> pt2 -> pt3 is a turn returns -1 if pt1 -> pt2 -> pt3 is a turn returns 0 if they are collinear """ x1, y1 = pt1; x2, y2 = pt2; x3, y3 = pt3; # the signed magnitude of the cross product CP = (x2-x1)*(y3-y1)-(y2-y1)*(x3-x1) if CP > 0: return 1 if CP < 0: return -1 return 0 Bertrand Planes' Life Clock (10,10) (20,20) (15,30) 3' (40,20)

5 Geometric algorithms Line Segment intersection… (x1,y1) (x2,y2) (xB,yB) (xA,yA) rsrs xA - x1 yA - y1 dx1 dxA dy1 dyA = (xi,yi) All points on this line are (x1,y1) + r(x2-x1,y2-y1) (xA,yA) + s(xB-xA,yB-yA) All points on this line are dx1dy1 dxAdyA Solving these equations finds the intersection via r and s.

6 Geometric algorithms Line Segment intersection… pt1 = (10, 10) pt2 = (20,20) pt3 = (10, 20) pt4 = (20, 10) pt5 = (40, 20) Line segment #1 runs from (10, 10) to (20, 20) Line segment #2 runs from (10, 20) to (20, 10) Intersection result = (15.0, 15.0, 1, 0.5, 0.5) Line segment #1 runs from (10, 10) to (10, 20) Line segment #2 runs from (20, 20) to (20, 10) Intersection result = (0, 0, 0, 0, 0) Line segment #1 runs from (10, 10) to (20, 20) Line segment #2 runs from (20, 10) to (40, 20) Intersection result = (0.0, 0.0, 1, -1.0, -1.0)

7 Geometric algorithms Java has its advantages! Line2d.linesIntersect(x1, y1, x2, y2, x3, y3, x4, y4); Polygon().contains(x,y); Line2D Polygon

8 This week's Problems… read over these problems… rank them in "difficulty" order what geometric computation is needed?

9 The EE Problem Input Output # of test cases Data Set 1: 10.81 3.42 0.00 The strength of the signal at each test location == 1.0/(closest visible router ** 2) # of room vertices, # of routers, # of test points vertices of the room Locations of the routers test locations routers example input Locations of the test points + + + A B C C A B

10 1 4 0.1 0.0 0.9 1.0 0.05 1.1 -0.1 -0.1 -0.1 0.8 0 1.1 0.5 0.7 0 0.3 0.5 0 0.3 The IE Problem Input Output # of test cases Data Set 1: 2.32 The minimum total cost to supply all stores from some warehouse(s). # of stores and possible warehouse locations (x,y) location of stores (x,y,price) location of warehouses and their cost to build in Mega$ S S S S W W WW $.3 $.5 $.8 delivery cost = Euclidean distance Industrial Engineering

11 The Superpaint Problem Input Output 4 3 2 1 2 3 4 1 one side of the square lattice Locations of the cows (row,col) 5 The number of locations that "attack" all occupied squares with a Queen's move Row 1.. C... C... number of occupied squares Row 2 Row 3 Row 4 Col 1 Col 2 Col 3 Col 4 Row 1.. B.. B.. B. Row 2 Row 3 Row 4 Col 1 Col 2 Col 3 Col 4

12 The Safepens Problem Input Output 4 1 1 16 16 6 6 11 13 7 7 9 12 3 3 10 5 Number of rectangular fences The fences! (lower left and upper right vertices) 3 1 The deepest nesting level The number of pens at that level (1,1) (16,16) (6,6) (11,13) (7,7) (9,12) (3,3) (10,5)

13 http://en.wikipedia.org/wiki/Bentley–Ottmann_algorithm "Sweepline algorithm"

14 http://en.wikipedia.org/wiki/Bentley–Ottmann_algorithm A B C D Priority Queue Binary Search Tree

15 The Screens Problem Input Output # of test cases Vertices of the room Data Set 1: 90.00% The total fraction of the presentation you can observe (all screens' contributions!) # of projector screens # of room vertices (x,y) location of "you" Line segments of the screens room oriented screens

16 Current Jotto standings… SophsJrsSrsProfs Chalk 1Chalk 0Chalk 1 Quine 1 Quine 2 aught 2aught 1 aught 2 jotto 2 jotto 0jotto 1 ?? 2 ?? 0?? 1

17 Current Jotto standings… SophsJrsSrsOthers icily 0 icily 1 strep 2 strep 1 spork 1spork 3spork 0 spend 2 peeps 2peeps 1peeps 2peeps 1 furls 1 furls 0furls 1 Ghost 2Ghost 1 Ghost 0 Tanks 2Tanks 1Tanks 2Tanks 1 Gecko 2Gecko 1

18 Convex Hull the segments surrounding the exterior of a point set. First approach: brute force?

19 The Graham Scan "first algorithm in computational geometry" 1) Find extremal point, P[0] 2) Sort all other points in terms of their angles with P[0] - use atan2 ! 3) the sorted list is P[i] 4) push P[0] and P[1] onto S a stack (e.g., python list) i = 2 while i < N: A = the top of stack S B = the second point on S if (P[i] is to the left of B to A): push P[i] onto stack S i = i+1 else: pop stack S and discard the top 5) run the scan:

20 Graham Scan: java Stack grahamScan(Coordinate[] c) { Point p; Stack ps = new Stack(); ps.push(c[0]); ps.push(c[1]); ps.push(c[2]); for (int i = 3; i < c.length; i++) { p = ps.pop(); while (computeOrientation(ps.peek(), p, c[i]) > 0)) { ps.pop(); } ps.push(p); ps.push(c[i]); } ps.push(c[0]); return ps; }

21 Convex Hull #2 convex hull Jarvis’s March - shown here Graham’s Scan - see previous

22 Jarvis March convex hull start here draw a line to this point (why?) Jarvis’s March - shown here Graham’s Scan - see previous

23 Jarvis March convex hull start here draw a line to this point draw a line to the point with the LEAST relative angle (  )  Jarvis’s March - shown here Graham’s Scan - see previous

24 Jarvis March convex hull start here draw a line to the point with the LEAST relative angle (  ) Jarvis’s March - shown here Graham’s Scan - see previous

25 Jarvis March convex hull draw a line to the point with the LEAST relative angle (  ) but bigger than the previous angle!  Jarvis’s March - shown here Graham’s Scan - see previous

26 Jarvis March convex hull continue until you return… Jarvis’s March - shown here Graham’s Scan - see previous

27 "QuickHull"

28 choose L and R pts draw chord

29 "QuickHull" choose L and R pts draw chord assign sides find farthest point on each side create triangle recurse!

30 "QuickHull" choose L and R pts draw chord assign sides find farthest point on each side create triangle recurse! assign sides

31 Java's Polygon class contains constructors intersects (a rect) getBounds (get a bbox) uses the WIND_EVEN_ODD rule

32 The Sweepline Algorithm choose L and R pts draw chord assign sides find farthest point on each side create triangle recurse! assign sides

33 The Safepens Problem Input Output 4 1 1 16 16 6 6 11 13 7 7 9 12 3 3 10 5 Number of rectangular fences The fences! (lower left and upper right vertices) 3 1 The deepest nesting level The number of pens at that level (1,1) (16,16) (6,6) (11,13) (7,7) (9,12) (3,3) (10,5)

34 The Superpaint Problem Input Output 4 3 2 1 2 3 4 1 one side of the square lattice Locations of the cows (row,col) 5 The number of locations that "attack" all occupied squares with a Queen's move Row 1.. C... C... number of occupied squares Row 2 Row 3 Row 4 Col 1 Col 2 Col 3 Col 4 Row 1.. B.. B.. B. Row 2 Row 3 Row 4 Col 1 Col 2 Col 3 Col 4

35 The Screens Problem Input Output # of test cases Vertices of the room Data Set 1: 90.00% The total fraction of the presentation you can observe (all screens' contributions!) # of projector screens # of room vertices (x,y) location of "you" Line segments of the screens room oriented screens

36 The EE Problem Input Output # of test cases Data Set 1: 10.81 3.42 0.00 The strength of the signal at each test location == 1.0/(closest visible router ** 2) # of room vertices, # of routers, # of test points vertices of the room Locations of the routers test locations routers example input Locations of the test points + + + A B C C A B

37 1 4 0.1 0.0 0.9 1.0 0.05 1.1 -0.1 -0.1 -0.1 0.8 0 1.1 0.5 0.7 0 0.3 0.5 0 0.3 The IE Problem Input Output # of test cases Data Set 1: 2.32 The minimum total cost to supply all stores from some warehouse(s). # of stores and possible warehouse locations (x,y) location of stores (x,y,price) location of warehouses and their cost to build in Mega$ S S S S W W WW $.3 $.5 $.8 delivery cost = Euclidean distance Industrial Engineering

38 Convex Hull Problems… read over these problems… which ones are convex hull? which ones could be convex hull? and the rest?

39 Current Jotto standings… SophsJrsSrsOthers icily 0 icily 1 strep 2 strep 1 spork 1spork 3spork 0 spend 2 peeps 2peeps 1peeps 2peeps 1 furls 1 furls 0furls 1 Ghost 2Ghost 1 Ghost 0 Tanks 2Tanks 1Tanks 2Tanks 1 Gecko 2Gecko 1 Win! Quine 5

40 What are these? public int mystery1(Point A, Point B, Point P) { int cp1 = (B.x-A.x)*(P.y-A.y) - (B.y-A.y)*(P.x-A.x); if (cp1>0) return 1; else return -1; } public int mystery2(Point A, Point B, Point C) { int ABx = B.x-A.x; int ABy = B.y-A.y; int num = ABx*(A.y-C.y)-ABy*(A.x-C.x); if (num < 0) num = -num; return num; }

41 What are these? public int mystery1(Point A, Point B, Point P) { int cp1 = (B.x-A.x)*(P.y-A.y) - (B.y-A.y)*(P.x-A.x); if (cp1>0) return 1; else return -1; } public int mystery2(Point A, Point B, Point C) { int ABx = B.x-A.x; int ABy = B.y-A.y; int num = ABx*(A.y-C.y)-ABy*(A.x-C.x); if (num < 0) num = -num; return num; } Hints: sortOfDistance whichSide

42


Download ppt "ACM Schedule… 2/23 Geometry problems 3/2 Lab problems (geometry!) 3/30 "Mock" competition and lab session (4:15) 3/9 Final algorithm discussion… 3/16 [Spring."

Similar presentations


Ads by Google