Convex Analysis & Optimization by Dimitri Bertsekas