Source: http://www-ia.lip6.fr/~hnguyen/opt_comb/cours2.pdf