Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/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
Language agnostic 解决NP完全问题的最佳运行时间?_Language Agnostic_Theory_Complexity Theory_Performance_Np Complete - Fatal编程技术网

Language agnostic 解决NP完全问题的最佳运行时间?

Language agnostic 解决NP完全问题的最佳运行时间?,language-agnostic,theory,complexity-theory,performance,np-complete,Language Agnostic,Theory,Complexity Theory,Performance,Np Complete,解决特定NP完全问题的最快算法是什么?例如,一个简单的实现是O(n!),但使用动态编程可以在O(n^2*2^n)中完成。是否有任何可能“更容易”的NP完全问题具有更好的运行时间 我对精确解感兴趣,而不是近似解。NP完全问题的一个特点是,NP中的任何问题都可以在最多多项式时间内机械地转化为任何NP完全问题 因此,无论给定NP完全问题的最佳解是什么,它都会自动成为任何其他NP问题的类似好解 考虑到动态规划可以在2^n时间和2^n空间内解决旅行商问题,所有其他NP问题也必须如此[好吧,加上应用转换的时

解决特定NP完全问题的最快算法是什么?例如,一个简单的实现是O(n!),但使用动态编程可以在O(n^2*2^n)中完成。是否有任何可能“更容易”的NP完全问题具有更好的运行时间


我对精确解感兴趣,而不是近似解。

NP完全问题的一个特点是,NP中的任何问题都可以在最多多项式时间内机械地转化为任何NP完全问题

因此,无论给定NP完全问题的最佳解是什么,它都会自动成为任何其他NP问题的类似好解

考虑到动态规划可以在2^n时间和2^n空间内解决旅行商问题,所有其他NP问题也必须如此[好吧,加上应用转换的时间,我猜-因此可能是2^(n+1)]

[…]使用动态规划可以在O(n^2*2^n)中完成。是否有任何可能“更容易”的NP完全问题具有更好的运行时间

有点。通过创建一个人工问题,将相同的解决方案编码为多项式较大的输入,可以消除任何多项式因素。只要输入只是多项式大,所产生的问题仍然是NP完全问题。由于复杂性定义为将输入大小映射到运行时间的函数,因此如果输入大小增加,函数将进入较低的O类


因此,同样的算法在TSP上运行,输入填充了n^2个无用位,其复杂性为O(1*2^sqrt(n))。

通常,如果不尝试所有组合,就无法找到一般旅行商问题的最佳解决方案(可能存在负距离等)

通过增加额外的限制和放宽获得最佳解决方案的要求,您可以大大加快速度


例如,如果问题中的距离服从“直接从A到B不比从A到C到B长”(即捷径永远不会长),那么你可以得到多项式可执行时间,并且你可以接受最大为最优值1.5倍的结果。请看

I'll+1,我想看看其他人看到了什么。你的问题是“我们提出的最快的算法是什么?”然后是“注意,我对近似值不感兴趣,但对精确解感兴趣。”我们怎么知道你提出的最快的算法?你试过了吗?@RickNZ:“我们”指的是“一般人类”。我不是想让你们打败我的算法,我只是想知道存在的最快算法是什么。mathoverflow版本:我想它只需要O(n)个空格,我一下子记不起来了,所以我在维基百科上查了一下。可能是我误读了这篇文章。。。