我很难理解什么是非确定性多项式时间问题和NP完全问题。我了解什么是多项式时间可解问题,并在维基百科上看到了关于NP问题的介绍。阅读后,我尝试考虑一些示例问题。据我所知,对于无向图中的深度优先搜索而言,由于每个决策都可以被非确定地做出(即如果我做错了一个决定,我可以尝试一些其他选择),因此它是NP完全的,如果图很大,则可以是多项式的,如果图的大小很小。
有没有人能够用简单的例子简要解释所有这些NP术语,而不使用太多数学公式?
我很难理解什么是非确定性多项式时间问题和NP完全问题。我了解什么是多项式时间可解问题,并在维基百科上看到了关于NP问题的介绍。阅读后,我尝试考虑一些示例问题。据我所知,对于无向图中的深度优先搜索而言,由于每个决策都可以被非确定地做出(即如果我做错了一个决定,我可以尝试一些其他选择),因此它是NP完全的,如果图很大,则可以是多项式的,如果图的大小很小。
有没有人能够用简单的例子简要解释所有这些NP术语,而不使用太多数学公式?
如果一个问题是一个可以在多项式时间内验证正确答案的yes-or-no问题(即decision problem),那么它就属于NP。例如,一个经典的NP问题是看看是否可以在已知重量的一组重量中选择一组恰好重量为k的重量(这被称为subset sum problem)。确定具有该属性的重量集是否存在可能有些棘手,但是如果我给你一个我知道是正确的重量集,你可以通过将它们相加并查看它们是否总计为k来轻松检查我是否给出了正确的重量集。
NP之所以被称为“非确定性多项式”,是因为另一种思考NP的方式是想象一个神奇的算法,可以在多项式时间内猜出问题的正确答案。也就是说,如果你能编写一个允许猜测问题答案并在多项式时间内运行的算法,那么你解决的问题就属于NP。回到我们的重量例子,我们可以为该问题编写以下猜测算法。首先,在线性时间内猜测哪个重量集合是正确的,然后将它们全部加起来,看是否总和为k。如果是,则报告答案为“是”。否则,报告“否”。如果这个程序总是保证做出正确的猜测,那么对于任何有解的问题输入,它都会找到一个并报告“是”,如果没有解,则总是猜错并报告“否”。我将尝试解析您的示例,希望在网络上的所有其他资源的帮助下,您可以取得进展。
有几个问题