230 likes | 247 Views
Pasi Fränti. Cook’s theorem and NP-reductions. 6.11.2016. Cook’s theorem. Theorem: Satisfiability problem (SAT) is NP-complete Proof:. TM ≤ p SAT. Satisfiability problem. f 1. f 2. f 3. F=(X 1 X 2 X 3 ) ( X 1 X 2 ) ( X 1 X 3 ). Non-deterministic algorithm.
E N D
Pasi Fränti Cook’s theorem and NP-reductions 6.11.2016
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)
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 Implication Equivalence All are true Some is true Exactly one is true At least oneis true At most one is true
Proof of Cook’s theorem Only valid Turing machine configurations can have value TRUE ai = tape position s has symbol ai qj = machine is at state qj and R/W head is at position s
Cook’s theorem Machine is at state q0 Tape content is {ai1, ai2, …, ain}
Cook’s theorem If not at position s, then content does not change If at position sand content is ai, then change state and content
Cook’s theorem Can be in any position s but machine must be in final state qk
NP hard problems • Satisfiability problem (SAT) • Coloring problem (Color) • Exact cover problem (EC) • Knapsack problem (KP) • Traveling salesman problem (TSP)
c1 c2 c3 … ck x1 x2 x3 … xk x1 … xj xk x3 x2 Satisfiability to Coloring Complete k-clique False color c0 Connect to all but ci Literals Color for fi xj fi fi Connect to all but those literals in fi
SP to Coloring example (X1 X2) (X1 X3)
Additional example f1 f2 f3 (X2 X3) (X1 X3 ) (X1 X2)
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 • Add node 0 as the home. • Add node n+1 as the turning point. 2 7 5 0 n+1 3 11 n+2 nodes needed to represent the knapsack instance
Step 3: Create forward links • Draw links from smaller to bigger with weights: • w(i,j) = j • w(i,n+1) = 0 7 2 2 7 7 7 7 0 5 0 5 0 5 0 n+1 0 5 0 11 11 3 11 3 3 11 11
Step 4: Create backward links • 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 0 0 0 0 5 0 0 n+1 0 0 0 0 0 0 3 11 0
All nodes have two incoming links with weights w(i,j) if item j is taken into knapsack (xj=1) 0 if item jnot is taken (xj=0) Visit nodes selected in KP using w>0 link 2 7 5 3 11 KP TSP 0 select 7 0 0 0 n+1 5 select select 0 3
2 7 5 3 11 KP TSP TSP = 0-3-5-7-(N+1)-11-2-0 KP = {3,5,7} (all nodes which arrival cost > 0) 0 select 7 0 0 0 n+1 5 select select 0 3