王垠 解密计算机科学,王垠:谈“P=NP?”

本文探讨了计算机科学中著名的P=NP问题,指出该问题的实际重要性被高估。作者解释了算法复杂度、确定性和非确定性计算机的概念,并指出在实际应用中,多项式时间的定义过于宽泛,无法直接衡量算法效率。P=NP问题的关键在于证明确定性计算机是否能在多项式时间内解决所有非确定性计算机能在多项式时间内解决的问题,但该问题本身存在局限性,因为对于大规模问题,多项式时间并不一定优于指数时间。因此,作者认为P=NP问题不是一个有意义的科学研究方向。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

“P=NP?” 通常被认为是计算机科学最重要的问题。有一个叫 Clay Math 的研究所,甚至悬赏 100 万美元给解决它的人。可是我今天要告诉你的是,这个问题其实远远不是那么的重要。

我并不是第一个这样认为的人。在很早的时候,就有一位数学家毫不客气的指出,P=NP? 是个愚蠢的问题,并且为了嘲笑这个问题,专门在 4 月 1 号写了一篇“论文”,称自己证明了 P=NP。我身边有一些非常聪明的人,他们基本也都不把这问题当回事。如果我对他们讲这些东西,恐怕已经是老生常谈,所以我只是在这里科普一下。

首先,你要先搞清楚什么是“P=NP?” 为此,你必须先了解一下什么是“算法复杂度”。为此,你又必须先了解什么是“算法”。

你可以简单的把“算法”想象成一台机器,就跟绞肉机似的。你给它一些“输入”,它就给你一些“输出”。比如,绞肉机的输入是肉末,输出是肉渣。牛的输入是草,输出是奶(或者牛粪)。“加法器”的输入是两个整数,输出是这两个整数的和。“算法理论”所讨论的问题,就是如何设计这些机器,让它们更加有效的工作。就像是说如何培育出优质的奶牛,吃进相同数量的草,更快的产出更多的奶。

世界上的计算问题,都需要“算法”经过一定时间的工作(也叫“计算”),才能得到结果。计算所需要的时间,往往跟“输入”的大小有关系。如果你的奶牛吃了很多草,它就需要很长时间才能把它们变成奶。这种草和奶的转换速度,通常被叫做“算法复杂度”。

算法复杂度通常被表示为一个函数 f (n),其中 n 是输入的大小。比如,如果你的算法复杂度为 n^2,那么当输入 10 个数据的时候,它需要 100 个单元的时间才能完成计算。当输入 100 个数据的时候,它需要 10000 个单元的时间才能完成计算。当输入 1000 个数据的时候,它需要 1000000 个单元的时间。简单吧。

所谓的“P时间”,就是“Polynomial time”,多项式时间。简而言之,就是说这个复杂度函数 f (n) 是一个多项式。多项式你该知道是什么吧?不知道的话,就翻一下中学数学课本。

“P=NP?”中的“P”,就是指所有这些复杂度为多项式的算

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值