You are on page 1of 2

Problem​ ​2

We​ ​need​ ​to​ ​show​ ​that​ ​the​ ​monotone​ ​SAT​ ​problem​ ​is​ ​NP-complete.​ ​This​ ​means​ ​we​ ​need
to​ ​show​ ​that​ ​it​ ​is​ ​both​ ​NP​ ​and​ ​NP-hard.

First,​ ​we​ ​prove​ ​that​ ​it​ ​is​ ​NP:

It​ ​becomes​ ​obvious​ ​that​ ​we​ ​can​ ​easily​ ​have​ ​a​ ​polynomial​ ​time​ ​(p-time)​ ​certifier​ ​for​ ​this
problem​ ​instance.​ ​Here,​ ​the​ ​certifier​ ​checks​ ​whether​ ​setting​ ​the​ ​given​ ​‘k’​ ​variables​ ​to​ ​true​ ​makes
the​ ​problem​ ​instance​ ​satisfiable,​ ​and​ ​checking​ ​k​ ​variables​ ​to​ ​see​ ​if​ ​they​ ​satisfy​ ​the​ ​constraints​ ​of
the​ ​monotone​ ​SAT​ ​problem​ ​takes​ ​polynomial​ ​time​ ​(i.e.​ ​given​ ​the​ ​k​ ​variables​ ​and​ ​their​ ​values,
simply​ ​evaluate​ ​the​ ​whole​ ​boolean​ ​statement,​ ​which​ ​takes​ ​p-time).​ ​Therefore​ ​the​ ​monotone​ ​SAT
problem​ ​is​ ​NP.

Then,​ ​we​ ​prove​ ​that​ ​the​ ​problem​ ​is​ ​NP-hard:

We​ ​will​ ​reduce​ ​the​ ​Vertex​ ​Cover​ ​problem​ ​(VCP),​ ​which​ ​is​ ​a​ ​known​ ​NP-complete
problem,​ ​to​ ​an​ ​instance​ ​of​ ​the​ ​monotone​ ​SAT​ ​problem​ ​(MSP)​ ​to​ ​show​ ​that​ ​the​ ​MSP​ ​is​ ​also
NP-complete.

If​ ​we​ ​have​ ​a​ ​graph​ ​G​ ​=​ ​(v,​ ​E)​ ​and​ ​a​ ​value​ ​k,​ ​we​ ​need​ ​to​ ​decide​ ​if​ ​there​ ​is​ ​a​ ​vertex​ ​cover
of​ ​G​ ​which​ ​has​ ​a​ ​size​ ​of​ ​at​ ​most​ ​k.​ ​We​ ​can​ ​create​ ​an​ ​equivalent​ ​instance​ ​of​ ​the​ ​MSP​ ​with​ ​the
fewest​ ​number​ ​of​ ​true​ ​variables​ ​in​ ​the​ ​following​ ​manner:

For​ ​every​ ​vertex​ ​in​ ​G,​ ​represent​ ​the​ ​vertex​ ​with​ ​a​ ​variable​ ​xi,​ ​and​ ​for​ ​each​ ​edge​ ​e​ ​=​ ​(u,v),
we​ ​represent​ ​the​ ​edge​ ​with​ ​a​ ​boolean​ ​clause​ ​cj​ ​=​ ​(x1​ ​V​ ​x2).​ ​Now​ ​that​ ​we’ve​ ​constructed​ ​our
graph​ ​G,​ ​we​ ​need​ ​to​ ​see​ ​if​ ​all​ ​the​ ​clauses​ ​cj​ ​can​ ​be​ ​satisfied​ ​by​ ​setting​ ​at​ ​most​ ​k​ ​variables​ ​to​ ​true.
This​ ​leads​ ​us​ ​to​ ​the​ ​two​ ​parts​ ​of​ ​the​ ​bidirectional​ ​proof:​ ​if​ ​our​ ​inputs​ ​for​ ​the​ ​VCP​ ​produces​ ​a
solution,​ ​then​ ​the​ ​inputs​ ​for​ ​the​ ​MSP​ ​must​ ​also​ ​produce​ ​a​ ​solution;​ ​likewise,​ ​if​ ​our​ ​inputs​ ​for​ ​the
MSP​ ​produces​ ​a​ ​solution,​ ​then​ ​the​ ​inputs​ ​for​ ​the​ ​VCP​ ​must​ ​also​ ​produce​ ​a​ ​solution.

First​ ​part:
If​ ​there​ ​is​ ​a​ ​vertex​ ​cover​ ​of​ ​size​ ​at​ ​most​ ​k​ ​for​ ​the​ ​graph​ ​G,​ ​then​ ​we​ ​set​ ​all​ ​the​ ​variables
corresponding​ ​to​ ​the​ ​vertices​ ​in​ ​the​ ​vertex​ ​cover​ ​to​ ​true,​ ​and​ ​all​ ​other​ ​variables​ ​to​ ​false.​ ​By​ ​the
properties​ ​of​ ​a​ ​vertex​ ​cover,​ ​each​ ​edge​ ​is​ ​covered​ ​by​ ​a​ ​vertex​ ​in​ ​the​ ​vertex​ ​cover,​ ​which​ ​implies
that​ ​each​ ​clause​ ​contains​ ​at​ ​least​ ​one​ ​variable​ ​set​ ​to​ ​true.​ ​Since​ ​all​ ​the​ ​clauses​ ​are​ ​OR​ ​clauses,​ ​all
clauses​ ​corresponding​ ​to​ ​the​ ​edges​ ​covered​ ​by​ ​the​ ​vertex​ ​cover​ ​will​ ​be​ ​satisfied​ ​and​ ​will​ ​result​ ​in
the​ ​final​ ​statement​ ​evaluating​ ​to​ ​true.
Second​ ​Part:​ ​Assume​ ​that​ ​there​ ​is​ ​a​ ​way​ ​to​ ​satisfy​ ​all​ ​the​ ​clauses​ ​by​ ​setting​ ​a​ ​subset​ ​of​ ​the
variables,​ ​with​ ​size​ ​of​ ​at​ ​most​ ​k​ ​variables,​ ​to​ ​true.​ ​If​ ​we​ ​now​ ​consider​ ​the​ ​corresponding​ ​vertices
in​ ​the​ ​graph​ ​G,​ ​each​ ​edge​ ​must​ ​have​ ​at​ ​least​ ​one​ ​end/one​ ​vertex​ ​to​ ​be​ ​set​ ​to​ ​true.​ ​We​ ​know​ ​this
because​ ​of​ ​the​ ​fact​ ​that​ ​the​ ​clause​ ​that​ ​corresponds​ ​to​ ​such​ ​an​ ​edge​ ​must​ ​contain​ ​a​ ​variable​ ​in​ ​our
aforementioned​ ​subset.​ ​Thus,​ ​the​ ​nodes​ ​corresponding​ ​to​ ​the​ ​variables​ ​in​ ​S​ ​forms​ ​a​ ​vertex​ ​cover
of​ ​size​ ​at​ ​most​ ​k.

We’ve​ ​shown​ ​both​ ​parts​ ​of​ ​the​ ​proof​ ​for​ ​NP-hardness.​ ​Since​ ​our​ ​problem​ ​is​ ​both​ ​NP​ ​and
NP-hard,​ ​it​ ​is​ ​NP-complete.

You might also like