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. 在一个字符串(1<=字符串长度<=10000,全部由大小写字母组成)中找到第一个只出现一次的字符,并返回它的位置

    // test20.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> #include< ...

  2. JS实现Web网页打印功能(IE)

    问题描述:     JS实现Web网页打印功能 问题解决:     这里主要使用WebBrowser控件的ExeWB在IE中打印功能的实现 WebBrowser介绍:         WebBrows ...

  3. 【POJ】【1739】Tony's Tour

    插头DP 楼教主男人八题之一! 要求从左下角走到右下角的哈密顿路径数量. 啊嘞,我只会求哈密顿回路啊……这可怎么搞…… 容易想到:要是把起点和重点直接连上就变成一条回路了……那么我们就连一下~ 我们可 ...

  4. 【转载】错误 CS0016: 未能写入输出文件“c:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files/.........dll”--“拒绝访问。 ”

    win7中安装asp.net的问题 编译器错误信息: CS0016: 未能写入输出文件问题解决办法 编译错误 说明: 在编译向该请求提供服务所需资源的过程中出现错误.请检查下列特定错误详细信息并适当地 ...

  5. Unity3d Detect NetState

    public static bool HasConnection() { System.Net.WebClient client; System.IO.Stream stream; try { usi ...

  6. css table表格无法调整宽度问题分析

    1.在网上查找了相关问题,有的说表格设置了背景图片,把原来的宽度撑开了,导致无法变窄~! 在项目中,原来美工设计的页面,设置了一个块的样式class="title",现在有一段ht ...

  7. XML 实体扩展攻击

    XMl Entity Expansion(攻击)某种程度上类似于 XML Entity Expansion,但是它主要试图通过消耗目标程序的服务器环境来进行DOS攻击的.这种攻击基于XML Entit ...

  8. lua语言入门之Sublime Text设置lua的Build System

    转自: http://blog.csdn.net/wangbin_jxust/article/details/8911956 最近开始学习LUA语言,使用Sublime Text作为编辑器,不得不说, ...

  9. String类的使用 Part1

    String类的属性 1:Chars属性 获取当前 String 对象中位于指定位置的 Char 对象. 2:Length属性 获取当前 String 对象中的字符数. eg:获取字符串中  字母, ...

  10. hdu2013

    http://acm.hdu.edu.cn/showproblem.php?pid=2013 #include<iostream> #include<stdio.h> #inc ...