{[ promptMessage ]}

Bookmark it

{[ promptMessage ]}

hw1_sol

# hw1_sol - CSE 202 Homework 1 Solutions 1 Kleinberg Tardos...

This preview shows pages 1–3. Sign up to view the full content.

CSE 202 Homework 1 Solutions 1 Kleinberg & Tardos, problem 4, page 247. Coulomb forces among charged particles. Let Q = ( q 1 ,...,q n , 0 ,..., 0 bracehtipupleft bracehtipdownrightbracehtipdownleft bracehtipupright n 1 ) P = ( 1 ( n 1) 2 ,..., 1 2 2 , 1 1 2 , 0 , 1 1 2 , 1 2 2 ,..., 1 ( n 1) 2 ) . Both vectors have 2 n 1 elements. Let R = ( r 0 ,...,r 4 n 4 ) = Q P be the convolution of Q,P , which can be computed in O ( n lg n ) time using FFT. The answer we seek is F j = Cq j r n + j 2 for j = 1 ,...,n . 2 Kleinberg & Tardos, problem 5, page 248. Hidden surface removal 2.1 Solution 1 n non-vertical lines in the plane L 1 , L 2 , ..., L n No three lines meet at a single point L i is specified by equation y = a i · x + b i L i is uppermost at x -coordinate x 0 if a i · x 0 + b i > a j · x 0 + b j for all j negationslash = i L i is visible if it is uppermost at some x -coordinate Given n input lines, we want to find the visible envelope , i.e. all visible half lines and line segments. We use the divide-and-conquer approach. To get a high level intuition, we describe the key ideas as follows. First, we sort the input lines by slopes to facilitate the analysis of the visible envelope. Then we split the set of input lines into two equal parts (i.e. the “divide” step), and recursively compute the visible envelope for each part (i.e. the “conquer” step). The main subtlety is on how to efficiently combine the two visible envelopes into one single visible envelope of the original input lines (i.e. the “combine” step). Here, we leverage the fact that the slopes in the second visible envelope are larger than the slopes in the first visible envelope because we sorted the input lines by slopes. This guarantees that the two visible envelopes meet at exactly one intersection point. By exploiting the sorted order of slopes, this intersection point can be determined in linear time. Finally, we take this intersection point as the pivot to merge the two visible envelopes. Full details of the algorithm are as follows. 1

This preview has intentionally blurred sections. Sign up to view the full version.

View Full Document
Figure 1: L 1 , L 3 , L 4 , and L 5 are visible. L 2 is hidden. The intersections points are p 1 , p 2 , and p 3 in the order of x -coordinate. The visible envelope is ( L 1 , p 1 , p 2 , p 3 , L 5 ). 1. First, sort the input lines by slopes with time complexity O ( n log n ) . Among the lines with the same slope, keep only the one with largest y -intercept (since the others are hidden by this line). From now on, we suppose L 1 , L 2 , ..., L n are sorted by unique slopes. 2. We design an algorithm that returns the set of visible lines in increasing slopes ( L i 1 , L i 2 , ..., L im ), together with the set of intersection points ( p i 1 , p i 2 , ..., p i ( m 1) ) where p ij is the intersection of L ij and L i ( j +1) . See Figure 1 for an example. Note that since the slopes of L i 1 , L i 2 , ..., L im are increasing in that order, the x -coordinates of p i 1 , p i 2 , ..., p i ( m 1) are also increasing in that order.
This is the end of the preview. Sign up to access the rest of the document.

{[ snackBarMessage ]}