Determining the computational complexity of problems is a large area of study. It seeks to separate these problems into ones with efficient solutions, and those with inefficient solutions. Of course, the strata is much more fine-grain than this. Of special interest are two classes of problems: P and NP. These have been of much interest to complexity theorists for quite some time, because both contain many instances of important real-world problems, and finding efficient solutions for those in NP would be beneficial for computing applications. Yet with all this attention, there are still important unanswered questions about the two classes. It is known that P ⊆ NP, however it is still unknown whether P = NP or if P ⊂ NP. Before we discu...