Algorithm 什么是计算机科学中的NP完全?
什么是NP完全问题?为什么它在计算机科学中如此重要?老实说,也许是寻找答案的最佳地方Algorithm 什么是计算机科学中的NP完全?,algorithm,language-agnostic,mathematical-optimization,theory,np-complete,Algorithm,Language Agnostic,Mathematical Optimization,Theory,Np Complete,什么是NP完全问题?为什么它在计算机科学中如此重要?老实说,也许是寻找答案的最佳地方 如果NP=p,那么我们可以比以前想象的更快地解决非常困难的问题。如果我们在P(多项式)时间内只解决一个NP完全问题,那么它可以应用于NP完全范畴内的所有其他问题。这是一类问题,我们必须模拟每一种可能性,以确保我们有最优解 对于一些NP完全问题,有很多很好的启发式方法,但它们充其量只是一个有根据的猜测。NP代表非确定性多项式时间 这意味着可以使用非确定性图灵机(类似于常规图灵机,但也包括非确定性“选择”函数)在多
如果NP=p,那么我们可以比以前想象的更快地解决非常困难的问题。如果我们在P(多项式)时间内只解决一个NP完全问题,那么它可以应用于NP完全范畴内的所有其他问题。
这是一类问题,我们必须模拟每一种可能性,以确保我们有最优解
对于一些NP完全问题,有很多很好的启发式方法,但它们充其量只是一个有根据的猜测。NP代表非确定性多项式时间 这意味着可以使用非确定性图灵机(类似于常规图灵机,但也包括非确定性“选择”函数)在多项式时间内解决问题。基本上,一个解决方案必须是可测试的。如果是这样的话,一个已知的NP问题可以用修改输入的给定问题来解决(一个NP问题可以简化为给定问题),那么这个问题就是NP完全问题 一个NP完全问题的主要问题是,它不能以任何已知的方式在多项式时间内求解。NP-Hard/NP-Complete是一种表示某些类问题在现实时间内不可解的方法
编辑:正如其他人所指出的,NP完全问题通常有近似解。在这种情况下,近似解通常使用特殊符号给出近似界,它告诉我们近似值有多接近。NP Complete意味着非常具体的东西,你必须小心,否则你会得到错误的定义。首先,NP问题是一个肯定/否定问题
到目前为止,还没有人提出过这样一个确定的多项式时间算法,但没有人证明它是不存在的(任何一个能做到这一点的人都要花一百万美元:这就是问题所在)。这并不意味着你不能解决一个NP完全(或NP难)问题的特定实例。这只是意味着你不能像对整数列表进行可靠排序那样,在所有问题实例上都能可靠地工作。你很可能会想出一个算法,它能很好地处理NP难问题的所有实际情况。NP完全是一类问题 类
p
由可在多项式时间内解决的问题组成。例如,对于某个常数k,它们可以用O(nk)来求解,其中n是输入的大小。简单地说,您可以编写一个在合理时间内运行的程序
类NP
由那些在多项式时间内可验证的问题组成。也就是说,如果我们得到一个潜在的解决方案,那么我们可以检查给定的解决方案在多项式时间内是否正确
一些例子是布尔可满足性(或SAT)问题,或哈密顿循环问题。在NP类中有许多已知的问题
NP-Complete
表示该问题至少与NP中的任何问题一样难
这对计算机科学很重要,因为已经证明NP中的任何问题都可以转化为另一个NP完全问题。这意味着任何一个NP完全问题的解都是所有NP问题的解
许多安全算法依赖于NP难问题不存在已知解这一事实。如果找到一个解决方案,它肯定会对计算产生重大影响。如果你正在寻找一个NP完全问题的例子,那么我建议你看看 基本前提是你在中有一个表达式,这是一种表示你有一系列表达式,这些表达式由OR连接,所有这些表达式都必须是真的:
(a or b) and (b or !c) and (d or !e or f) ...
3-SAT问题是找到一个满足表达式的解决方案,其中每个OR表达式正好有3个布尔值要匹配:
(a or !b or !c) and (!a or b or !d) and (b or !c or d) ...
这个问题的解决方案可能是(A=T,b=T,c=F,d=F)。然而,目前还没有发现能在多项式时间内解决这一问题的算法。这意味着解决这个问题的最好方法就是用蛮力猜测、检查并尝试不同的组合,直到找到一个有效的组合
3-SAT问题的特殊之处在于,任何NP完全问题都可以简化为3-SAT问题。这意味着,如果你能找到一个多项式时间算法来解决这个问题,那么你就得到了,更不用说全世界计算机科学家和数学家的尊敬和钦佩了。上面对NP完全问题的定义是正确的,但我想我可能会成为抒情诗人