Source: https://wiki.epfl.ch/houdre/documents/OptII 2009-2010/OptII.2 2010.pdf