NP和P产生问题需要什么?

时间:2011-03-19 17:58:33

标签: np-hard np

将任何问题分解为NP和P的主要意图或主要用途是什么?这有什么历史原因,或者他们是否创造了这些概念来帮助我们?如果是这样,这些可以帮助我们吗?

3 个答案:

答案 0 :(得分:2)

这是一个过于复杂的问题,期望在这里得到彻底的答案,但简而言之,从实际的角度来看,P中的问题是那些可以在合理的时间内找到解决方案的问题,NP中的问题是那些解决方案需要花费太多时间来计算的假设(假设P!= NP)。

P和NP之间的边界可以被非正式地视为可以和不能使用计算有效解决的问题之间的边界。

您应首先阅读维基百科http://en.wikipedia.org/wiki/P_versus_NP_problem,以了解有关这些复杂性类别的动机和目的的更多信息。

答案 1 :(得分:0)

我认为将问题分解为P和NP的“实际”意图是下限。如果你证明问题是NP难的(并且你同意P!= NP的普遍看法),那么你已经证明你无法找到在合理的时间内运行的问题的算法。

更加非正式地说,你的老板要求你写一个在5分钟内运行的算法。如果你说你找不到一个,他会认为你正在懈怠。如果你告诉他他所问的你是NP难的,他应该相信你不能这样做。回到形式主义,你就可以证明使用近似算法。

这是历史对话,因为现在,在行业中,我们有时会实现NP完全(例如SAT解算器)甚至PSPACE完成的问题(例如形式验证,这是PSPACE完成的公式的大小)。另一方面,例如在图形中,有时您无法实现在n^2中运行的算法。即使nlogn有时也可能是前卫。

答案 2 :(得分:0)

主要思想是根据难度来区分问题。

这里 P 指的是所有容易出现的问题(在合理的时间内可以解决)。而 NP 则是困难的。 (没有合理的时间解决方案,但是,如果您能猜出解决方案,可以快速验证)

一旦将问题分类到这两组中,您就会担心解决问题。

例如,如果您遇到 NP 问题,而不是忽视解决方案,您可以意识到它在合理的时间内无法解决并继续前进(或使用好猜测并检查解决方案。)

另一方面,如果是 P 问题,那么您可能会担心找到更有效的解决方案等等。