[算法笔记]NPC问题证明sample
- 前言
- 一些概念
- 一些例子
- Reduction to 3-Coloring
- NP Basics
- reduce vertex cover to dominating set
- 另一个解法:reduce set cover to dominating set
- partition, subset sum and knapsack
- 另解
- Orthogonal vectors
- reduce vertex cover to set cover
- 祝大家圣诞快乐,Merry Christmas!!
前言
关于一些具体细节可以看我这篇博文NPC问题证明
一些概念
先问大家几个问题,帮助大家理解一些概念
- There exists a polynomial time reduction from 3SAT to Palindrome Checking. Assume that Palindrome Checking is a program that verifies if a given word is a palindrome or not.
Note: A palindrome is a word that reads the same forwards as well as backwards. For example,
“CS17071SC” is a palindrome, but “CS170” is not - There exists a polynomial time reduction from any NP hard problem to any other NP hard problem
- There exists a polynomial time reduction from Palindrome Checking to 3SAT
想一下这几个问题的答案,或者说他们在什么情况下是对的,什么情况下是错的。下面我们来揭晓答案
1.首先关于回文检测显然可以在多项式时间内确认,所以回文检测是NP的,3SAT是一个NPC问题。回归到NPC问题的定义,NPC问题是可以在多项式时间内将NP问题归约为的问题。这并不符合NPC问题的定义,显然无法保证。但是这在NP=P的时候是对的,因为NPC问题是NP问题,而NP问题的定义是P问题可以在多项式时间内归约为的问题。所以3SAT是P问题,故3SAT可以在多项式时间内归约为回文检测问题。
为了方便大家理解,给大家一张图
下一级可以在多项时间内归约到上一级。除了P问题和NP问题有原始的·定义,NPC和NPH都是从NP和P来的
2.错误,因为这不符合NPH的定义
3.对,因为NP问题可以在多项式时间内归约为NPC问题
一些例子
OK,回到正题,回顾一下我们的证明步骤。1)先证明该问题A的任意一个solution可以在多项式时间内被验证来说明这个问题是是NP问题
2)找一个NPC问题B,将该NPC问题归约为这个问题,所以这个问题是NPH问题
3)证明B有解当前仅当A问题有解
声明:以下问题来自我的作业,解法来自我和我的同学
先给大家讲一些会用到的问题的定义(来自我的cheatsheet)
Reduction to 3-Coloring
NP Basics
reduce vertex cover to dominating set
另一个解法:reduce set cover to dominating set
partition, subset sum and knapsack