NP-C问题

在研究NP问题的过程中找到了一类非常特殊的NP问题,也即NP-完全问题(NP-C问题)。

在谈及NPC问题前,先讨论一下“归约”的概念,编码实践中归纳出的设计模式中的里氏替换原则与它有着相似的地方。

里氏替换原则要求充分发挥继承的特性:
1、子类必须完全实现父类的方法
2、子类可以有自己的个性
3、覆写或实现父类方法时输入参数可以被放大
4、覆写或实现父类方法时输出结果可以被缩小
在可计算性理论与计算复杂性理论中,所谓的归约是将某个计算问题转换为另一个问题的过程。可用归约的方法定义某些问题的复杂度类。即如果问题B存在有效的解决算法,并且该算法也可以作为解决问题A的算法,那么问题A就可归约到问题B,因此求解问题A不会比问题B的求解更困难。


image.png

当问题A可归约为问题B时,有一个直观的意义就是,问题B的时间复杂度高于或者等于问题A的时间复杂度。为什么这么说呢?
如果问题A能用问题B的算法解决,并且问题A的时间复杂度还比问题B的时间复杂度高,那么问题A的算法就可以改进为B算法,这样两者的时间复杂度就是相等的,所以有了上面的“直观意义”。
正如解一元二次方程比解一元一次方程难,因为解决前者的方法可以用来解决后者。即一元一次方程可归约为一元二次方程。
规约的标准概念:如果能找到这样一个变化法则,对任意一个程序A的输入,都能按照这个法则变换成程序B的输入,使两程序的输出相同,那么我们说问题A可归约为问题B。我们所说的“可归约”是指可多项式的约化,即变换输入的方法,问题的解决也是在多项式时间内解决的,只有这样才是有意义的。
可以看到,一个问题约化为另一个问题,时间复杂度增加了,问题的应用范围也增加了。通过对某些问题的不断约化,能够不断地寻找时间复杂度更高,但应用范围更广的一类问题的算法去替代时间复杂度低,但只能用于很小的一类问题的算法。
同时因为约化具有传递性,很容易想到对于所有的NP问题,能否最后归约到一个超级大的NP问题?解决了这个超级NP问题,那么所有的NP问题都能得到解答。问题的答案居然是肯定的,更加不可思议的是,这种超级NP问题不止一个,它有很多,它们是一类问题,这类问题就是NPC问题。
NPC问题的出现使得整个NP问题的研究得到了飞跃式的发展,我们有理由相信NPC问题是最复杂的NP问题。
如果能为任意一个NPC问题找到一个多项式的高效算法,我们就可以认为P=NP,就是因为那么多的NPC的问题至今没有一个问题能找到一个多项式的算法,使得人们普遍认为P≠NP。
更直观的讲什么是NPC问题:一个NP问题不存在多项式的高效算法时,应该说它可能属于NPC问题。为什么这样讲?因为NPC问题的第二个条件不被满足,第二个条件是什么后面会说到。
假使一个NPC问题存在一个多项式的高效算法时,即所有的NP问题都可以找到了一个多项式的高效算法,那么这个问题变成了P问题,那么P=NP。
关于NPC问题的定义需要满足下面两个条件:1、它是一个NP问题。 2、所有的NP问题都可以约化到它。要证明一个问题是NPC问题,先证明这个问题属于NP问题,再证明一个已知的NPC问题可以约化到它。这样就可以说它是NPC问题了。那么第一个已知的NPC问题是怎么来的呢?
逻辑电路问题是第一个NPC问题,它是这样描述的:给定一个逻辑电路,问是否存在一种输入使输出为True。
条件一:对逻辑电路给定一种输入,可以在多项式时间内进行验证,所以属于NP问题。

逻辑电路.jpg

当输入1、输入2、输入3分别输入true、true、false或false、true、false或true、false、false时输出为true
有输入无论如何都不会为true的逻辑电路嘛?有的


逻辑电路2.jpg

上面的逻辑电路无论输入什么,输出总为false,
逻辑电路属于NPC问题是有严格的证明的。首先它是属于NP问题的,对给定的一个输入可以在多项式的时间内进行验证。其次也可以证明所有的NP问题都能约化到它,不要认为NP问题有无穷多个将给证明造成不可逾越的困难,证明过程相当复杂,大概意思是讲,任意一个NP问题的输入和输出都可以转换为逻辑电路的输入和输出(计算机内部的0 1运算),因此对于一个NP问题来说,问题转化为了求满足结果为True的一个输入(即一个可行解)。
有了第一个NPC问题,一大堆NPC问题就出现了,后来Hamilton回路问题成了NPC问题,TSP问题也成为了NPC问题,这么多NPC问题,任何一个NPC问题找到了多项式算法的话,我们就说P=NP,也正是因为NPC问题的存在使得P=NP变得难以置信。!

P与NP问题的参考博文

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