前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >P与NP问题

P与NP问题

作者头像
chenjx85
发布2019-04-18 17:10:21
9180
发布2019-04-18 17:10:21
举报

在了解P与NP问题之前,先看两个定义,一个是多项式时间复杂度,一个是指数型时间复杂度。

多项式时间复杂度的通项式子可以写成,a*n^k+b*n^(k-1)+……+z*n^0,n代表问题规模。

指数型时间复杂度的通项式子可以写成,k^n,n代表问题规模,k为大于1的常数,或者也可以写成 n! 这类型的式子。

P问题:

P问题指的是能用多项式时间计算出结果的问题,也称之为多项式问题。P是Polynomial,多项式的意思。

NP问题:

NP问题指的是能用多项式时间验证结果正确与否的问题,而不管计算出结果是用多项式时间还是指数型时间。

所有的P问题都是NP问题,因为既然能用多项式时间求得正确结果,那么验证结果正确与否肯定也是多项式时间,最不成就是重新计算一遍正确结果,肯定也是多项式时间。

但是是否所有的NP问题,也就是能用多项式时间验证的问题,都有一个计算正确结果的多项式时间复杂度的算法呢?这个还不知道,所以P=NP? 这个问题也悬而未决。

举个例子,TSP问题,100个城市,任意两个城市之间可以往返,从第一个城市出发,走遍所有城市,最后要回到第一个城市,城市与城市之间的通行费用不等。现在限制总的通行费用是cost,要求找到一条路径能够满足限制条件,而又能游遍所有城市并回到第一个城市。

如果我们要找到这样一条路径,需要遍历所有的可能情况,判断生成的每一条路径是否满足限制条件,一共有99!条这样的路径(假设第一个城市已经确定了下来,必须是从北京出发)。

但是如果我们要验证某一条游遍100个城市并回到第一个城市的路径,是否满足限制条件,只需要计算一下总的费用,便可以判断。

所以,TSP问题是NP问题,但目前还没有找到P的算法,也就是能用多项式时间复杂度计算出结果的算法。

感谢博客https://blog.csdn.net/bitcarmanlee/article/details/51935400的分享。

以下为笔者最近碰到的另一个NP问题,不感兴趣的可以不看啦~(闲聊性质)

笔者为什么最近会关注这个问题呢?因为在看sgbm的算法,博客https://www.cnblogs.com/hrlnw/p/4746170.html提到了sgbm的全局能量函数,说这个能量函数式子是个NP问题。

上述式子来源 Hirschmuller, H. Stereo Processing by Semiglobal Matching and Mutual Information, PAMI(30), No. 2, February 2008, pp. 328-341.

可能没有接触过双目视觉领域的同学不太懂这个式子是什么意思。

如果已知整张图片中所有像素点的视差,那么根据上述式子,我们自然就能得到能量E(D)是多少。但是想要求解得到全局最小的能量,我们需要遍历所有情况,这又是一个难以在P时间内求解的问题。

因此sgbm算法“近似分解该问题为多个一维问题,即线性问题。而且每个一维问题都可以用动态规划来解决。因为1个像素有8个相邻像素,因此一般分解为8个一维问题”。

感兴趣的同学可以看下上述博客的介绍,这里就不多讲了。 

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-04-10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档