Fundamentals Of The Theory Of Computation: Principles And Practice by Raymond Greenlaw & James H. Hoover