Mathematical Programming Structures And Algorithms