算法设计与分析笔记之NP完备性理论

一. P、NP、NPC

  三类问题都会涉及到多项式时间算法,我们先解决什么是多项式时间算法。
  多项式时间的算法的形式化定义是,对于规模为n的输入,在最坏情况下的运行时间是O(n^{k}),其中k为某一确定常数。相对应的,有伪多项式时间算法,典型的0-1背包问题算法复杂度为O(nW),其运行时间与输入的规模相关,是伪多项式的。

1. P(Polynomial-time):在多项式时间内可以求解的问题

  如以下表格中的都是P类问题。

P类问题

2. NP(Nondeterministic Polynomial-time):在多项式时间内可以被证明(验证)的问题

  NP问题能找到多项式时间的验证算法。
  什么叫验证?例如,在哈密尔顿圈问题中,Z为图中点的一个序列。如果我们能设计一个多项式时间的判定算法,判定这个序列是否是一个哈密尔顿圈,那么称这个问题能在多项式时间内验证,序列Z是这个问题的一个证书(Certificate)。
如何证明一个问题是NP问题?

  1. 找到该问题的一个证书;
  2. 阐述用此证书验证的过程。

注意:不用证明这个问题没有多项式时间求解算法,因为P类问题是NP问题的子集,只需有证书验证过程即可。

3. NPC(NP Completeness):NP中最难的问题

  非形式化定义,如果一个NP问题和其他任何NP问题一样“不易解决”(归约),那么我们认为这一问题是NPC类问题或称之为NP完全问题。
  形式化定义,问题X是NP完全的,如果:

  1. X∈NP
  2. 对每一个X'∈NP,有X'≤_{p}X.

  NP问题可在多项式时间归约到NPC问题。特殊地,如果一个问题满足2,而不一定满足1,则称它是NP难度(NP-Hard)的。
  反过来,要证明一个问题Y是NP完全的。可以采用如下步骤:

  1. 证明问题Y是一个NP问题;
  2. 选择一个NPC问题X;
  3. 证明X ≤p Y(注意方向)。


    常接触到的NPC问题

4. P、NP、NPC的关系

  • P⊆NP,P是否是NP的真子集,这是7个千玺数学难题之一。目前,大部分计算机科学家相信P≠NP。
  • NPC问题能在多项式时间内解决,当且仅当P=NP。如果任何一个NPC问题能在多项式时间内得到解决,那么,NP中的每个问题都能在多项式时间内解决,即P=NP。等价地,如果存在某一NP问题不是多项式时间可求解的,则所有NPC问题都不是多项式时间可求解的。
  • 各NPC问题在多项式时间等价。
  • 被大多数计算机科学家接受的关系


    P、NP、NPC以及NPH间的关系

写了这么多,我还是看不懂。就这样理解叭,P类问题是可以在多项式时间求解的问题,但大部分问题都是不能的。因此我们想用一些数据去验证它是不是这个问题的解,如果能在多项式时间验证出来,那么这个问题就是NP问题。其中,NP里最难的问题我们叫它NPC问题,但有些问题跟NPC问题差不多难,然而它又不是NP问题,就只好说它是NP难度的,也就是NP难问题(NP-Hard)。

二. 多项式归约

1. 多项式归约的含义

  目的:我们希望在多项式时间内解决一个判断问题。
  准备:某一特定问题(A)的输入为该问题的实例。例如,寻找路径(PATH)问题的实例可以是图G、G中特定的点u和v以及一个特定的整数k(是否存在u到v长度为k的路径)。
  假设有另一不同的判定问题B,已知在多项式时间解决它的算法。我们将A的任何实例 α 转化成B的具有以下特征的某个实例 β:

  • 转化操作需要多项式时间
  • 两个实例的解相同,即 α 的解是“是”,当且仅当β的解是“是”。(这个当且仅当暗示你证明归约是双向的)

  这一过程就是多项式时间归约算法。它提供了一种在多项式时间内解决A的方法:

  1. 给定问题A的实例 α ,利用多项式时间归约算法,将它转化为问题B的一个实例 β ;
  2. 在实例 β 上,运行B的多项式时间判定算法;
  3. 将 β 的解作为 α 的解。
  • 多项式时间归约算法还为我们提供了比较各种问题的难易程度的方法(或者说按难易程度将NP问题分类)。例如,X ≤p Y,那么问题X不会比问题Y难多于一个多项式时间的因子,也就是Y比X难。
  • 如果X ≤p Y且Y ≤p X,则X ≡p Y
  • 注意上述所说的所有解决算法都是指解决如何判定问题的算法,并不能真正求解。

2. 归约的三种基本策略

  1. 简单恒等
  2. 将特例归约到一般化例子
  3. 利用小技巧(想不出的小技巧)

参考资料:《算法导论》

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,911评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,014评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,129评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,283评论 1 264
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,159评论 4 357
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,161评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,565评论 3 382
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,251评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,531评论 1 292
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,619评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,383评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,255评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,624评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,916评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,199评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,553评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,756评论 2 335