Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm NP问题,需要一些细节吗?_Algorithm_Sorting_Complexity Theory_Knapsack Problem_Computation Theory - Fatal编程技术网

Algorithm NP问题,需要一些细节吗?

Algorithm NP问题,需要一些细节吗?,algorithm,sorting,complexity-theory,knapsack-problem,computation-theory,Algorithm,Sorting,Complexity Theory,Knapsack Problem,Computation Theory,我看到一个关于算法的问题。下列哪项是NP a) Decision Version of TSP b) Array is Sorted? c) Finding the maximum flow network d) Decision version of 0/1 knapsack? 我的笔记上说,所有这些都是NP格式的,任何人都可以添加一些细节 每个人为什么?我想知道的是0/1背包,是NP吗?NP-难? 还是NP完全 谢谢。它们都是NP,因为: 它在多项式时间内是可验证的。给定一些路径,

我看到一个关于算法的问题。下列哪项是NP

a) Decision Version of TSP 

b) Array is Sorted?

c) Finding the maximum flow network

d) Decision version of 0/1 knapsack?
我的笔记上说,所有这些都是NP格式的,任何人都可以添加一些细节 每个人为什么?我想知道的是0/1背包,是NP吗?NP-难? 还是NP完全


谢谢。

它们都是NP,因为:

  • 它在多项式时间内是可验证的。给定一些路径,我们可以很容易地检查其长度是否未超过给定值

  • 它在p类中(我认为多项式时间解是显而易见的),这自动意味着它在NP中

  • 同样,还有多项式时间解,这意味着它在p中。因此,它在NP中

  • 我们可以在多项式时间内,给出一个合适的子集来验证它。因此,它的定义是NP

  • 关于0/1背包问题的决策版本:它在NP中。它也被认为是NP完全的(证明太长,无法在这里写,这里是链接:)。这也意味着它是NP难的(任何NP完全问题的定义都是NP难的)


    另外,我假设“寻找最大流量”在这里意味着一个决策版本。

    它们都在NP中,因为:

  • 它在多项式时间内是可验证的。给定一些路径,我们可以很容易地检查其长度是否未超过给定值

  • 它在p类中(我认为多项式时间解是显而易见的),这自动意味着它在NP中

  • 同样,还有多项式时间解,这意味着它在p中。因此,它在NP中

  • 我们可以在多项式时间内,给出一个合适的子集来验证它。因此,它的定义是NP

  • 关于0/1背包问题的决策版本:它在NP中。它也被认为是NP完全的(证明太长,无法在这里写,这里是链接:)。这也意味着它是NP难的(任何NP完全问题的定义都是NP难的)


    另外,我假设“寻找最大流量”在这里意味着一个决策版本。

    NP意味着有一个确定性算法,该算法在多项式时间内运行,问题的大小可以验证证书。在这种情况下,证书可以被视为问题的可能解决方案。证书可以在非确定多项式时间内生成。例如,对于TSP,证书可以是任何路径。在这种情况下,验证器需要验证路径是否为哈密顿量且小于或等于给定的界

    如果某个问题至少和X一样难,那么它就是X-难的。对于NP难,这是通过以下事实形式化的:NP中的每个问题都可以在多项式时间内简化为该问题

    如果同时是x元素和x-硬元素,则问题是x-完全。因此,对于NP-complete而言,这意味着问题是NP-hard的,也是NP的一部分

    第一个问题显然是NP。可以不确定地生成长度为n-1或更小的所有可能循环,并让验证器检查是否所有城市都访问了一次,并且总重量小于或等于给定长度

    第二种方法甚至可以在不使用非确定性的情况下完成,只需在已经存在的数组上迭代,并检查每个元素是否大于或等于前一个元素

    第三个也可以确定地完成:有一个运行在O(V^2e)中的Max-Flow算法

    最后一个问题也是在NP中:这里的证书是每个项目的一个位字符串,其
    1
    表示该项目属于背包,如果不属于背包,则为
    0
    。验证器必须检查总重量是否不超过背包容量,以及总效用值是否大于或等于给定值

    所以所有的问题都是NP
    ,但并非所有的问题都是NP难的(因此在一定程度上不是NP完全的)。为了证明某个问题是NP难的,只要证明从SAT到该问题有一个简化就足够了。因为已经证明所有NP问题都可以简化为SAT,如果您可以在多项式时间内将SAT简化为您的问题,则可以通过SAT转换所有问题。可以查找详细信息,但对于以下问题,可以从SAT构造简化:

  • 旅行商问题的决策问题;及
  • 背包问题的决策问题
  • 从学术上讲,pNP只包含问题的决策变量。为了避免这个问题,他们引入了和。在这里,我们将假设FPP有点相等(从上下文来看,它是否是一个决策变量是很清楚的),而FNP或多或少是等效的,但显然还不够,因此阅读前面评论的人可以平等地理解我们所指的“等效”到NP。大多数算法设计者(甚至是学术界的)也没有区别,他们说“算法在P”(而实际上他们的意思是算法在FP)。你可以说这是“经济观点”(与“学术观点”相反)


    总而言之,下表内容如下:

    Problem                             | P | NP | NP-hard | NP-complete
    ------------------------------------+---+----+---------+------------
    a) Decision Version of TSP          | * | Y  | Y       | Y
    b) Array is Sorted?                 | Y | Y  | ?       | ?
    c) Finding the maximum flow network | Y | Y  | ?       | ?
    d) Decision version of 0/1 knapsack | * | Y  | Y       | Y
    ------------------------------------+---+----+---------+-------------
    
    如果p!=NP(一些尚未被证明,并且在不久的将来可能不会被证明的东西),存在确定性多项式算法来解决问题(不验证解决方案),然后确定数组是否被排序或生成最大流的算法不是NP难的

    因此,如果p=NP,问号(
    )应该是
    Y
    ,否则应该是
    N
    *
    正好相反:如果P=NP<