P、NP、NPC、NP-hard

  • P:多项式时间能够解决的问题的集合,比如最短路径问题是集合P的一个元素,而最短路径问题本身又是一个集合,因此P是集合的集合。
  • NP:多项式时间内能够验证的问题的集合。【P$\subseteq$NP】
  • NPC:B是NPC问题当且仅当(1)B是NP问题;(2)存在一个已知的NPC问题A,A能规约到B。
  • NP-hard:如果问题B不满足NPC的第一个条件,但满足第二个条件,则称B是NP-hard的。

规约:$A \le_p B$

如果我们要证明问题B是NPC问题,则我们需要找到一个已知的NPC问题A,且要证明问题B至少比问题A难,即$A \le_p B$。

分配寝室问题

  新生来了,学校需要分配寝室(k人一间),为了更人性化,首先征求学生意见,假设共有n个学生且n为k的倍数,每k个学生可以商量后作为一组,并提交一份意向表,意向表内容是k个学生姓名,表示这k个学生相互同意住在一个寝室,当然对于任何一个学生,他可以从属于多个组,问:是否存在一个合理的分配寝室的方案?

  分配寝室问题的实例:

  1. 学生集合S
  2. m个意向表C
  3. 寝室能容纳的学生数k

我们用函数 allocation(S,C,k) 来表示解决分配寝室问题的函数。

比如:

k=4,n=16(学生用1,...,16进行编号),共6份意向表:{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16},{1,5,7,9},{1,10,14,15},其中可以看到学生1从属于3个组,即学生1既可以和2,3,4一个寝室,也可以和5,7,9一个寝室,还可以和10,14,15一个寝室。

XKC问题(Exact cover by k set problem)

实例:

  1. $S = \{ {s_1},\cdots,{s_n}\} ,|S| = n$,n是k的倍数
  2. k元对组成的集合C,$C=\{c_1,c_2,\cdots,c_m\},|C|=m,\forall c \in C,|c| = k$

问:C是否包含S的恰当覆盖,即是否存在大小为n/k的集合C',$C'\subseteq C$,且对于S中的每个元素,恰好出现在C’的一个成员中?

我们用 XKC(S,C,k)来表示解决XKC问题的函数。

XKC问题规约到分配寝室问题

只要证明分配寝室问题至少比XKC更难即可,即如果存在一个分配寝室问题的算法,则XKC就能够解决。

XKC(S,C,k)
{
allocation(S,C,k);
}

通过上述的方法就能看出:XKC $\le _p$ 分配寝室问题。

X3C$\le_p$XKC

在《计算机和难解性》中,作者已经证明了$3DM\le_p\ X3C$,即X3C是NPC问题。利用限制法,即可证明规约的正确性,如下所示:

X3C(S,C)
{
XKC(S,C,3);
}

证明:寝室分配问题是NPC问题的更多相关文章

  1. 转载 什么是P问题、NP问题和NPC问题

    原文地址http://www.matrix67.com/blog/archives/105 这或许是众多OIer最大的误区之一.    你会经常看到网上出现“这怎么做,这不是NP问题吗”.“这个只有搜 ...

  2. P问题、NP问题、NPC问题、NP难问题的概念

    P问题.NP问题.NPC问题.NP难问题的概念 离入职尚有几天时间,闲来无事,将大家常见却又很容易搞糊涂的几个概念进行整理,希望对大家有所帮助.你会经常看到网上出现“这怎么做,这不是NP问题吗”.“这 ...

  3. P问题、NP问题和NPC问题

    P问题.NP问题和NPC问题 这或许是众多OIer最大的误区之一.    你会经常看到网上出现“这怎么做,这不是NP问题吗”.“这个只有搜了,这已经被证明是NP问题了”之类的话.你要知道,大多数人此时 ...

  4. (转)什么是P问题、NP问题和NPC问题

    这或许是众多OIer最大的误区之一.    你会经常看到网上出现"这怎么做,这不是NP问题吗"."这个只有搜了,这已经被证明是NP问题了"之类的话.你要知道,大 ...

  5. P问题、NP问题、NPC问题

    看师兄们的论文经常说一句这是个NP难问题,所以采用另外一种方法来代替(比如凸松弛,把l0范数的问题松弛为l1范数的问题来求解).然后搜索了相关知识,也还是没看太懂,把一些理论知识先贴上来,希望以后再接 ...

  6. 一起聊聊什么是P问题、NP问题、NPC问题

    概念 P问题:如果一个问题可以找到一个能在多项式的时间里解决它的算法,那么这个问题就属于P问题.通常NOI和NOIP不属于P类问题,我们常见到的一些信息奥赛的题目都是P问题. NP问题:可以在多项式的 ...

  7. P、NP、NPC和NP-Hard相关概念的图形和解释

    P.NP.NPC和NP-Hard相关概念的图形和解释 http://blog.csdn.net/huang1024rui/article/details/49154507 一.相关概念 P: 能在多项 ...

  8. P,NP,NPC的通俗解释

    这或许是众多OIer最大的误区之一.    你会经常看到网上出现“这怎么做,这不是NP问题吗”.“这个只有搜了,这已经被证明是NP问题 了”之类的话.你要知道,大多数人此时所说的NP问题其实都是指的N ...

  9. 什么是P问题,NP问题和NPC问题

    转载自:Matrix67的博客 什么是P问题.NP问题和NPC问题 这或许是众多OIer最大的误区之一.    你会经常看到网上出现“这怎么做,这不是NP问题吗”.“这个只有搜了,这已经被证明是NP问 ...

随机推荐

  1. Memcached 安装及配置

    下载Memcached.exe 保存到c:\memcached 运行command: 输入 c:\memcached\memcached.exe -d install 回车,安装memcached s ...

  2. 15个实用的jQuery技术

    JQuery是目前最流行的JavaScript框架之一,可以显著的提高用户与网络应用的交互. 今天为大家介绍50有用的jQuery技术: 1.移动Box 2.滑动框和标题 3.数据的可视化:使用HTM ...

  3. Appboy 基于 MongoDB 的数据密集型实践

    摘要:Appboy 正在过手机等新兴渠道尝试一种新的方法,让机构可以与顾客建立更好的关系,可以说是市场自动化产业的一个前沿探索者.在移动端探索上,该公司已经取得了一定的成功,知名产品有 iHeartM ...

  4. DataGridView之行的展开与收缩

    很多数据都有父节点与子节点,我们希望单击父节点的时候可以展开父节点下的子节点数据. 比如一个医院科室表,有父科室与子科室,点击父科室后,在父科室下面可以展现该科室下的所有子科室. 我们来说一下在Dat ...

  5. Relevance Between Variable Declaration and Definition in C++

    A declaration makes a name known to a programm. A definition creates the assocatied entity. A variab ...

  6. crontab 不能执行git命令问题备忘

    这问题够隐蔽,折腾了近两个小时. 命令 git checkout tagname 手工执行都正常 但在crontab运行时发现分支一直切不过去. 后来告诉是crontab默认的 path  设置和系统 ...

  7. Oracle 学习笔记(三)

    1.插入有日期的表,使用 to_date 函数 to_date('1992-12-07', 'yyyy-mm-dd'); 2.使用update更新语句的时候,既可以使用表达式或者数值直接修改数据,也可 ...

  8. lintcode 中等题:N Queens II N皇后问题 II

    题目: N皇后问题 II 根据n皇后问题,现在返回n皇后不同的解决方案的数量而不是具体的放置布局. 样例 比如n=4,存在2种解决方案 解题: 和上一题差不多,这里只是求数量,这个题目定义全局变量,递 ...

  9. 毕向东JAVA视频讲解(第七课)

    构造函数:构建创造对象时调用的函数.作用:可以给对象进行初始化. 创建对象都必须要通过构造函数初始化. 一个类中如果没有定义过构造函数,那么该类中会有一个默认的空参数构造函数. 如果在类中定义了指定的 ...

  10. 【mongoDB运维篇②】备份与恢复(导入与导出)

    导入/导出可以操作的是本地的mongodb服务器,也可以是远程的服务器 所以,都有如下通用选项: -h host 主机 --port port 端口 -u username 用户名 -p passwd ...