作者 | Shalitha Suranga
在现实生活中,很多难题的解决方案都用到了计算机科学的基础理论。例如, Git 分布式版本控制系统建立在图论、数据结构和密码学等之上。然而,每个理论中也存在非常具有挑战性的问题。
伟大的计算机科学家们已经解决了很多理论难题。例如,快速排序法和合并排序法都是有效的大型列表排序算法。然而,就像其他研究领域一样,计算机科学也有自己的神秘之处。许多计算机科学家都在努力寻找这些谜团的解决方案。但是,计算机科学界仍然还有一些至今仍未解决的难题,因为科学家无法证明他们的答案是正确的,而且大多数其他的计算机科学家也不接受他们的答案。
P/NP 问题
计算机可以解决各种计算问题。在计算机科学中,计算问题可以分为几大类,比如 NL、P、NP、PSPACE 等。
P 类问题
P 类问题指的是所有可以由一个确定型图灵机在多项式表达的时间内解决的问题。简单来说,P 类问题就是能在多项式时间内解决的问题。举个例子,冒泡排序就是 P 类问题,因为该算法的时间复杂度为 O (n²),不是指数级的。
NP 类问题
相反,NP 类问题指的是需要由一个非确定型图灵机在多项式表达的时间内解决的问题。简单来说,NP 类问题的算法比 P 类问题慢很多。著名的 NP 类问题:旅行家推销问题(TSP)。即有一个推销员,要到 n 个城市推销商品,他要找出一个包含所有 n 个城市的环路,这个环路的路径小于 a。我们知道这个问题如果单纯的用枚举法来列举的话会有 (n-1)! 种解,已经不是多项式时间的算法了 (注:阶乘的复杂度比多项式高得多)。但重要的是,如果给定一个解,我们可以在多项式时间内验证该解是否正确。
P=NP?
也就是,我们能在多项式的时间内验证某个 NP 类问题的解是否正确,可是我们却不知道 NP 类问题是否存在一个多项式时间的算法,能够保证在多项式时间内求出问题的解(注意,这里是不知道,不是不存在)。所以这就引出了一个难题:NP 类问题 = P 类问题?即,是否所有能在多项式时间内验证解的正确性的问题,都是具有多项式时间算法的问题呢?
大多数人都认为 P≠NP,但是没有人能证明。如果有人能够证明 P=NP,那么就会极大地推动计算机的发展,因为我们可以通过
计算机科学四大未解难题:P/NP、单向函数、矩阵乘法和整数分解

本文探讨了计算机科学界四个至今未解决的难题:P/NP问题,即是否存在NP问题的多项式时间算法;单向函数的证明,其存在性与P/NP问题的解答密切相关;矩阵乘法的最快算法,当前的施特拉森算法仍有优化空间;以及多项式时间的整数分解算法,对现代密码学特别是RSA加密构成挑战。这些问题的解决将极大地推动计算机科学的发展。
最低0.47元/天 解锁文章
1793

被折叠的 条评论
为什么被折叠?



