Source: https://www.di.ens.fr/~busic/mar/cours/mar2018_cours5_rev.pdf