Everything you need to know to understand the algorithm would be covered in a mandatory "intro to theory of computation" or "intro to automata" course in a CS undergrad degree. You could start by reading the first half of a good textbook: we used the book by Hopcroft, Ullman and Motwani: http://infolab.stanford.edu/~ullman/ialc.html and I liked it a lot, but I've also heard good things about Sipser's book: http://www-math.mit.edu/~sipser/book.html