# CMPSCI 311: Theory of Algorithms

### David Mix Barrington

### Fall, 2003

### Discussion Notes #11

### from Wednesday 3 December 2003

### Polynomial-Time Reductions

Please answer the questions *during the discussion period*.

The most important definition in the theory of NP-completeness
is the *polynomial-time reduction*. Let A and B be two sets
of inputs, which we can think of as two *problems* with boolean
answers. A reduction from A to B is a function f such that (1)
f is easily computable (computable in polynomial time), and (2)
for any input x, x is in A if and only if f(x) is in B.

A reduction from A to B gives us an easy way to answer ``is x in A''
if we know an easy way to answer questions about B -- we compute
f(x) and decide whether f(x) is in B.

In this exercise we will construct some reductions. In each case B
will be the REACHABILITY problem, the set {(G,s,t): G is a directed
graph and there is a path form vertex s to vertex t in G}.

**Question 1:**
Reduce COMPLETE to REACHABILITY, where COMPLETE
is the set {G: G is an undirected graph that has all possible edges in it}.
Your reduction does not have to solve COMPLETE, though this is easy --
it should create a graph H and vertices s and t in H such that H has a
path from s to t if and only if G is complete.
**Question 2:**
Reduce the problem MAJORITY to REACHABILITY, where MAJORITY is the set
{w: w is a string of 0's and 1's and at least half the letters of w are
1's}.
**Question 3:**
Reduce STRONGLY-CONNECTED to REACHABILITY, whree STRONGLY-CONNECTED
is the set {G: G is a directed graph such that for every pair of vertices
u and v in G, there is an path from u to v in G}.

Last modified 3 December 2003