Source: http://www.columbia.edu/~cs2035/courses/ieor3608.F05/bigm1.pdf