Source: https://wiki.epfl.ch/houdre/documents/OptII 2011-2012/OptII.3 2012.pdf