1)第165章 NPC,真不是很难!_学霸的无限
字体:      护眼 关灯
上一章 目录 下一章
  所谓“P=NP?”问题,“?”才是关键。

  因为不知道等不等于,需要证明的就是等不等于。

  简单点的说,计算机解不同的题目,就是将之拆分成加加减减这样最基础的运算。

  所以一道题究竟有多难……嗯,主要是对计算机多难,就取决于可以拆分成多少步,或者说花多少时间——计算机基础运算的时间基本一样,所以忽略空间方面的因素,二者大致等价。

  这叫时间复杂度,用大O也叫渐进符号表示。

  O(1)就是常数级复杂度——最常规的计算,数据规模增加多少,运算花费时间也随之增加多少。

  O(logn)就要复杂一点了。

  然后还有O(n),O(nlogn),O(n^c),O(c^n),O(n!),O(n^n)……

  一级一级,难度逐层上升,解题所用时间花式暴涨。

  其中O(n^c)之下,是多项式时间内能解决的,就叫做P类问题。

  在此之上的,虽然会随着n的增长,出现指数级甚至更过分的暴涨,却有一个共同点,就是正向解很难,给你一个答案去验证,一般就不难了。

  比如大数的质因数分解。

  想知道一个大数是不是素数很难,需要从2开始,一直除到根下n。

  但告诉你它能被某个数整除,你去验证,则就几步的事。

  这类可以在多项式时间里验证的问题,就叫做NP问题。

  显然所有P类问题,都是NP问题,因为是简单可验证的。

  但NP类问题,是否都是P类问题?是否存在某些特殊的算法,能将这些问题的难度降低到多项式时间可以解决,就仿佛给答案去验证的程度上去呢?

  这就是“P=NP?”了。

  在研究的过程中,又诞生出了NPC问题及NP-hard问题。

  所谓NPC,就是NP问题可以约化成为的一类问题。

  只要解决这样一个问题,就可以附带的解决一大票问题。只要证明了NPC问题有快速算法,就基本证明了P=NP。

  【NP-hard就不说了,这是一类包括NPC又大于NPC的问题,定义是超出NP的,所以和这道题没什么关系。】

  最初所有人都以为NPC只是空想,直到真的出现了这样一个问题

  也就是NPC的鼻祖——逻辑电路问题。

  此后一大堆NPC冒出来,因为要证明新的NPC,只要将之归约为已知的NPC就行了,于是哈密顿回路、TSP问题、SAT问题、背包问题、旅行商问题,都变成了NPC。

  不过出这道题的人一定没看到叶寒那篇关于蛋白质折叠的论文……

  或者看到了还没来得及改;

  也可能想改但是落子无悔,改不了了……

  如果P=NP被证明,那整个世界,都会变得与我们认为的完全不同。

  

  请收藏:https://m.nmuym.com

(温馨提示:请关闭畅读或阅读模式,否则内容无法正常显示)

上一章 目录 下一章