NP-Completeness
Verification, polynomial reductions, and what makes a problem NP-complete.
The idea
NP-completeness is the theory of which problems we can reasonably hope to solve efficiently. It is stated for decision problems, whose answer is yes or no; little is lost, since finding a smallest vertex cover and deciding whether one of size $k$ exists are efficiently interconvertible.
P is the class of decision problems solvable in polynomial time. NP is the class of decision problems whose yes-instances have a certificate: evidence that a polynomial-time checker can verify, such as a satisfying assignment for a satisfiable formula, or the cover itself for a graph with a small vertex cover. NP concerns checking a proposed answer, not producing one, and every problem in P is in NP.
Problems are compared by polynomial-time reduction. A reduction from $A$ to $B$ converts any instance of $A$, in polynomial time, into an instance of $B$ with the same answer. It carries algorithms forward — convert, then run $B