Source: https://webdocs.cs.ualberta.ca/~duane/publications/pdf/2002aij.pdf