Source: http://www.columbia.edu/~cs2035/courses/ieor3608.F04/bigm.pdf