Computational Complexity
Lecture 2 in which we talk about NP-completeness (reductions, reductions)
1
Computational Complexity Lecture 2 in which we talk about - - PowerPoint PPT Presentation
Computational Complexity Lecture 2 in which we talk about NP-completeness (reductions, reductions) 1 Recap 2 Recap Languages in NP are of the form: 2 Recap Languages in NP are of the form: L= { x | w, |w| < poly(|x|) s.t. (x,w)
1
2
Languages in NP are of the form:
2
Languages in NP are of the form: L= { x | ∃w, |w| < poly(|x|) s.t. (x,w) ∈ L ’ }, where L ’ is in P
2
Languages in NP are of the form: L= { x | ∃w, |w| < poly(|x|) s.t. (x,w) ∈ L ’ }, where L ’ is in P Today: Hardest problems in NP
2
3
At the heart of today’ s complexity theory
3
At the heart of today’ s complexity theory L1 ! L2 if problem of deciding L1 “reduces to that of deciding” L2
3
At the heart of today’ s complexity theory L1 ! L2 if problem of deciding L1 “reduces to that of deciding” L2 if can decide L2, can decide L1
3
4
Turing reduction:
4
Turing reduction: Build a TM (oracle machine) ML1, s.t. using the oracle OL2 which decides L2, ML1^OL2 decides L1
4
Turing reduction: Build a TM (oracle machine) ML1, s.t. using the oracle OL2 which decides L2, ML1^OL2 decides L1 ML1 may query OL2 many times (with different inputs)
4
Turing reduction: Build a TM (oracle machine) ML1, s.t. using the oracle OL2 which decides L2, ML1^OL2 decides L1 ML1 may query OL2 many times (with different inputs) Many-One:
4
Turing reduction: Build a TM (oracle machine) ML1, s.t. using the oracle OL2 which decides L2, ML1^OL2 decides L1 ML1 may query OL2 many times (with different inputs) Many-One: ML1 can query OL2 only once, and must output what OL2 outputs
4
Turing reduction: Build a TM (oracle machine) ML1, s.t. using the oracle OL2 which decides L2, ML1^OL2 decides L1 ML1 may query OL2 many times (with different inputs) Many-One: ML1 can query OL2 only once, and must output what OL2 outputs ML1 maps its input x to an input f(x) for OL2
4
Turing reduction: Build a TM (oracle machine) ML1, s.t. using the oracle OL2 which decides L2, ML1^OL2 decides L1 ML1 may query OL2 many times (with different inputs) Many-One: ML1 can query OL2 only once, and must output what OL2 outputs ML1 maps its input x to an input f(x) for OL2 x ∈ L1 ⇒ f(x) ∈ L2 and x ! L1 ⇒ f(x) ! L2
4
Turing reduction: Build a TM (oracle machine) ML1, s.t. using the oracle OL2 which decides L2, ML1^OL2 decides L1 ML1 may query OL2 many times (with different inputs) Many-One: ML1 can query OL2 only once, and must output what OL2 outputs ML1 maps its input x to an input f(x) for OL2 x ∈ L1 ⇒ f(x) ∈ L2 and x ! L1 ⇒ f(x) ! L2 L1 L2
4
Turing reduction: Build a TM (oracle machine) ML1, s.t. using the oracle OL2 which decides L2, ML1^OL2 decides L1 ML1 may query OL2 many times (with different inputs) Many-One: ML1 can query OL2 only once, and must output what OL2 outputs ML1 maps its input x to an input f(x) for OL2 x ∈ L1 ⇒ f(x) ∈ L2 and x ! L1 ⇒ f(x) ! L2 L1 L2
4
Turing reduction: Build a TM (oracle machine) ML1, s.t. using the oracle OL2 which decides L2, ML1^OL2 decides L1 ML1 may query OL2 many times (with different inputs) Many-One: ML1 can query OL2 only once, and must output what OL2 outputs ML1 maps its input x to an input f(x) for OL2 x ∈ L1 ⇒ f(x) ∈ L2 and x ! L1 ⇒ f(x) ! L2 L1 L2
4
5
Many-one reduction, where ML1 runs in polynomial time
5
Many-one reduction, where ML1 runs in polynomial time L1 !p L2
5
Many-one reduction, where ML1 runs in polynomial time L1 !p L2 L2 is “computationally (almost) as hard or harder” compared to L1
5
Many-one reduction, where ML1 runs in polynomial time L1 !p L2 L2 is “computationally (almost) as hard or harder” compared to L1 “almost”: reduction overheads (reduction time, size blow-up)
5
Many-one reduction, where ML1 runs in polynomial time L1 !p L2 L2 is “computationally (almost) as hard or harder” compared to L1 “almost”: reduction overheads (reduction time, size blow-up) L2 may be way harder
5
6
Polynomial-time reduction
6
Polynomial-time reduction Cook: Turing reduction
6
Polynomial-time reduction Cook: Turing reduction Karp: Many-one reduction
6
Polynomial-time reduction Cook: Turing reduction Karp: Many-one reduction We use this for !p
6
Polynomial-time reduction Cook: Turing reduction Karp: Many-one reduction We use this for !p Between NP languages
6
Polynomial-time reduction Cook: Turing reduction Karp: Many-one reduction We use this for !p Between NP languages Levin: Karp + witnesses easily transformed back and forth
6
Polynomial-time reduction Cook: Turing reduction Karp: Many-one reduction We use this for !p Between NP languages Levin: Karp + witnesses easily transformed back and forth Parsimonious: Karp + number
t change
6
7
A language L is NP-Hard if for all L ’ in NP, L ’ !p L
7
A language L is NP-Hard if for all L ’ in NP, L ’ !p L A language L is NP-Complete if it is NP-Hard and is in NP
7
A language L is NP-Hard if for all L ’ in NP, L ’ !p L A language L is NP-Complete if it is NP-Hard and is in NP To efficiently solve all problems in NP, you need to efficiently solve L and nothing more
7
8
TMSAT = { (M,z,1n,1t) | ∃w, |w|<n, s.t. TM represented by M accepts (z,w) within time t }
8
TMSAT = { (M,z,1n,1t) | ∃w, |w|<n, s.t. TM represented by M accepts (z,w) within time t } TMSAT is in NP: TMVAL = { (M,z,1n,1t,w) | |w|<n and TM represented by M accepts (z,w) within time t } is in P
8
TMSAT = { (M,z,1n,1t) | ∃w, |w|<n, s.t. TM represented by M accepts (z,w) within time t } TMSAT is in NP: TMVAL = { (M,z,1n,1t,w) | |w|<n and TM represented by M accepts (z,w) within time t } is in P TMSAT is NP-hard: Given a language L in NP defined as L = { x | ∃w, |w|<n s.t. ML
’ accepts (x,w) } and ML ’ runs
within time t, (where n,t are poly(|x|) ), let the Karp reduction be f(x) = (ML
’,x,1n,1t)
8
TMSAT = { (M,z,1n,1t) | ∃w, |w|<n, s.t. TM represented by M accepts (z,w) within time t } TMSAT is in NP: TMVAL = { (M,z,1n,1t,w) | |w|<n and TM represented by M accepts (z,w) within time t } is in P TMSAT is NP-hard: Given a language L in NP defined as L = { x | ∃w, |w|<n s.t. ML
’ accepts (x,w) } and ML ’ runs
within time t, (where n,t are poly(|x|) ), let the Karp reduction be f(x) = (ML
’,x,1n,1t)
Any “natural” NPC language?
8
1
9
Boolean valued wires, AND, OR, NOT, CONST gates, inputs, output, directed acyclic graph
1
9
Boolean valued wires, AND, OR, NOT, CONST gates, inputs, output, directed acyclic graph Circuit evaluation CKT-VAL: given (ckt,inputs) find ckt’ s boolean
1
9
Boolean valued wires, AND, OR, NOT, CONST gates, inputs, output, directed acyclic graph Circuit evaluation CKT-VAL: given (ckt,inputs) find ckt’ s boolean
Can be done very efficiently: CKT-VAL is in P
1
9
Boolean valued wires, AND, OR, NOT, CONST gates, inputs, output, directed acyclic graph Circuit evaluation CKT-VAL: given (ckt,inputs) find ckt’ s boolean
Can be done very efficiently: CKT-VAL is in P CKT-SAT: given ckt, is there a “satisfying” input (output=1). In NP.
1
9
10
Reduce any NP language L to CKT-SAT
10
Reduce any NP language L to CKT-SAT Let’ s start from the TM for verifying membership in L, with time bound T
10
Reduce any NP language L to CKT-SAT Let’ s start from the TM for verifying membership in L, with time bound T Build a circuit which on input w outputs what the TM outputs on (x,w), within T steps
10
Reduce any NP language L to CKT-SAT Let’ s start from the TM for verifying membership in L, with time bound T Build a circuit which on input w outputs what the TM outputs on (x,w), within T steps This circuit is an instance of CKT-SAT
10
Reduce any NP language L to CKT-SAT Let’ s start from the TM for verifying membership in L, with time bound T Build a circuit which on input w outputs what the TM outputs on (x,w), within T steps This circuit is an instance of CKT-SAT Ensure reduction is poly-time
10
(x,w)
11
Wires for configurations: a bundle for each tape cell, encoding (content,state), where state is encoded in the cell with the head (x,w)
11
Wires for configurations: a bundle for each tape cell, encoding (content,state), where state is encoded in the cell with the head (x,w)
11
Wires for configurations: a bundle for each tape cell, encoding (content,state), where state is encoded in the cell with the head Circuitry for evolution: each bundle depends (as specified by the TM) on 3 neighboring bundles at the previous level (x,w)
11
Wires for configurations: a bundle for each tape cell, encoding (content,state), where state is encoded in the cell with the head Circuitry for evolution: each bundle depends (as specified by the TM) on 3 neighboring bundles at the previous level (Part of) initial configuration, namely w, to be plugged in as input (x,w)
11
Wires for configurations: a bundle for each tape cell, encoding (content,state), where state is encoded in the cell with the head Circuitry for evolution: each bundle depends (as specified by the TM) on 3 neighboring bundles at the previous level (Part of) initial configuration, namely w, to be plugged in as input x,q0 (x,w)
11
Wires for configurations: a bundle for each tape cell, encoding (content,state), where state is encoded in the cell with the head Circuitry for evolution: each bundle depends (as specified by the TM) on 3 neighboring bundles at the previous level (Part of) initial configuration, namely w, to be plugged in as input x,q0 (x,w) w
11
Wires for configurations: a bundle for each tape cell, encoding (content,state), where state is encoded in the cell with the head Circuitry for evolution: each bundle depends (as specified by the TM) on 3 neighboring bundles at the previous level (Part of) initial configuration, namely w, to be plugged in as input T configurations, T bundles each x,q0 (x,w) w
11
Wires for configurations: a bundle for each tape cell, encoding (content,state), where state is encoded in the cell with the head Circuitry for evolution: each bundle depends (as specified by the TM) on 3 neighboring bundles at the previous level (Part of) initial configuration, namely w, to be plugged in as input T configurations, T bundles each Circuit size = O(T2) x,q0 (x,w) w
11
x,q0 (x,w) w
12
Reducing any NP language L to CKT-SAT x,q0 (x,w) w
12
Reducing any NP language L to CKT-SAT TM for verifying membership in L, time-bound T, and input x " A circuit which on input w
x,q0 (x,w) w
12
Reducing any NP language L to CKT-SAT TM for verifying membership in L, time-bound T, and input x " A circuit which on input w
Poly-time reduction x,q0 (x,w) w
12
Reducing any NP language L to CKT-SAT TM for verifying membership in L, time-bound T, and input x " A circuit which on input w
Poly-time reduction CKT-SAT is NP-complete x,q0 (x,w) w
12
13
SAT and 3SAT
13
SAT and 3SAT SAT: Are all given “clauses” simultaneously satisfiable? (Conjunctive Normal Form)
13
SAT and 3SAT SAT: Are all given “clauses” simultaneously satisfiable? (Conjunctive Normal Form) 3SAT: Each clause has at most 3 literals
13
SAT and 3SAT SAT: Are all given “clauses” simultaneously satisfiable? (Conjunctive Normal Form) 3SAT: Each clause has at most 3 literals CLIQUE, INDEP-SET, VERTEX-COVER
13
SAT and 3SAT SAT: Are all given “clauses” simultaneously satisfiable? (Conjunctive Normal Form) 3SAT: Each clause has at most 3 literals CLIQUE, INDEP-SET, VERTEX-COVER Hundreds (thousands?) more known
13
SAT and 3SAT SAT: Are all given “clauses” simultaneously satisfiable? (Conjunctive Normal Form) 3SAT: Each clause has at most 3 literals CLIQUE, INDEP-SET, VERTEX-COVER Hundreds (thousands?) more known Shown using already known ones:
13
SAT and 3SAT SAT: Are all given “clauses” simultaneously satisfiable? (Conjunctive Normal Form) 3SAT: Each clause has at most 3 literals CLIQUE, INDEP-SET, VERTEX-COVER Hundreds (thousands?) more known Shown using already known ones: If L !p L1 and L1 !p L2, then L !p L2
13
14
Converting a circuit to a collection of clauses:
14
Converting a circuit to a collection of clauses: For each wire (connected component), add a variable
14
Converting a circuit to a collection of clauses: For each wire (connected component), add a variable For each gate, add a clause involving variables for wires connected to the gate:
14
Converting a circuit to a collection of clauses: For each wire (connected component), add a variable For each gate, add a clause involving variables for wires connected to the gate: e.g. : (z⇒x), (z⇒y), (¬z ⇒ ¬x ∨ ¬y). i.e., (¬z ∨ x), (¬z ∨ y), (z ∨ ¬x ∨ ¬y).
AND
x y z
14
Converting a circuit to a collection of clauses: For each wire (connected component), add a variable For each gate, add a clause involving variables for wires connected to the gate: e.g. : (z⇒x), (z⇒y), (¬z ⇒ ¬x ∨ ¬y). i.e., (¬z ∨ x), (¬z ∨ y), (z ∨ ¬x ∨ ¬y). and : (z⇒x ∨ y), (¬z⇒¬x), (¬z⇒¬y).
AND
x y z
OR
x y z
14
15
Previous reduction was to 3SAT, so 3SAT is NP-complete. And SAT is in NP. So SAT !p 3SAT.
15
Previous reduction was to 3SAT, so 3SAT is NP-complete. And SAT is in NP. So SAT !p 3SAT. More directly:
15
Previous reduction was to 3SAT, so 3SAT is NP-complete. And SAT is in NP. So SAT !p 3SAT. More directly: (a ∨ b ∨ c ∨ d ∨ e) " (a ∨ b ∨ x), (¬x ∨ c ∨ d ∨ e) " (a ∨ b ∨ x), (¬x ∨ c ∨ y), (¬y ∨ d ∨ e)
15
Previous reduction was to 3SAT, so 3SAT is NP-complete. And SAT is in NP. So SAT !p 3SAT. More directly: (a ∨ b ∨ c ∨ d ∨ e) " (a ∨ b ∨ x), (¬x ∨ c ∨ d ∨ e) " (a ∨ b ∨ x), (¬x ∨ c ∨ y), (¬y ∨ d ∨ e) Reduction needs 3SAT
15
Previous reduction was to 3SAT, so 3SAT is NP-complete. And SAT is in NP. So SAT !p 3SAT. More directly: (a ∨ b ∨ c ∨ d ∨ e) " (a ∨ b ∨ x), (¬x ∨ c ∨ d ∨ e) " (a ∨ b ∨ x), (¬x ∨ c ∨ y), (¬y ∨ d ∨ e) Reduction needs 3SAT 2SAT is in fact in P! [Exercise]
15
Previous reduction was to 3SAT, so 3SAT is NP-complete. And SAT is in NP. So SAT !p 3SAT. More directly: (a ∨ b ∨ c ∨ d ∨ e) " (a ∨ b ∨ x), (¬x ∨ c ∨ d ∨ e) " (a ∨ b ∨ x), (¬x ∨ c ∨ y), (¬y ∨ d ∨ e) Reduction needs 3SAT 2SAT is in fact in P! [Exercise] Reduction not parsimonious (can you make it? [Exercise])
15
16
Clauses " Graph
16
Clauses " Graph
(x ∨ ¬y ∨ ¬z) (w ∨ x ∨ ¬z) (w ∨ y)
16
Clauses " Graph vertices: each clause’ s satisfying assignments (for its variables)
(x ∨ ¬y ∨ ¬z) (w ∨ x ∨ ¬z) (w ∨ y)
16
Clauses " Graph vertices: each clause’ s satisfying assignments (for its variables)
(x ∨ ¬y ∨ ¬z) (w ∨ x ∨ ¬z)
0*1* 1*1* 1*0*
(w ∨ y)
16
Clauses " Graph vertices: each clause’ s satisfying assignments (for its variables)
(x ∨ ¬y ∨ ¬z) (w ∨ x ∨ ¬z)
0*1* 1*1* 1*0*
(w ∨ y)
16
Clauses " Graph vertices: each clause’ s satisfying assignments (for its variables)
(x ∨ ¬y ∨ ¬z)
*000 *001 *010 *100 *101 *110 *111
(w ∨ x ∨ ¬z)
0*1* 1*1* 1*0*
(w ∨ y)
16
Clauses " Graph vertices: each clause’ s satisfying assignments (for its variables)
(x ∨ ¬y ∨ ¬z)
*000 *001 *010 *100 *101 *110 *111
(w ∨ x ∨ ¬z)
0*1* 1*1* 1*0*
(w ∨ y)
16
Clauses " Graph vertices: each clause’ s satisfying assignments (for its variables)
(x ∨ ¬y ∨ ¬z)
*000 *001 *010 *100 *101 *110 *111
(w ∨ x ∨ ¬z)
00*0 01*1 01*0 10*0 10*1 11*0 11*1 0*1* 1*1* 1*0*
(w ∨ y)
16
Clauses " Graph vertices: each clause’ s satisfying assignments (for its variables) edges between consistent assignments
(x ∨ ¬y ∨ ¬z)
*000 *001 *010 *100 *101 *110 *111
(w ∨ x ∨ ¬z)
00*0 01*1 01*0 10*0 10*1 11*0 11*1 0*1* 1*1* 1*0*
(w ∨ y)
16
Clauses " Graph vertices: each clause’ s satisfying assignments (for its variables) edges between consistent assignments
(x ∨ ¬y ∨ ¬z)
*000 *001 *010 *100 *101 *110 *111
(w ∨ x ∨ ¬z)
00*0 01*1 01*0 10*0 10*1 11*0 11*1 0*1* 1*1* 1*0*
(w ∨ y)
16
Clauses " Graph vertices: each clause’ s satisfying assignments (for its variables) edges between consistent assignments
(x ∨ ¬y ∨ ¬z)
*000 *001 *010 *100 *101 *110 *111
(w ∨ x ∨ ¬z)
00*0 01*1 01*0 10*0 10*1 11*0 11*1 0*1* 1*1* 1*0*
(w ∨ y)
16
Clauses " Graph vertices: each clause’ s satisfying assignments (for its variables) edges between consistent assignments
(x ∨ ¬y ∨ ¬z)
*000 *001 *010 *100 *101 *110 *111
(w ∨ x ∨ ¬z)
00*0 01*1 01*0 10*0 10*1 11*0 11*1 0*1* 1*1* 1*0*
(w ∨ y)
16
Clauses " Graph vertices: each clause’ s satisfying assignments (for its variables) edges between consistent assignments
(x ∨ ¬y ∨ ¬z)
*000 *001 *010 *100 *101 *110 *111
(w ∨ x ∨ ¬z)
00*0 01*1 01*0 10*0 10*1 11*0 11*1 0*1* 1*1* 1*0*
(w ∨ y)
16
Clauses " Graph vertices: each clause’ s satisfying assignments (for its variables) edges between consistent assignments
(x ∨ ¬y ∨ ¬z)
*000 *001 *010 *100 *101 *110 *111
(w ∨ x ∨ ¬z)
00*0 01*1 01*0 10*0 10*1 11*0 11*1 0*1* 1*1* 1*0*
(w ∨ y)
16
Clauses " Graph vertices: each clause’ s satisfying assignments (for its variables) edges between consistent assignments m-clique iff all m clauses satisfiable
(x ∨ ¬y ∨ ¬z)
*000 *001 *010 *100 *101 *110 *111
(w ∨ x ∨ ¬z)
00*0 01*1 01*0 10*0 10*1 11*0 11*1 0*1* 1*1* 1*0*
(w ∨ y)
16
Clauses " Graph vertices: each clause’ s satisfying assignments (for its variables) edges between consistent assignments m-clique iff all m clauses satisfiable
(x ∨ ¬y ∨ ¬z)
*000 *001 *010 *100 *101 *110 *111
(w ∨ x ∨ ¬z)
00*0 01*1 01*0 10*0 10*1 11*0 11*1 0*1* 1*1* 1*0*
(w ∨ y)
16
Clauses " Graph vertices: each clause’ s satisfying assignments (for its variables) edges between consistent assignments m-clique iff all m clauses satisfiable
(x ∨ ¬y ∨ ¬z)
*000 *001 *010 *100 *101 *110 *111
(w ∨ x ∨ ¬z)
00*0 01*1 01*0 10*0 10*1 11*0 11*1 0*1* 1*1* 1*0*
(w ∨ y)
1*1* *110 11*0
sat assignment 3-Clique
16
17
CLIQUE !p INDEP-SET
17
CLIQUE !p INDEP-SET G has an m-clique iff G’ has an m-independent-set
17
CLIQUE !p INDEP-SET G has an m-clique iff G’ has an m-independent-set INDEP-SET !p VERTEX-COVER
17
CLIQUE !p INDEP-SET G has an m-clique iff G’ has an m-independent-set INDEP-SET !p VERTEX-COVER G has an m-indep-set iff G has an (n-m)-vertex-cover
17
P NP coNP
NPC coNPC
18
We say class X is “closed under polynomial reductions” if (L1 !p L2 and L2 in class X) implies L1 in X
P NP coNP
NPC coNPC
18
We say class X is “closed under polynomial reductions” if (L1 !p L2 and L2 in class X) implies L1 in X e.g. P, NP are closed under polynomial reductions
P NP coNP
NPC coNPC
18
We say class X is “closed under polynomial reductions” if (L1 !p L2 and L2 in class X) implies L1 in X e.g. P, NP are closed under polynomial reductions So is co-NP (If X is closed, so is co-X. Why?)
P NP coNP
NPC coNPC
18
We say class X is “closed under polynomial reductions” if (L1 !p L2 and L2 in class X) implies L1 in X e.g. P, NP are closed under polynomial reductions So is co-NP (If X is closed, so is co-X. Why?) If any NPC language is in P, then NP = P
P NP coNP
NPC coNPC
18
We say class X is “closed under polynomial reductions” if (L1 !p L2 and L2 in class X) implies L1 in X e.g. P, NP are closed under polynomial reductions So is co-NP (If X is closed, so is co-X. Why?) If any NPC language is in P, then NP = P If any NPC language is in co-NP, then NP = co-NP
P NP coNP
NPC coNPC
18
We say class X is “closed under polynomial reductions” if (L1 !p L2 and L2 in class X) implies L1 in X e.g. P, NP are closed under polynomial reductions So is co-NP (If X is closed, so is co-X. Why?) If any NPC language is in P, then NP = P If any NPC language is in co-NP, then NP = co-NP Note: X ⊆ co-X ⇒ X = co-X (Why?)
P NP coNP
NPC coNPC
18
We say class X is “closed under polynomial reductions” if (L1 !p L2 and L2 in class X) implies L1 in X e.g. P, NP are closed under polynomial reductions So is co-NP (If X is closed, so is co-X. Why?) If any NPC language is in P, then NP = P If any NPC language is in co-NP, then NP = co-NP Note: X ⊆ co-X ⇒ X = co-X (Why?) L is NP-complete iff Lc is co-NP-complete (Why?)
P NP coNP
NPC coNPC
18
We say class X is “closed under polynomial reductions” if (L1 !p L2 and L2 in class X) implies L1 in X e.g. P, NP are closed under polynomial reductions So is co-NP (If X is closed, so is co-X. Why?) If any NPC language is in P, then NP = P If any NPC language is in co-NP, then NP = co-NP Note: X ⊆ co-X ⇒ X = co-X (Why?) L is NP-complete iff Lc is co-NP-complete (Why?) co-NP complete = co-(NP-complete)
P NP coNP
NPC coNPC
18
19
Polynomial-time reductions
19
Polynomial-time reductions NP-completeness (using Karp reductions)
19
Polynomial-time reductions NP-completeness (using Karp reductions) Trivially, TMSAT
19
Polynomial-time reductions NP-completeness (using Karp reductions) Trivially, TMSAT Interestingly, CKT-SAT, SAT, 3SAT, CLIQUE, INDEP-SET, VERTEX-COVER
19
Polynomial-time reductions NP-completeness (using Karp reductions) Trivially, TMSAT Interestingly, CKT-SAT, SAT, 3SAT, CLIQUE, INDEP-SET, VERTEX-COVER If any NPC language in P, then P=NP
19
20
Ladner’ s Theorem: If NP ! P, then non-P, non-NPC languages
20
Ladner’ s Theorem: If NP ! P, then non-P, non-NPC languages Time hierarchy theorems: More time, more power, strictly!
20