Source: https://www.ccs.neu.edu/home/radivojac/classes/2021fallcs6220/ch2.pdf