Source: https://www-users.cse.umn.edu/~kumar001/dmbook/ch8.pdf