Sei sulla pagina 1di 74

Kernelization

Astrid Pieterse

October 21, 2016


Algorithms and running time 2/37

I Algorithms
• Today we consider decision problems: YES/NO output
I Running time
• Number of steps compared to input size
• Polynomial vs Exponential
• Denoted using big-O notation, O(n5 ) or O(3n )
I NP-hardness
• No polynomial-time algorithm
Why preprocessing 3/37

Suppose the problem is NP-hard, what can we do?


I Provide a way to preprocess an input
I Simplify the input efficiently, while keeping the answer
I Apply the “slow” algorithm to the simplified input

Without preprocessing

x YES/NO

n bits
With preprocessing

x Fast!
x0 YES/NO

n bits n0
Great preprocessing 4/37

A great preprocessing algorithm would:


I Run in polynomial time
I Not change the answer
I Reduce the size of the instance to size n 0 < n

x Fast!
x0
n bits n0
Great preprocessing: does not exist 5/37

For NP-hard problems, such algorithms are not believed to exist:


I We can use them to solve the problem in polynomial time

• As soon as the instance x has constant size (say, 6 5), solve it in


constant time
• Otherwise, run Preprocess(x) to find a smaller instance x 0
• Recurse on x 0

I Does 6 n steps in polynomial time → polynomial time

x x0 x00 ... Yes/No

n bits ≤n−1 ≤n−2 ≤5


Parameterized preprocessing 6/37

I Consider an additional parameter k, and measure the size of the


preprocessed instance as a function of k
I k denotes the complexity of the instance in some way
• Measure of how tree-like a graph is
• Number of variables in a problem
. . . More examples later
I An instance that is large compared to k must somehow contain
many irrelevant parts

x parameter k
Poly-time
x0 k0
n bits ≤ f (k)
Parameterized preprocessing: kernels 7/37

Kernelization
Find an algorithm that
I Runs in polynomial time
I Outputs an equivalent instance of the same problem
I The new instance is small
• Bounded by some function f(k)
• Independent of n

Such an algorithm is called a kernel

x parameter k
Poly-time
x0 k0
n bits ≤ f (k)
Kernelization: Example 8/37

I Visit all my k friends in a tour


I k! possible orders
• Hard problem
I Input size
• Huge!
I Simplify input
• Replace the road network by
a graph
• Edge {A, B} keeps the
distance from A to B
• Equivalently, a distance table
I Kernel size
• Number of cities squared
• Much smaller
Kernelization: Example 8/37

I Visit all my k friends in a tour


I k! possible orders
• Hard problem
I Input size
• Huge!
I Simplify input
• Replace the road network by
a graph
• Edge {A, B} keeps the
distance from A to B
• Equivalently, a distance table
I Kernel size
• Number of cities squared
• Much smaller
Kernelization: Example 8/37

I Visit all my k friends in a tour


I k! possible orders
• Hard problem
I Input size
• Huge!
I Simplify input
• Replace the road network by
a graph
• Edge {A, B} keeps the
distance from A to B
• Equivalently, a distance table
I Kernel size
• Number of cities squared
• Much smaller
Kernelization: Example 8/37

I Visit all my k friends in a tour


I k! possible orders
• Hard problem
I Input size
• Huge!
I Simplify input
• Replace the road network by
a graph Utrecht

• Edge {A, B} keeps the


distance from A to B 94
• Equivalently, a distance table
I Kernel size Eindhoven

• Number of cities squared


• Much smaller
Kernelization: Example 8/37

I Visit all my k friends in a tour


I k! possible orders
• Hard problem
I Input size
• Huge!
I Simplify input
• Replace the road network by
a graph 98
135

• Edge {A, B} keeps the 139


83
90

distance from A to B 111 94

Equivalently, a distance table


68
• 66

I Kernel size 34

• Number of cities squared


• Much smaller
Kernelization: Example 8/37

I Visit all my k friends in a tour


I k! possible orders
• Hard problem
I Input size
• Huge!
I Simplify input
• Replace the road network by
a graph 98
135

• Edge {A, B} keeps the 139


83
90

distance from A to B 111 94

Equivalently, a distance table


68
• 66

I Kernel size 34

• Number of cities squared


• Much smaller
Kernelization: Example 9/37

Correctness
I The new instance is small
I Can solve shortest path in
polynomial time
I Correctness?
Kernelization: Example 10/37

Suppose the kernel has some tour


I If this tour uses edge {A, B},
replace by shortest path
Kernelization: Example 10/37

Suppose the kernel has some tour


I If this tour uses edge {A, B},
replace by shortest path
Kernelization: Example 10/37

Suppose the kernel has some tour


I If this tour uses edge {A, B},
replace by shortest path
Kernelization: Example 10/37

Suppose the kernel has some tour


I If this tour uses edge {A, B},
replace by shortest path
Exercises 11/37

1. We just saw a simple example of a kernel. But does it actually follow


all the rules?
You may assume that the decision problem asks whether there is a
tour of length at most `

Kernel:
I Runs in polynomial time
I x is a yes-instance ⇔ x 0 is a yes-instance
I |x 0 | 6 f(k) and k 0 6 f(k)
Solutions 12/37

1. Technically, the size is not completely correct. How large are the
edge-weights (length of shortest paths) that we store??
They are not bounded by k.
But, there are ways to solve the problem, there is a way to “rescale”
our weights such that they can be stored efficiently
Satisfiability variants 13/37

I Input: some formula with boolean variables

(x ∨ y) ∧ (z ∨ ¬y ∨ w) ∧ . . .

I Used to verify specifications


I Rule out incorrect behaviour in chip design
I Type of formula depends on practical problem
• influence running times of algorithms
• influences kernel size?
Exact Satisfiability 14/37

Input CNF-formula F consisting of clauses each consisting of a


number of literals, a literal is a variable or its negation

F = {¬x, ¬y} ∧{¬y, z} ∧ {x, z}


| {z }
clause

Parameter The number of variables


Question Does there exist an assignment to the variables, such that
each clause contains exactly one true literal?

With few variables, exponentially many clauses can be made

To obtain a kernel, we need to reduce the formula such that we can we


bound the number of remaining clauses
Exact Satisfiability: Example 15/37

Input:
F = {¬x, ¬y} ∧{¬y, z} ∧ {x, z}
| {z }
clause

has satisfying assignment

x ← true, y ← false, z ← false

Substituted in F this gives:

{false, true} ∧ {true, false} ∧ {true, false}

Exactly 1 true literal in each clause, as required


Kernel for Exact Satisfiability 16/37

Example
Let x, y, z ∈ {0, 1} (where 0 is false, 1 is true), then

{¬x, ¬y} ∧ ( 1 − x) + ( 1 − y ) = 1 x+y =1


{¬y, z} ∧ ⇔ (1 − y) + z =1 ⇔ z−y =0
{x, z} x+z =1 x+z =1
is exact-sat

I Clause {x, z} is satisfied if the other two clauses are satisfied


Kernel for Exact Satisfiability 16/37

Example
Let x, y, z ∈ {0, 1} (where 0 is false, 1 is true), then

{¬x, ¬y} ∧ ( 1 − x) + ( 1 − y ) = 1 x+y =1


{¬y, z} ∧ ⇔ (1 − y) + z =1 ⇔ z−y =0
{x, z} x+z =1 x+z =1
is exact-sat

I Clause {x, z} is satisfied if the other two clauses are satisfied


Kernel for Exact Satisfiability 16/37

Example
Let x, y, z ∈ {0, 1} (where 0 is false, 1 is true), then

{¬x, ¬y} ∧ ( 1 − x) + ( 1 − y ) = 1 x+y =1


{¬y, z} ∧ ⇔ (1 − y) + z =1 ⇔ z−y =0
{x, z} x+z =1 x+z =1
is exact-sat

I Clause {x, z} is satisfied if the other two clauses are satisfied


Kernel for Exact Satisfiability 16/37

Example
Let x, y, z ∈ {0, 1} (where 0 is false, 1 is true), then

{¬x, ¬y} ∧ ( 1 − x) + ( 1 − y ) = 1 x+y =1


{¬y, z} ∧ ⇔ (1 − y) + z =1 ⇔ z−y =0
+
{x, z} x+z =1 x+z =1
is exact-sat

I Clause {x, z} is satisfied if the other two clauses are satisfied


Kernel for Exact Satisfiability 16/37

Example
Let x, y, z ∈ {0, 1} (where 0 is false, 1 is true), then

{¬x, ¬y} ∧ ( 1 − x) + ( 1 − y ) = 1 x+y =1


{¬y, z} ∧ ⇔ (1 − y) + z =1 ⇔ z−y =0
+
{x, z} x+z =1 x+z =1
is exact-sat

I Clause {x, z} is satisfied if the other two clauses are satisfied


Kernel for Exact Satisfiability 17/37

Algorithm
I Given formula F
I Rewrite by giving an linear equation for each clause
I Find a basis of the row-space
• Use Gaussian elimination
I Remove constraints not in the basis

 

1 0 ... 1

  1
1 1 ... 0 x 1  1. 
  
 ..  .
.

  . = 
 ... ... ... ... 

 ...  .. 
... ... ...  xn .
0 −1 ... 1 0
Kernel for Exact Satisfiability 17/37

Algorithm
I Given formula F
I Rewrite by giving an linear equation for each clause
I Find a basis of the row-space
• Use Gaussian elimination
I Remove constraints not in the basis

 

1 0 ... 1

  1
1 1 ... 0 x 1  1. 
  
 ..  .
.

  . = 
 ... ... ... ... 

 ...  .. 
... ... ...  xn .
0 −1 ... 1 0
Kernel for Exact Satisfiability 17/37

Algorithm
I Given formula F
I Rewrite by giving an linear equation for each clause
I Find a basis of the row-space
• Use Gaussian elimination
I Remove constraints not in the basis

 
1 0 ... 1 1
1 1 ... 0 1
 
 ... ... ... ... 
 
 ... ... ... ... 
0 −1 ... 1 0
Kernel for Exact Satisfiability 17/37

Algorithm
I Given formula F
I Rewrite by giving an linear equation for each clause
I Find a basis of the row-space
• Use Gaussian elimination
I Remove constraints not in the basis

 
1 0 ... 1 1
1 1 ... 0 1
 
 ... ... ... ... ... 
 
 ... ... ... ... ... 
0 −1 ... 1 0
Kernel for Exact Satisfiability 17/37

Algorithm
I Given formula F
I Rewrite by giving an linear equation for each clause
I Find a basis of the row-space
• Use Gaussian elimination
I Remove constraints not in the basis

 
1 0 ... 1 1
1 1 ... 0 1
... ... ... ... ...
Kernel for Exact Satisfiability 18/37

Correctness
I Polynomial time
I yes-instance after removing constraints ⇒ F is a yes-instance

Size
I Matrix size (#clauses) × (n + 1)
I At most n + 1 clauses remaining
Kernel for Exact Satisfiability: Recap 19/37

I Problem can be represented by linear equations


I Gives a linear kernel

Q: What about problems represented by equations of higher-degree


polynomials?
Kernel for Exact Satisfiability: Recap 19/37

I Problem can be represented by linear equations


I Gives a linear kernel

Q: What about problems represented by equations of higher-degree


polynomials?
Exercise 20/37

Find a kernel for the 3-NAE-SAT problem that has O(n2 ) constraints.
Input A formula in CNF-form where every clause contains exactly
3 variables, such as

F = {x, y, z} ∧ {y, z, w} ∧ . . .
| {z }
clause

You may assume that the input contains no negations.


Parameter The number of variables.
Question Does there exist an assignment to the variables, such that
each clause contains at least one true and at least one
false variable?

Hint: Find a degree-2 polynomial f to represent a clause, for example

f(x, y, z) = 0 ⇔ {x, y, z} contains 1 or 2 true variables


Solution: 3-NAE-SAT 21/37

Find a degree-2 polynomial to represent a clause. Start simple:


1. Single variable: {x}. Never satisfied.
2. Small clause: {x, y}. Satisfied iff x + y = 1
3. Consider {x, y, z}. Satisfied iff x + y + z ∈ {1, 2},

x + y + z − (xy + xz + yz) = 1
| {z } | {z }
#true vars. #true pairs

d. Generally for clause {x1 , x2 , . . . , xd } let


g(t) := (t − 1)(t − 2) · · · (t − d + 1), define

f(x1 , . . . , xd ) := g(x1 + x2 + . . . + xd )
General solution: d-NAE-SAT 22/37

Find a degree-(d − 1) polynomial g to represent a clause


Kernel:
I Construct such a polynomial for each clause
I Construct matrix A with one row for each clause
• Row i contains all coefficients of the polynomial of clause i
I Do Gaussian elimination, find a basis
I Remove all clauses belonging to rows NOT in this basis

#clauses = #coefficients in the polynomials = O(nd−1 )


Example 3: 3-Coloring 23/37

Problem
Given: Graph G
Question: Is it possible to color each vertex of G with red, green or blue
such that any two endpoints of an edge have a different color

Parameter
The size of a vertex cover in G: a set S of vertices, such that for every
edge at least one endpoint is in S

Goal
Find a small kernel (wrt |S|) !
We assume S is given

Problem:
There are many graphs with a small vertex cover
Example 3: 3-Coloring 23/37

Problem
Given: Graph G
Question: Is it possible to color each vertex of G with red, green or blue
such that any two endpoints of an edge have a different color

Parameter
The size of a vertex cover in G: a set S of vertices, such that for every
edge at least one endpoint is in S

Goal
Find a small kernel (wrt |S|) !
We assume S is given

Problem:
There are many graphs with a small vertex cover
Example 3: 3-Coloring 23/37

Problem
Given: Graph G
Question: Is it possible to color each vertex of G with red, green or blue
such that any two endpoints of an edge have a different color

Parameter
The size of a vertex cover in G: a set S of vertices, such that for every
edge at least one endpoint is in S

Goal
Find a small kernel (wrt |S|)
We assume S is given

Problem:
There are many graphs with a small vertex cover
Example 3: 3-Coloring 23/37

Problem
Given: Graph G
Question: Is it possible to color each vertex of G with red, green or blue
such that any two endpoints of an edge have a different color

Parameter
The size of a vertex cover in G: a set S of vertices, such that for every
edge at least one endpoint is in S

Goal
Find a small kernel (wrt |S|)
We assume S is given

Problem:
There are many graphs with a small vertex cover
Example 3: 3-Coloring 23/37

Problem
Given: Graph G
Question: Is it possible to color each vertex of G with red, green or blue
such that any two endpoints of an edge have a different color

Parameter
The size of a vertex cover in G: a set S of vertices, such that for every
edge at least one endpoint is in S

Goal
Find a small kernel (wrt |S|)
We assume S is given

Problem:
There are many graphs with a small vertex cover
Example 3: 3-Coloring 23/37

Problem
Given: Graph G
Question: Is it possible to color each vertex of G with red, green or blue
such that any two endpoints of an edge have a different color

Parameter
The size of a vertex cover in G: a set S of vertices, such that for every
edge at least one endpoint is in S

Goal
Find a small kernel (wrt |S|)
We assume S is given

Problem:
There are many graphs with a small vertex cover
Example 3: 3-Coloring 23/37

Problem
Given: Graph G
Question: Is it possible to color each vertex of G with red, green or blue
such that any two endpoints of an edge have a different color

Parameter
The size of a vertex cover in G: a set S of vertices, such that for every
edge at least one endpoint is in S

Goal
Find a small kernel (wrt |S|)
We assume S is given

Problem:
There are many graphs with a small vertex cover
Kernel for 3-coloring 24/37

Put vertices in the vertex cover on the left,


all others on the right
I Vertices not in S cannot be connected
S
to each other u
I When can we color a vertex not in S?
I Vertices with degree at least 3 in v
V(G) \ S can cause a problem
• Low-degree vertices in V(G) \ S
could safely be removed w
x
Kernel for 3-coloring 24/37

Put vertices in the vertex cover on the left,


all others on the right
I Vertices not in S cannot be connected
S
to each other u
I When can we color a vertex not in S?
I Vertices with degree at least 3 in v
V(G) \ S can cause a problem
• Low-degree vertices in V(G) \ S
could safely be removed w
x
Kernel for 3-coloring 24/37

Put vertices in the vertex cover on the left,


all others on the right
I Vertices not in S cannot be connected
S
to each other u
I When can we color a vertex not in S?
I Vertices with degree at least 3 in v
V(G) \ S can cause a problem
• Low-degree vertices in V(G) \ S
could safely be removed w
x
Kernel for 3-coloring 24/37

Put vertices in the vertex cover on the left,


all others on the right
I Vertices not in S cannot be connected
S
to each other u
I When can we color a vertex not in S?
I Vertices with degree at least 3 in v
V(G) \ S can cause a problem
• Low-degree vertices in V(G) \ S
could safely be removed w
x
Kernel for 3-coloring 24/37

Put vertices in the vertex cover on the left,


all others on the right
I Vertices not in S cannot be connected
S
to each other u
I When can we color a vertex not in S?
I Vertices with degree at least 3 in v
V(G) \ S can cause a problem
• Low-degree vertices in V(G) \ S
could safely be removed w
x
Kernel for 3-coloring 25/37

Algorithm S
Given: graph G, vertex cover S u
First, we mark vertices we want to keep: v
I For any three distinct vertices u, v, w in S
w
I Mark one common neighbor in V(G) \ S
Remove all unmarked vertices in V(G) \ S x
For u, v, w
I Mark one vertex
For v, w, x
I Mark one vertex.
Other triples have no common neighbor
Kernel for 3-coloring 25/37

Algorithm S
Given: graph G, vertex cover S u
First, we mark vertices we want to keep: v
I For any three distinct vertices u, v, w in S
w
I Mark one common neighbor in V(G) \ S
Remove all unmarked vertices in V(G) \ S x
For u, v, w
I Mark one vertex
For v, w, x
I Mark one vertex.
Other triples have no common neighbor
Kernel for 3-coloring 25/37

Algorithm S
Given: graph G, vertex cover S u
First, we mark vertices we want to keep: v
I For any three distinct vertices u, v, w in S
w
I Mark one common neighbor in V(G) \ S
Remove all unmarked vertices in V(G) \ S x
For u, v, w
I Mark one vertex
For v, w, x
I Mark one vertex.
Other triples have no common neighbor
Kernel for 3-coloring 25/37

Algorithm S
Given: graph G, vertex cover S u
First, we mark vertices we want to keep: v
I For any three distinct vertices u, v, w in S
w
I Mark one common neighbor in V(G) \ S
Remove all unmarked vertices in V(G) \ S x
For u, v, w
I Mark one vertex
For v, w, x
I Mark one vertex.
Other triples have no common neighbor
Kernel for 3-coloring 26/37

Correctness
Let the original input be G and the new graph G 0
Clearly if G is 3-colorable, so is G 0 . Suppose G 0 is 3-colorable, show
how to color G
I Copy the coloring of G 0 to G

• This colors all vertices in S


I For every vertex in V(G) \ V(G 0 ) assign it a different color than any
of its neighbors
• All neighbors are in S, those colorings are known
Clearly this yields a valid coloring for G S
I But we need to show that the last
step is always possible!
Kernel for 3-coloring 26/37

Correctness
Let the original input be G and the new graph G 0
Clearly if G is 3-colorable, so is G 0 . Suppose G 0 is 3-colorable, show
how to color G
I Copy the coloring of G 0 to G

• This colors all vertices in S


I For every vertex in V(G) \ V(G 0 ) assign it a different color than any
of its neighbors
• All neighbors are in S, those colorings are known
Clearly this yields a valid coloring for G S
I But we need to show that the last
step is always possible!
Kernel for 3-coloring 26/37

Correctness
Let the original input be G and the new graph G 0
Clearly if G is 3-colorable, so is G 0 . Suppose G 0 is 3-colorable, show
how to color G
I Copy the coloring of G 0 to G

• This colors all vertices in S


I For every vertex in V(G) \ V(G 0 ) assign it a different color than any
of its neighbors
• All neighbors are in S, those colorings are known
Clearly this yields a valid coloring for G S
I But we need to show that the last
step is always possible!
Kernel for 3-coloring 26/37

Correctness
Let the original input be G and the new graph G 0
Clearly if G is 3-colorable, so is G 0 . Suppose G 0 is 3-colorable, show
how to color G
I Copy the coloring of G 0 to G

• This colors all vertices in S


I For every vertex in V(G) \ V(G 0 ) assign it a different color than any
of its neighbors
• All neighbors are in S, those colorings are known
Clearly this yields a valid coloring for G S
I But we need to show that the last
step is always possible!
Kernel for 3-coloring 26/37

Correctness
Let the original input be G and the new graph G 0
Clearly if G is 3-colorable, so is G 0 . Suppose G 0 is 3-colorable, show
how to color G
I Copy the coloring of G 0 to G

• This colors all vertices in S


I For every vertex in V(G) \ V(G 0 ) assign it a different color than any
of its neighbors
• All neighbors are in S, those colorings are known
Clearly this yields a valid coloring for G S
I But we need to show that the last
step is always possible!
Kernel for 3-coloring 26/37

Correctness
Let the original input be G and the new graph G 0
Clearly if G is 3-colorable, so is G 0 . Suppose G 0 is 3-colorable, show
how to color G
I Copy the coloring of G 0 to G

• This colors all vertices in S


I For every vertex in V(G) \ V(G 0 ) assign it a different color than any
of its neighbors
• All neighbors are in S, those colorings are known
Clearly this yields a valid coloring for G S
I But we need to show that the last
step is always possible!
Kernel for 3-coloring 27/37

Correctness
Suppose vertex y in V(G) \ V(G 0 ) cannot be colored
I Thus, it has three neighbors u, v, w which are red, green and blue
respectively
I But then there is a node y 0 in G 0 with neighbors u, v, w
• since some vertex was marked by u, v, w
I Thus y 0 cannot be colored properly; contradiction

G 0 has a 3-coloring if and only if G has a 3-coloring


Kernel for 3-coloring 28/37

Size
Remember: parameter |S|. Count the vertices in G 0 :
I All vertices in S, clearly there are |S|
I One vertex for all triples in S, at most |S|3
I In total O(|S|3 ) vertices and
• Possibly O(|S|4 ) edges with this kernel

Can we do better? Maybe we can reuse some previous insights:


I Find which vertices outside S are redundant
Kernel for 3-coloring 28/37

Size
Remember: parameter |S|. Count the vertices in G 0 :
I All vertices in S, clearly there are |S|
I One vertex for all triples in S, at most |S|3
I In total O(|S|3 ) vertices and
• Possibly O(|S|4 ) edges with this kernel

Can we do better? Maybe we can reuse some previous insights:


I Find which vertices outside S are redundant
Kernel for 3-coloring 29/37

To find redundant vertices, use a method that finds redundant clauses


I Replace each vertex in V(G) \ S by a constraint
I For every vertex v ∈ S we have three 0/1 variables
• rv , gv and bv indicating its color
I For every v ∈
/ S we have a constraint
• Let v have neighbors 1, 2 and 3
X
(ri rj + bi bj + gi gj ) ≡ 1 (mod 2)
16i<j63

• If all distinct colors: result is 0


• Else, sum is 1 or 3
I Degree-2 polynomial, this allows us to find O(n2 ) relevant vertices
and remove all others

Size: O(|S|2 ) vertices (and edges) remain


Lower bounds 30/37

Is a given kernel for a parameterized problem optimal?


I or is there a smaller kernel wrt the same parameter?

Therefore, we want lower bounds on kernel sizes.


I For which we need some assumptions
I For example; P 6= NP

First idea:
Suppose: you already know some lower bound for some problem
Can we use it to get lower bounds for other problems?
Re-using existing kernels 31/37

A kernel for problem X can sometimes be used to get a (general type of)
kernel for problem Y

3-Coloring Quadratic equations over 0/1-variables

Given: a kernel for problem X

y Poly-
parameter k time
x g(k)
Kernel x0 k0
n bits poly(n) f (g(k))

We can use this to transfer lower bounds


Very similar to giving NP-hardness reductions!
Re-using Lower bounds 32/37

GIVEN: problem Y has no (generalized) kernel of polynomial size


Suppose there is an algorithm that has as input (y, k) for problem Y and
I Outputs an instance (x, k 0 ) for problem X in polynomial time
I (x, k 0 ) is a yes-instance ⇔ (y, k) is a yes-instance
I k 0 is bounded by kc for a constant c

Supposed kernel for X

y Poly-
parameter k time
x c
Kernel x0 k 00
k
n bits poly(n) f (k c )

Polynomial kernel for Y


Re-using Lower bounds 32/37

GIVEN: problem Y has no (generalized) kernel of polynomial size


Suppose there is an algorithm that has as input (y, k) for problem Y and
I Outputs an instance (x, k 0 ) for problem X in polynomial time
I (x, k 0 ) is a yes-instance ⇔ (y, k) is a yes-instance
I k 0 is bounded by kc for a constant c

Supposed kernel for X

y Poly-
parameter k time
x c
Kernel x0 k 00
k
n bits poly(n) f (k c )

Polynomial kernel for Y


Lower bound: NAE-SAT 33/37

It is known that CNF-SAT with unbounded clause length does not have a
kernel of size polynomial in the number of variables
I Transform an instance of CNF-SAT to NAE-SAT, to get a lower bound
Add new variable t to each clause

F = (x ∨ y) ∧ (x ∨ ¬y ∨ z) ∧ (¬w ∨ x)

becomes
F 0 = {t, x, y} ∧ {t, x, ¬y, z} ∧ {t, ¬w, x}
I Can be done in polynomial time
I The number of variables only increased by 1
I It remains to show F is satisfiable iff F 0 is
Lower bound: NAE-SAT 34/37

F = ( x ∨ y) ∧ ( x ∨ ¬y ∨ z) ∧ ( ¬w ∨x)
F 0 = {t, x, y} ∧ {t, x, ¬y, z} ∧ (t, ¬w, x)

Suppose F is satisfiable
I Keep the same assignment for F 0 , extended with t := false
I Every clause in F 0 has a false variable (namely, t)
I and one true variable (from satisfying F)

Suppose F 0 is satisfiable
I If t = false, keep the same assignment for F
I If t = true, take the opposite assignment for F
Exercises 35/37

1. Does Exact-SAT have a polynomial kernel when parameterized by


the number of variables?

2. If all clauses have size d, CNF-SAT with n variables does not have a
kernel of size O(nd−ε ), for any ε.
a. Can we use this bound to obtain a bound for NAE-SAT with d variables
per clause? How?
b. Can we hope to improve the kernel for 3-NAE-SAT with O(n2 )
constraints that we saw in a previous exercise?
Solutions 36/37

1. Does Exact-SAT have a polynomial kernel when parameterized by


the number of variables?
Yes, we have seen that the number of constraints can be reduced to
O(n) giving a kernel of O(n2 log n). This implies that there is no
reduction from CNF-SAT to Exact-SAT

2. If all clauses have size d, CNF-SAT with n variables does not have a
kernel of size O(nd−ε ), for any ε.
a. Can we use this bound to obtain a bound for NAE-SAT with d variables
per clause? How?
Yes (proof on whiteboard)
b. Can we hope to improve the kernel for 3-NAE-SAT with O(n2 )
constraints that we saw in a previous exercise?
Not really, there is no kernel of size O(n2−ε ). But improvements by
logarithmic factors could still be possible.
Questions? 37/37

Potrebbero piacerti anche