P/NP问题(西瓜书笔记1)

最近我再阅读周志华老师的机器学习(西瓜书),在阅读“过拟合是无法避免彻底避免的,我们所能做的只是‘缓解’,或者说减小其风险。关于这点可以大致这样理解:机器学习面临的问题通常是NP难甚至更难,而有效的学习算法必然是在多项式时间内运行完成,若可彻底避免过拟合,则通过经验误差最小化就能获得最优解,这意味着我们构造性的证明了’P=NP’;因此只要相信‘P≠NP’,过拟合就不可避免。”
所以我想弄彻底清楚P/NP这个难题的细节。

时间复杂度

在弄明白P/NP问题前先要明白什么式时间复杂度,在计算机科学中用O来表示时间复杂度,它是定性描述该算法的运行时间,不同的算法有着不同的时间复杂度。如果一个算法无论它面临的样本有多大,程序运行的时间始终相同,那么这个算法的时间复杂度就是O(1)。我们再举例,需要找到含有N个数的集合中最大的一个数,寻找的时间必然会随着N的增大而增大(因为找到集合中的最大数必然要遍历整个数组),所以整个程序有O(N)的复杂度,而我们现在经典的两种排序方式:归并排序和快速排序则具有O(n×log n)的复杂度。(因为这两种算法是不断的切割和遍历实现的)
所有由此类推有些算法就会有O(an)甚至O(a!)的复杂度。降低复杂度,可以使计算机更有效率。
所以复杂度被人分为两个区间。一种是O(1)、O(n)
、O(logan)、O(na),人们把这个分为多项式级的复杂度,另一种则是O(an)和O(n!)这类非多项式级别的复杂度。哪怕是计算机的计算速度,再进行运算时也会选择多项式级别的复杂度。

P与NP

记住我们上面的讨论,再开始讨论P与NP。
P问题就是拥有至少一个多项式复杂度解法的问题。NP问题并不是很多人认为的非P类问题。NP问题是可以在多项式时间内去验证一个解的问题。
举个例子,当你面对一个10×10 的数独时,你可以很快的去验证数独的正确性,但是很难去求出一个正确的答案。

NP问题

显然所有的P问题都是NP问题,需要讨论的是,是否所有的NP问题都是P。这就是信息科学届的“哥德巴赫猜想”——NP问题。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值