Source: http://www.info2.uqam.ca/~walsh_t/courses/INF 7440 Plan A10.pdf