CNF-SAT ≤P Independent Set: Algorithm Design, Kleinberg-Tardos, Theorem 8.8, page 460. (For every clause k, create i vertices if there are i variables in the clause. Draw an edge between all vertices of a clause and an edge between complementary vertices across clauses.)
3-CNF-SAT ≤L CNF-SAT: A 3-CNF-SAT instance is also a CNF-SAT instance.
Independent Set =L Vertex Cover: In a graph (V, E), S is a vertex cover iff V-S is an independent set.
Independent Set =L Clique: S is an independent set in graph G iff S is a clique in the complement of G.
Vertex Cover ≤P Set Cover: For each vertex v, create the set Sv of all edges incident on v. If some of these sets span the set of edges, then the corresponding vertices form a vertex cover.
Hamiltonian Cycle ≤L Travelling Salesman Problem: Given a graph G, construct a weighted graph G' where c(u, v) = 0 if (u, v) in G and c(u, v) = 1 otherwise. Then G' has a 0-weight tour iff G has a hamiltonian cycle.
Set Cover ≤P Integer Linear Programming: Represent the set cover instance as a linear program. Each set corresponds to a boolean variable and the requirement of covering each element becomes a linear constraint.
Subset Sum ≤P Knapsack: For every number x in the set, create an item of weight x and size x. If the target is t, get a knapsack of size t. A subset sums to t iff we can get profit ≥ t.
Set Partitioning ≤P Subset Sum: Let s be the sum of set X. X can be partitioned into 2 subsets of equal sum iff there is a subset of X of sum s/2.
Knapsack ≤P Integer Linear Programming
CNF-SAT ≤P Integer Linear Programming: Add a constraint for each clause. For example, '(u1 or !u2 or u3)' becomes 'u1 + (1-u2) + u3 ≥ 1'.
Set Partitioning ≤P Makespan scheduling: Let X be a set of integers with sum s. For each integer x, create a job which requires x units of time. Then X can be partitioned into 2 equal-sum subsets iff all these jobs can be finished in time ≤ s/2 on 2 processors.
Set Partitioning ≤L Bin Packing: Let X be a set of integers with sum s. For each integer x, create an item of size x. Then X can be partitioned into 2 equal-sum subsets iff all these items can be packed in 2 bins.
Directed Hamiltonian Cycle ≤P Hamiltonian Cycle: For every vertex v in directed graph, create vertices v1, v2, v3 in undirected graph. For every edge (u, v) in directed graph, add edge (u3, v1) in undirected graph. Directed graph has ham-cycle iff undirected graph has ham-cycle.
Hamiltonian Cycle ≤P Directed Hamiltonian Cycle: Replace every undirected edge {u, v} by 2 directed edges (u, v) and (v, u). Directed graph has ham-cycle iff undirected graph has ham-cycle