Source: https://www.cs.cmu.edu/~aldrich/courses/413/slides/5-planning-1.pdf