NP问题和计算复杂度

最近看书,多次看到NP问题,就简单研究了下到底什么是NP问题。参考《数学之美》一书的附录


一、计算复杂度

我们知道,计算机中的算法复杂度,定义为只和问题规模N有关,即计算复杂度是N的一个函数 f(N)。

如果计算复杂度只相差一个常数因子,则认为复杂度是同一数量级的,是相同的,即 f(N) = Nlog(N) 和 g(N) = 100Nlog(N) 的复杂度是相同的。

所以我们干脆引进算子O()来描述算法复杂度。上述 f(N) 和 g(N) 均表示为 O(N logN)


二、P问题

如果像上面那样,求解一个问题的算法复杂度可以表示为多项式函数,那么这个问题就叫做P(Polynomial)问题,又叫多项式问题,这类问题被认为是计算机可以有效解决的。

否则,如果算法复杂度不可以用多项式表示,也就是说复杂度高到没有办法用多项式表示或者找不到有效的公式描述复杂度,那么就叫 Non-polynomial 的问题,即非多项式问题。


三、NP问题

很多问题并不是非黑即白的,要么有多项式复杂度的算法,要么没有。这些问题,我们无法确切地知道它的多项式复杂度的算法到底是否存在,所以叫做非确定的多项式(Nondeterministic Polynomial,简称 NP)问题。可以说,现实中的大多数问题都是这类问题。


四、分类

假设无论任何问题,我们都不确定地说它是具有多项式复杂度的,因为万事皆有可能,那么P问题就应该是NP问题的一个特殊的子集。而NP问题集合

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值