---- MbC --- MbC(P: l, r): (finds UH of P from x-coordinates l to r) Find median x-coordinate x_m Partition points on x_m into Pl and Pr Find bridge uv over x_m Remove points below bridge Recurse MbC(Pl: l, u.x) and MbC(Pr: v.x, r) Find bridge is finding the line (y=ax+b) such that: 1) passes above all the points 2) has the lowest intersection point with the median line ---- 1D ---- Unknown x1 Minimize c1*x1 such that a1*x1 \leq b1 a2*x1 \leq b2 ... an*x1 \leq bn for each of the constraints: ai*x1 \leq bi => if ai > 0: x1 <= bi/ai if ai < 0: x1 >= bi/ai if ai = 0: if bi < 0: impossible if bi \geq 0: always satisfied this means that each constraint half of the real line therefore run for-loop on bi/ai and check the ifs when we have feasible region/interval: if c1 > 0: choose minimum of interval if c1 < 0: choose maximum of interval if c1 = 0: degenerate ---- 2D ---- a and b are unknowns minimize ax_m + b such that y_i \leq ax_i + b, for every input point (x_i, y_i) where x_m is given (median) Algorithm: Initialise v Randomly shuffle constraints for i=1 to n: if constraint i does not violate v, do nothing else solve 1d LP on boundary of constraint i