NP-complete problems is a set of problems that a polynomial-time algorithm for any one of them would imply the existence of a polynomial-time algorithm for all of them.
If problem X can be solved in polynomial time, and arbitrary instances of problem Y can be solved using a polynomial number of standard computational steps, plus a polynomial number of calls to a black box that solves problem X, we can write $Y \le_p X$ means "Y is polynomial-time reducible to X" or "X is at least as hard as Y (with respect to polynomial time)."
Independent Set
In a graph G = (V, E), we say a set of nodes S ⊆ V is independent if no two nodes in S are joined by an edge.
Vertex Cover
Given a graph G = (V, E), we say that a set of nodes S⊆V is a vertex cover if every edge e∈E has at least one end in S.
The Reduction
Let G = (V , E) be a graph. Then S is an independent set if and only if its complement $V − S$ is a vertex cover.
If we have a black box of solving either of the problem, we can just that solution to the problem to solve the other one in polynomial ways. Thus, independent set $\le_p$ vertex cover and vertex cover $\le_p$ independent set.
Set Cover
Given a set U of elements, a collection $S_1, \dots, S_m$ of subsets of U, and a number k, the problem is to determine if there exists a collection of at most k of these sets whose union is equal to all of U.
Set Packing
Given a set U of elements, a collection $S_1, \dots, S_m$ of subsets of U, and a number k, the problem is to determine if there exists a collection of at least k of these sets with the property that no two of them intersect.
Reduction