线性时间缩减是否对称?

时间:2013-04-30 19:29:01

标签: algorithm complexity-theory

如果问题X减少到问题Y也可能相反减少?说

X =给定数组判断所有元素是否不同

Y =使用比较排序对数组进行排序

现在,X在线性时间内减少到Y,即如果我可以求解Y,我可以在线性时间内求解X.反过来总是如此吗?我可以解决Y,因为我可以解决X?如果是这样,怎么样?

通过缩减,我的意思是:

Problem X linear reduces to problem Y if X can be solved with:
a) Linear number of standard computational steps.
b) Constant calls to subroutine for Y.

3 个答案:

答案 0 :(得分:1)

假设我可以在常数时间O(1)中解决问题A,但问题B具有最佳情况指数时间解O(2 ^ n)。我很可能想出一个非常复杂的方法来解决O(2 ^ n)中的问题A(“减少”问题A到B),但如果你的问题的答案是“是”,那么我应该能够解决O(1)中可解决的所有极其困难的问题。当然,情况并非如此!

答案 1 :(得分:1)

鉴于上面的例子:

如果使用哈希表备份它们,则可以确定O(N)中的所有元素是否都是不同的。这允许您检查O(1)中存在的哈希函数的开销(通常无关紧要)。如果您正在进行基于非比较的排序:

sorting algorithm list

Specialized sort that is linear

为简单起见,假设您正在排序自然数列表。使用未煮过的意大利面条棒来说明分拣方法:     对于列表中的每个数字x,获得长度为x的杆。 (选择单位的一种实用方法是让你的清单中最大的数字m对应一个完整的意大利面条杆。在这种情况下,整个杆等于m意大利面单位。要获得长度为x的杆,只需打破杆两个,使一个长度为x个单位;丢弃另一个。)

一旦你拿到所有的意大利面条棒,用拳头松散地将它们放到桌子上,使它们全部直立,搁在桌面上。现在,对于每个杆,从上方降低另一只手,直到它遇到杆 - 这个显然是最长的!取下此杆并将其插入(最初为空)输出列表的前面(或者等效地,将其放在输出阵列的最后一个未使用的插槽中)。重复操作直到所有杆都被移除。

因此,鉴于您的问题非常专业,您的陈述将成立。但这并不适用于一般情况,这似乎更像是你所追求的。它与人们认为他们已经解决了TSP的方式非常相似,而是创建了一个使用特殊算法可解决的一般问题的约束版本。

答案 2 :(得分:0)

假设我理解你的缩减是什么意思,让我说我有一个问题,我可以使用一组键/值对在O(N)中解决,这是从列表中查找内容的问题。我可以使用字典在O(1)中解决同样的问题。

这是否意味着我可以回到我的第一个技术,并使用它来解决O(1)中的相同问题?

我不这么认为。