jaehyun park cs 97si stanford university june 29, 2015 · 2015-06-30 · jaehyun park cs 97si...
TRANSCRIPT
![Page 1: Jaehyun Park CS 97SI Stanford University June 29, 2015 · 2015-06-30 · Jaehyun Park CS 97SI Stanford University June 29, 2015. Outline Cross Product Convex Hull Problem Sweep Line](https://reader034.vdocuments.net/reader034/viewer/2022042021/5e78109cfb9f4625de3cb648/html5/thumbnails/1.jpg)
Shortest Path Algorithms
Jaehyun Park
CS 97SIStanford University
June 29, 2015
![Page 2: Jaehyun Park CS 97SI Stanford University June 29, 2015 · 2015-06-30 · Jaehyun Park CS 97SI Stanford University June 29, 2015. Outline Cross Product Convex Hull Problem Sweep Line](https://reader034.vdocuments.net/reader034/viewer/2022042021/5e78109cfb9f4625de3cb648/html5/thumbnails/2.jpg)
Outline
Cross Product
Convex Hull Problem
Sweep Line Algorithm
Intersecting Half-planes
Notes on Binary/Ternary Search
Cross Product 2
![Page 3: Jaehyun Park CS 97SI Stanford University June 29, 2015 · 2015-06-30 · Jaehyun Park CS 97SI Stanford University June 29, 2015. Outline Cross Product Convex Hull Problem Sweep Line](https://reader034.vdocuments.net/reader034/viewer/2022042021/5e78109cfb9f4625de3cb648/html5/thumbnails/3.jpg)
Cross Product
◮ Arguably the most important operation in 2D geometry
◮ We’ll use it all the time
◮ Applications:
– Determining the (signed) area of a triangle– Testing if three points are collinear– Determining the orientation of three points– Testing if two line segments intersect
Cross Product 3
![Page 4: Jaehyun Park CS 97SI Stanford University June 29, 2015 · 2015-06-30 · Jaehyun Park CS 97SI Stanford University June 29, 2015. Outline Cross Product Convex Hull Problem Sweep Line](https://reader034.vdocuments.net/reader034/viewer/2022042021/5e78109cfb9f4625de3cb648/html5/thumbnails/4.jpg)
Cross Product
Define ccw(A, B, C) = (B − A) × (C − A) =(bx − ax)(cy − ay) − (by − ay)(cx − ax)
Cross Product 4
![Page 5: Jaehyun Park CS 97SI Stanford University June 29, 2015 · 2015-06-30 · Jaehyun Park CS 97SI Stanford University June 29, 2015. Outline Cross Product Convex Hull Problem Sweep Line](https://reader034.vdocuments.net/reader034/viewer/2022042021/5e78109cfb9f4625de3cb648/html5/thumbnails/5.jpg)
Segment-Segment Intersection Test
◮ Given two segments AB and CD
◮ Want to determine if they intersect properly: two segmentsmeet at a single point that are strictly inside both segments
Cross Product 5
![Page 6: Jaehyun Park CS 97SI Stanford University June 29, 2015 · 2015-06-30 · Jaehyun Park CS 97SI Stanford University June 29, 2015. Outline Cross Product Convex Hull Problem Sweep Line](https://reader034.vdocuments.net/reader034/viewer/2022042021/5e78109cfb9f4625de3cb648/html5/thumbnails/6.jpg)
Segment-Segment Intersection Test
◮ Assume that the segments intersect
– From A’s point of view, looking straight to B, C and D mustlie on different sides
– Holds true for the other segment as well
◮ The intersection exists and is proper if:
– ccw(A, B, C) × ccw(A, B, D) < 0– and ccw(C, D, A) × ccw(C, D, B) < 0
Cross Product 6
![Page 7: Jaehyun Park CS 97SI Stanford University June 29, 2015 · 2015-06-30 · Jaehyun Park CS 97SI Stanford University June 29, 2015. Outline Cross Product Convex Hull Problem Sweep Line](https://reader034.vdocuments.net/reader034/viewer/2022042021/5e78109cfb9f4625de3cb648/html5/thumbnails/7.jpg)
Non-proper Intersections
◮ We need more special cases to consider!
◮ e.g., If ccw(A, B, C), ccw(A, B, D), ccw(C, D, A),ccw(C, D, B) are all zeros, then two segments are collinear
◮ Very careful implementation is required
Cross Product 7
![Page 8: Jaehyun Park CS 97SI Stanford University June 29, 2015 · 2015-06-30 · Jaehyun Park CS 97SI Stanford University June 29, 2015. Outline Cross Product Convex Hull Problem Sweep Line](https://reader034.vdocuments.net/reader034/viewer/2022042021/5e78109cfb9f4625de3cb648/html5/thumbnails/8.jpg)
Outline
Cross Product
Convex Hull Problem
Sweep Line Algorithm
Intersecting Half-planes
Notes on Binary/Ternary Search
Convex Hull Problem 8
![Page 9: Jaehyun Park CS 97SI Stanford University June 29, 2015 · 2015-06-30 · Jaehyun Park CS 97SI Stanford University June 29, 2015. Outline Cross Product Convex Hull Problem Sweep Line](https://reader034.vdocuments.net/reader034/viewer/2022042021/5e78109cfb9f4625de3cb648/html5/thumbnails/9.jpg)
Convex Hull Problem
◮ Given n points on the plane, find the smallest convex polygonthat contains all the given points
– For simplicity, assume that no three points are collinear
Convex Hull Problem 9
![Page 10: Jaehyun Park CS 97SI Stanford University June 29, 2015 · 2015-06-30 · Jaehyun Park CS 97SI Stanford University June 29, 2015. Outline Cross Product Convex Hull Problem Sweep Line](https://reader034.vdocuments.net/reader034/viewer/2022042021/5e78109cfb9f4625de3cb648/html5/thumbnails/10.jpg)
Simple Algorithm
◮ AB is an edge of the convex hull iff ccw(A, B, C) have thesame sign for all other points C
– This gives us a simple algorithm
◮ For each A and B:– If ccw(A, B, C) > 0 for all C 6= A, B:
◮ Record the edge A → B
◮ Walk along the recorded edges to recover the convex hull
Convex Hull Problem 10
![Page 11: Jaehyun Park CS 97SI Stanford University June 29, 2015 · 2015-06-30 · Jaehyun Park CS 97SI Stanford University June 29, 2015. Outline Cross Product Convex Hull Problem Sweep Line](https://reader034.vdocuments.net/reader034/viewer/2022042021/5e78109cfb9f4625de3cb648/html5/thumbnails/11.jpg)
Faster Algorithm: Graham Scan
◮ We know that the leftmost given point has to be in theconvex hull
– We assume that there is a unique leftmost point
◮ Make the leftmost point the origin
– So that all other points have positive x coordinates
◮ Sort the points in increasing order of y/x
– Increasing order of angle, whatever you like to call it
◮ Incrementally construct the convex hull using a stack
Convex Hull Problem 11
![Page 12: Jaehyun Park CS 97SI Stanford University June 29, 2015 · 2015-06-30 · Jaehyun Park CS 97SI Stanford University June 29, 2015. Outline Cross Product Convex Hull Problem Sweep Line](https://reader034.vdocuments.net/reader034/viewer/2022042021/5e78109cfb9f4625de3cb648/html5/thumbnails/12.jpg)
Incremental Construction
◮ We maintain a convex chain of the given points
◮ For each i, do the following:
– Append point i to the current chain– If the new point causes a concave corner, remove the bad
vertex from the chain that causes it– Repeat until the new chain becomes convex
Convex Hull Problem 12
![Page 13: Jaehyun Park CS 97SI Stanford University June 29, 2015 · 2015-06-30 · Jaehyun Park CS 97SI Stanford University June 29, 2015. Outline Cross Product Convex Hull Problem Sweep Line](https://reader034.vdocuments.net/reader034/viewer/2022042021/5e78109cfb9f4625de3cb648/html5/thumbnails/13.jpg)
Example
Points are numbered in increasing order of y/x
Convex Hull Problem 13
![Page 14: Jaehyun Park CS 97SI Stanford University June 29, 2015 · 2015-06-30 · Jaehyun Park CS 97SI Stanford University June 29, 2015. Outline Cross Product Convex Hull Problem Sweep Line](https://reader034.vdocuments.net/reader034/viewer/2022042021/5e78109cfb9f4625de3cb648/html5/thumbnails/14.jpg)
Example
Add the first two points in the chain
Convex Hull Problem 14
![Page 15: Jaehyun Park CS 97SI Stanford University June 29, 2015 · 2015-06-30 · Jaehyun Park CS 97SI Stanford University June 29, 2015. Outline Cross Product Convex Hull Problem Sweep Line](https://reader034.vdocuments.net/reader034/viewer/2022042021/5e78109cfb9f4625de3cb648/html5/thumbnails/15.jpg)
Example
Adding point 3 causes a concave corner 1-2-3: remove 2
Convex Hull Problem 15
![Page 16: Jaehyun Park CS 97SI Stanford University June 29, 2015 · 2015-06-30 · Jaehyun Park CS 97SI Stanford University June 29, 2015. Outline Cross Product Convex Hull Problem Sweep Line](https://reader034.vdocuments.net/reader034/viewer/2022042021/5e78109cfb9f4625de3cb648/html5/thumbnails/16.jpg)
Example
That’s better...
Convex Hull Problem 16
![Page 17: Jaehyun Park CS 97SI Stanford University June 29, 2015 · 2015-06-30 · Jaehyun Park CS 97SI Stanford University June 29, 2015. Outline Cross Product Convex Hull Problem Sweep Line](https://reader034.vdocuments.net/reader034/viewer/2022042021/5e78109cfb9f4625de3cb648/html5/thumbnails/17.jpg)
Example
Adding point 4 to the chain causes a problem: remove 3
Convex Hull Problem 17
![Page 18: Jaehyun Park CS 97SI Stanford University June 29, 2015 · 2015-06-30 · Jaehyun Park CS 97SI Stanford University June 29, 2015. Outline Cross Product Convex Hull Problem Sweep Line](https://reader034.vdocuments.net/reader034/viewer/2022042021/5e78109cfb9f4625de3cb648/html5/thumbnails/18.jpg)
Example
Continue adding points...
Convex Hull Problem 18
![Page 19: Jaehyun Park CS 97SI Stanford University June 29, 2015 · 2015-06-30 · Jaehyun Park CS 97SI Stanford University June 29, 2015. Outline Cross Product Convex Hull Problem Sweep Line](https://reader034.vdocuments.net/reader034/viewer/2022042021/5e78109cfb9f4625de3cb648/html5/thumbnails/19.jpg)
Example
Continue adding points...
Convex Hull Problem 19
![Page 20: Jaehyun Park CS 97SI Stanford University June 29, 2015 · 2015-06-30 · Jaehyun Park CS 97SI Stanford University June 29, 2015. Outline Cross Product Convex Hull Problem Sweep Line](https://reader034.vdocuments.net/reader034/viewer/2022042021/5e78109cfb9f4625de3cb648/html5/thumbnails/20.jpg)
Example
Continue adding points...
Convex Hull Problem 20
![Page 21: Jaehyun Park CS 97SI Stanford University June 29, 2015 · 2015-06-30 · Jaehyun Park CS 97SI Stanford University June 29, 2015. Outline Cross Product Convex Hull Problem Sweep Line](https://reader034.vdocuments.net/reader034/viewer/2022042021/5e78109cfb9f4625de3cb648/html5/thumbnails/21.jpg)
Example
Bad corner!
Convex Hull Problem 21
![Page 22: Jaehyun Park CS 97SI Stanford University June 29, 2015 · 2015-06-30 · Jaehyun Park CS 97SI Stanford University June 29, 2015. Outline Cross Product Convex Hull Problem Sweep Line](https://reader034.vdocuments.net/reader034/viewer/2022042021/5e78109cfb9f4625de3cb648/html5/thumbnails/22.jpg)
Example
Bad corner again!
Convex Hull Problem 22
![Page 23: Jaehyun Park CS 97SI Stanford University June 29, 2015 · 2015-06-30 · Jaehyun Park CS 97SI Stanford University June 29, 2015. Outline Cross Product Convex Hull Problem Sweep Line](https://reader034.vdocuments.net/reader034/viewer/2022042021/5e78109cfb9f4625de3cb648/html5/thumbnails/23.jpg)
Example
Continue adding points...
Convex Hull Problem 23
![Page 24: Jaehyun Park CS 97SI Stanford University June 29, 2015 · 2015-06-30 · Jaehyun Park CS 97SI Stanford University June 29, 2015. Outline Cross Product Convex Hull Problem Sweep Line](https://reader034.vdocuments.net/reader034/viewer/2022042021/5e78109cfb9f4625de3cb648/html5/thumbnails/24.jpg)
Example
Continue adding points...
Convex Hull Problem 24
![Page 25: Jaehyun Park CS 97SI Stanford University June 29, 2015 · 2015-06-30 · Jaehyun Park CS 97SI Stanford University June 29, 2015. Outline Cross Product Convex Hull Problem Sweep Line](https://reader034.vdocuments.net/reader034/viewer/2022042021/5e78109cfb9f4625de3cb648/html5/thumbnails/25.jpg)
Example
Continue adding points...
Convex Hull Problem 25
![Page 26: Jaehyun Park CS 97SI Stanford University June 29, 2015 · 2015-06-30 · Jaehyun Park CS 97SI Stanford University June 29, 2015. Outline Cross Product Convex Hull Problem Sweep Line](https://reader034.vdocuments.net/reader034/viewer/2022042021/5e78109cfb9f4625de3cb648/html5/thumbnails/26.jpg)
Example
Done!
Convex Hull Problem 26
![Page 27: Jaehyun Park CS 97SI Stanford University June 29, 2015 · 2015-06-30 · Jaehyun Park CS 97SI Stanford University June 29, 2015. Outline Cross Product Convex Hull Problem Sweep Line](https://reader034.vdocuments.net/reader034/viewer/2022042021/5e78109cfb9f4625de3cb648/html5/thumbnails/27.jpg)
Pseudocode
◮ Set the leftmost point as (0, 0), and sort the rest of the pointsin increasing order of y/x
◮ Initialize stack S
◮ For i = 1, . . . , n:
– Let A be the second topmost element of S, B be the topmostelement of S, and C be the ith point
– If ccw(A, B, C) < 0, pop S and go back– Push C to S
◮ Points in S form the convex hull
Convex Hull Problem 27
![Page 28: Jaehyun Park CS 97SI Stanford University June 29, 2015 · 2015-06-30 · Jaehyun Park CS 97SI Stanford University June 29, 2015. Outline Cross Product Convex Hull Problem Sweep Line](https://reader034.vdocuments.net/reader034/viewer/2022042021/5e78109cfb9f4625de3cb648/html5/thumbnails/28.jpg)
Outline
Cross Product
Convex Hull Problem
Sweep Line Algorithm
Intersecting Half-planes
Notes on Binary/Ternary Search
Sweep Line Algorithm 28
![Page 29: Jaehyun Park CS 97SI Stanford University June 29, 2015 · 2015-06-30 · Jaehyun Park CS 97SI Stanford University June 29, 2015. Outline Cross Product Convex Hull Problem Sweep Line](https://reader034.vdocuments.net/reader034/viewer/2022042021/5e78109cfb9f4625de3cb648/html5/thumbnails/29.jpg)
Sweep Line Algorithm
◮ A problem solving strategy for geometry problems
◮ The main idea is to maintain a line (with some auxiliary datastructure) that sweeps through the entire plane and solve theproblem locally
◮ We can’t simulate a continuous process, (e.g. sweeping a line)so we define events that causes certain changes in our datastructure
– And process the events in the order of occurrence
◮ We’ll cover one sweep line algorithm
Sweep Line Algorithm 29
![Page 30: Jaehyun Park CS 97SI Stanford University June 29, 2015 · 2015-06-30 · Jaehyun Park CS 97SI Stanford University June 29, 2015. Outline Cross Product Convex Hull Problem Sweep Line](https://reader034.vdocuments.net/reader034/viewer/2022042021/5e78109cfb9f4625de3cb648/html5/thumbnails/30.jpg)
Sweep Line Algorithm
◮ Problem: Given n axis-aligned rectangles, find the area of theunion of them
◮ We will sweep the plane from left to right
◮ Events: left and right edges of the rectangles
◮ The main idea is to maintain the set of “active” rectangles inorder
– It suffices to store the y-coordinates of the rectangles
Sweep Line Algorithm 30
![Page 31: Jaehyun Park CS 97SI Stanford University June 29, 2015 · 2015-06-30 · Jaehyun Park CS 97SI Stanford University June 29, 2015. Outline Cross Product Convex Hull Problem Sweep Line](https://reader034.vdocuments.net/reader034/viewer/2022042021/5e78109cfb9f4625de3cb648/html5/thumbnails/31.jpg)
Example
Sweep Line Algorithm 31
![Page 32: Jaehyun Park CS 97SI Stanford University June 29, 2015 · 2015-06-30 · Jaehyun Park CS 97SI Stanford University June 29, 2015. Outline Cross Product Convex Hull Problem Sweep Line](https://reader034.vdocuments.net/reader034/viewer/2022042021/5e78109cfb9f4625de3cb648/html5/thumbnails/32.jpg)
Example
Sweep Line Algorithm 32
![Page 33: Jaehyun Park CS 97SI Stanford University June 29, 2015 · 2015-06-30 · Jaehyun Park CS 97SI Stanford University June 29, 2015. Outline Cross Product Convex Hull Problem Sweep Line](https://reader034.vdocuments.net/reader034/viewer/2022042021/5e78109cfb9f4625de3cb648/html5/thumbnails/33.jpg)
Example
Sweep Line Algorithm 33
![Page 34: Jaehyun Park CS 97SI Stanford University June 29, 2015 · 2015-06-30 · Jaehyun Park CS 97SI Stanford University June 29, 2015. Outline Cross Product Convex Hull Problem Sweep Line](https://reader034.vdocuments.net/reader034/viewer/2022042021/5e78109cfb9f4625de3cb648/html5/thumbnails/34.jpg)
Example
Sweep Line Algorithm 34
![Page 35: Jaehyun Park CS 97SI Stanford University June 29, 2015 · 2015-06-30 · Jaehyun Park CS 97SI Stanford University June 29, 2015. Outline Cross Product Convex Hull Problem Sweep Line](https://reader034.vdocuments.net/reader034/viewer/2022042021/5e78109cfb9f4625de3cb648/html5/thumbnails/35.jpg)
Example
Sweep Line Algorithm 35
![Page 36: Jaehyun Park CS 97SI Stanford University June 29, 2015 · 2015-06-30 · Jaehyun Park CS 97SI Stanford University June 29, 2015. Outline Cross Product Convex Hull Problem Sweep Line](https://reader034.vdocuments.net/reader034/viewer/2022042021/5e78109cfb9f4625de3cb648/html5/thumbnails/36.jpg)
Example
Sweep Line Algorithm 36
![Page 37: Jaehyun Park CS 97SI Stanford University June 29, 2015 · 2015-06-30 · Jaehyun Park CS 97SI Stanford University June 29, 2015. Outline Cross Product Convex Hull Problem Sweep Line](https://reader034.vdocuments.net/reader034/viewer/2022042021/5e78109cfb9f4625de3cb648/html5/thumbnails/37.jpg)
Example
Sweep Line Algorithm 37
![Page 38: Jaehyun Park CS 97SI Stanford University June 29, 2015 · 2015-06-30 · Jaehyun Park CS 97SI Stanford University June 29, 2015. Outline Cross Product Convex Hull Problem Sweep Line](https://reader034.vdocuments.net/reader034/viewer/2022042021/5e78109cfb9f4625de3cb648/html5/thumbnails/38.jpg)
Example
Sweep Line Algorithm 38
![Page 39: Jaehyun Park CS 97SI Stanford University June 29, 2015 · 2015-06-30 · Jaehyun Park CS 97SI Stanford University June 29, 2015. Outline Cross Product Convex Hull Problem Sweep Line](https://reader034.vdocuments.net/reader034/viewer/2022042021/5e78109cfb9f4625de3cb648/html5/thumbnails/39.jpg)
Example
Sweep Line Algorithm 39
![Page 40: Jaehyun Park CS 97SI Stanford University June 29, 2015 · 2015-06-30 · Jaehyun Park CS 97SI Stanford University June 29, 2015. Outline Cross Product Convex Hull Problem Sweep Line](https://reader034.vdocuments.net/reader034/viewer/2022042021/5e78109cfb9f4625de3cb648/html5/thumbnails/40.jpg)
Example
Sweep Line Algorithm 40
![Page 41: Jaehyun Park CS 97SI Stanford University June 29, 2015 · 2015-06-30 · Jaehyun Park CS 97SI Stanford University June 29, 2015. Outline Cross Product Convex Hull Problem Sweep Line](https://reader034.vdocuments.net/reader034/viewer/2022042021/5e78109cfb9f4625de3cb648/html5/thumbnails/41.jpg)
Example
Sweep Line Algorithm 41
![Page 42: Jaehyun Park CS 97SI Stanford University June 29, 2015 · 2015-06-30 · Jaehyun Park CS 97SI Stanford University June 29, 2015. Outline Cross Product Convex Hull Problem Sweep Line](https://reader034.vdocuments.net/reader034/viewer/2022042021/5e78109cfb9f4625de3cb648/html5/thumbnails/42.jpg)
Pseudo-pseudocode
◮ If the sweep line hits the left edge of a rectangle
– Insert it to the data structure
◮ Right edge?
– Remove it
◮ Move to the next event, and add the area(s) of the greenrectangle(s)
– Finding the length of the union of the blue segments is thehardest step
– There is an easy O(n) method for this step
Sweep Line Algorithm 42
![Page 43: Jaehyun Park CS 97SI Stanford University June 29, 2015 · 2015-06-30 · Jaehyun Park CS 97SI Stanford University June 29, 2015. Outline Cross Product Convex Hull Problem Sweep Line](https://reader034.vdocuments.net/reader034/viewer/2022042021/5e78109cfb9f4625de3cb648/html5/thumbnails/43.jpg)
Notes on Sweep Line Algorithms
◮ Sweep line algorithm is a generic concept
– Come up with the right set of events and data structures foreach problem
◮ Exercise problems
– Finding the perimeter of the union of rectangles– Finding all k intersections of n line segments in
O((n + k) log n) time
Sweep Line Algorithm 43
![Page 44: Jaehyun Park CS 97SI Stanford University June 29, 2015 · 2015-06-30 · Jaehyun Park CS 97SI Stanford University June 29, 2015. Outline Cross Product Convex Hull Problem Sweep Line](https://reader034.vdocuments.net/reader034/viewer/2022042021/5e78109cfb9f4625de3cb648/html5/thumbnails/44.jpg)
Outline
Cross Product
Convex Hull Problem
Sweep Line Algorithm
Intersecting Half-planes
Notes on Binary/Ternary Search
Intersecting Half-planes 44
![Page 45: Jaehyun Park CS 97SI Stanford University June 29, 2015 · 2015-06-30 · Jaehyun Park CS 97SI Stanford University June 29, 2015. Outline Cross Product Convex Hull Problem Sweep Line](https://reader034.vdocuments.net/reader034/viewer/2022042021/5e78109cfb9f4625de3cb648/html5/thumbnails/45.jpg)
Intersecting Half-planes
◮ Representing a half-plane: ax + by + c ≤ 0
◮ The intersection of half-planes is a convex area
– If the intersection is bounded, it gives a convex polygon
◮ Given n half-planes, how do we compute the intersection ofthem?
– i.e., Find vertices of the convex area
◮ There is an easy O(n3) algorithm and a hard O(n log n) one
– We will cover the easy one
Intersecting Half-planes 45
![Page 46: Jaehyun Park CS 97SI Stanford University June 29, 2015 · 2015-06-30 · Jaehyun Park CS 97SI Stanford University June 29, 2015. Outline Cross Product Convex Hull Problem Sweep Line](https://reader034.vdocuments.net/reader034/viewer/2022042021/5e78109cfb9f4625de3cb648/html5/thumbnails/46.jpg)
Intersecting Half-planes
◮ For each half-plane aix + biy + ci ≤ 0, define a straight lineei : aix + biy + ci = 0
◮ For each pair of ei and ej :
– Compute their intersection p = (px, py)– Check if akpx + bkpy + ck ≤ 0 for all half-planes
◮ If so, store p in some array P◮ Otherwise, discard p
◮ Find the convex hull of the points in P
Intersecting Half-planes 46
![Page 47: Jaehyun Park CS 97SI Stanford University June 29, 2015 · 2015-06-30 · Jaehyun Park CS 97SI Stanford University June 29, 2015. Outline Cross Product Convex Hull Problem Sweep Line](https://reader034.vdocuments.net/reader034/viewer/2022042021/5e78109cfb9f4625de3cb648/html5/thumbnails/47.jpg)
Intersecting Half-planes
◮ The intersection of half-planes can be unbounded
– But usually, we are given limits on the min/max values of thecoordinates
– Add four half-planes x ≥ −M , x ≤ M , y ≥ −M , y ≤ M (forlarge M) to ensure that the intersection is bounded
◮ Time complexity: O(n3)
– Pretty slow, but easy to code
Intersecting Half-planes 47
![Page 48: Jaehyun Park CS 97SI Stanford University June 29, 2015 · 2015-06-30 · Jaehyun Park CS 97SI Stanford University June 29, 2015. Outline Cross Product Convex Hull Problem Sweep Line](https://reader034.vdocuments.net/reader034/viewer/2022042021/5e78109cfb9f4625de3cb648/html5/thumbnails/48.jpg)
Outline
Cross Product
Convex Hull Problem
Sweep Line Algorithm
Intersecting Half-planes
Notes on Binary/Ternary Search
Notes on Binary/Ternary Search 48
![Page 49: Jaehyun Park CS 97SI Stanford University June 29, 2015 · 2015-06-30 · Jaehyun Park CS 97SI Stanford University June 29, 2015. Outline Cross Product Convex Hull Problem Sweep Line](https://reader034.vdocuments.net/reader034/viewer/2022042021/5e78109cfb9f4625de3cb648/html5/thumbnails/49.jpg)
Notes on Binary Search
◮ Usually, binary search is used to find an item ofi rulnterest in asorted array
◮ There is a nice application of binary search, often used ingeometry problems
– Example: finding the largest circle that fits into a givenpolygon
◮ Don’t try to find a closed form solution or anything like that!◮ Instead, binary search on the answer
Notes on Binary/Ternary Search 49
![Page 50: Jaehyun Park CS 97SI Stanford University June 29, 2015 · 2015-06-30 · Jaehyun Park CS 97SI Stanford University June 29, 2015. Outline Cross Product Convex Hull Problem Sweep Line](https://reader034.vdocuments.net/reader034/viewer/2022042021/5e78109cfb9f4625de3cb648/html5/thumbnails/50.jpg)
Ternary Search
◮ Another useful method in many geometry problems
◮ Finds the minimum point of a “convex” function f
– Not exactly convex, but let’s use this word anyway
◮ Initialize the search interval [s, e]
◮ Until e − s becomes “small enough”:
– m1 := s + (e − s)/3, m2 := e − (e − s)/3– If f(m1) ≤ f(m2), set e := m2
– Otherwise, set s := m1
Notes on Binary/Ternary Search 50