Source: http://www-labs.iro.umontreal.ca/~hahn/IFT3545/GTWA.pdf