Cook’s theorem and
NP-reductions
Pasi Fränti
22.10.2013
Cook’s theorem
Theorem:
Satisfiability problem (SAT) is NP-complete
Proof:
TM ≤p SAT
Satisfiability problem
f1
f2
f3
F=(X1 X2 X3) (X1 X2) (X1 X3)
x1
0
0
0
0
1
1
1
1
x2
0
0
1
1
0
0
1
1
x3
0
1
0
1
0
1
0
1
f1
f2
f3
F
Non-deterministic algorithm
Satisfiability(F)
FOR i1 TO n DO
xi Choose{0,1};
IF F(x)=1 THEN SUCCESS;
ELSE FAIL;
T(n)=O(n) SAT NP
Notations needed
x y x y
x y x y y x
n
x
Implication
Equivalence
i
x1 xn
All are true
x
x1 xn
Some is true
i 1
n
i 1
i
n
xi xi x i x j
i 1
i 1 i , j 1
i j
n
n
At least one
is true
At most one
is true
Exactly one is true
Cook’s theorem:
Accept( x) Confic Initial Transition Final
p n n s ,t p n k s ,t
Config ai q j
t 1 s 1 i 0
s 1 j 0
p n
Cook’s theorem
Initial q01,1 ai11,1 ai22,1 ... ainn,1 a0n1,1 ... a0pn ,1
Cook’s theorem
Transit
t 1
k s ,t
s ,t
s ,t 1
q
a
a
i
i
j
s 1 i 0 j 0
p n p n m
p n p n m
a
k
t 1 s 1 i 0 j 0
s ,t
i
q
a
l
s ,t
j
r 0
s ,t 1
ir
q sjr d r ,t 1
Cook’s theorem
Final
p n
s 1
qks , p n
NP hard problems
1.
2.
3.
4.
5.
Satisfiability problem (SP)
Coloring problem (Color)
Exact cover problem (EC)
Traveling salesman problem (TSP)
Knapsack problem (KP)
Satisfiability to Coloring
Complete k-clique
False color
c1
c2
c2
…
ck
…
ak
c0
Connect to all but ci
Literals
a1
a1
a2
a2
a3
a3
…
ak
Choices for fi
aj
fi
fi
Connect to all but
those literals in fi
aj
SP to Coloring example
(X1 X2) (X1 X3)
Empty space for notes
Knapsack to TSP
Knapsack problem
• Input: knapsack instance {2,3,5,7,11}
• Size of the knapsack S=15.
Step 1: Create one node for every item
• Input: knapsack instance {2,3,5,7,11}
• Create a node for every knapsack element.
2
7
5
3
11
Step 2: Add start and end points
• Input: knapsack instance {2,3,5,7,11}
• Add node 0 as the home.
• Add node N+1 as the turning point.
2
7
5
0
3
n+1
11
N+2 nodes needed to represent the knapsack instance
Step 3: Create forward links
• Input: knapsack instance {2,3,5,7,11}
• Draw links from smaller nodes to bigger ones.
• Set weights according to the bigger node: w(i,j)=j.
2
7
2
7
7
7
7
5
5
0
5
n+1
5
3
3
3
11 11
11
11
11
Step 4: Create forward links for node N+1
• Input: knapsack instance {2,3,5,7,11}
• Draw links to N+1 with weights w(i,N+1)=0.
2
7
2
7
7
7
7
5
5
0
5
5
3
3
3
11 11
11
11
11
0
0
0
0
0
n+1
Step 5: Create backward links
• Input: knapsack instance {2,3,5,7,11}
• Draw backward links from bigger to smaller nodes.
• Set weight of the link as w(j,i)=0.
0
2
7
0
0
0
0
0
5
0
0
0
0
0
0
0
0
0
3
0
0
0
0
11
n+1
Solution for KP Solution for TSP
• KP = {3,5,7}
• TSP = 0-3-5-7-(N+1)-11-2-0 (S=15)
Visit the nodes in an increasing order !
2
7
0
7
0
0
5
0
n+1
5
0
3
3
11
Solution for TSP Solution for KP
• TSP = 0-3-5-7-(N+1)-11-2-0
• KP = {3,5,7} (all nodes which arrival cost > 0)
Select nodes with entrance w>0 !
2
0
7
77
0
0
0
5
55
n+1
0
3
33
11
Empty space for notes