NP-Complete 与 NP-Hard 相比如何?

How does NP-Complete compare to NP-Hard?

据我了解:

NP是容易求解和验证的问题(即:乘法)

NP-Hard 是难以解决但易于验证(因式分解)的问题

什么是 NP 完全?我在网上找到的答案说它几乎像 NP-hard,但我无法区分两者。

相关:NP-Complete VS NP-Hard

当一个问题既是 NP 又是 NP-hard 时,它就是 NP-complete

如果满足以下条件,决策问题 B 是 NP 完全问题:

1- B 在 NP 中。

2- NP 中的每个问题都可以在多项式时间内简化为 B。 (NP难)

NP-complete problems are decision problems and belong to NP (and every problem in NP can be reduced 在多项式时间内,但这些细节我猜你已经在网上看到了)。

NP-hard是NP中任何一个问题都可以归约成的问题,但不一定属于NP或者是决策问题。

显然,每个 NP 完全问题也是 NP 难的(根据 NP 难的定义)。反之则不然,有些问题是 NP-hard 但不属于 NP。

例如,找到 SAT instance (#SAT) 的所有解决方案的计数是 NP-hard 但不属于 NP-complete class,至少因为它不是决策问题,因此不属于NP。

另一方面,SAT,判断满足解的个数是否大于零的问题属于NP问题,NP中的所有问题都可以归结为它,因此它是NP完全的.

注意,NP中的每道题都可以化简为(#SAT)(因为SAT可以化简为#SAT,只要找到一个计数,如果不为零就输出true)。 SAT至少是"hard";这就是 NP-hard 这个名字背后的直觉。

我还想指出一个优秀而详细的 answer 涵盖更多细节。