Theory of Linear and Non-Linear Programming