An NP-Hard Decision Problem:
The Halting Problem

NP - Hard

The halting problem is to determine for an arbitrary deterministic algorithm A and an input I whether algorithm A with input I ever terminates (or enters an infinite loop). It is well known that this problem is undecidable.

The basis of the proof is to suppose that one can determine if a machine will stop on (for our purposes, accept) specific inputs and show that there will always exist a string that no machine can determine (accept). The proof is based on a technique called diagonalization.

From Introduction to Automata Theory, Languages, and Computation, Hopcroft and Ullman, Addison Wesley Publishing Company, Reading Massachusetts, 1979, page 183