Source: http://www.ens-lyon.fr/denif/data/concept_analyse_algo_x/2007/cours/cours6.pdf