Source: http://www.comp.sci.sitew.com/fs/Root/dzwcp-Algorithmique_Chap_5.pdf