如果问题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.
答案 0 :(得分:1)
假设我可以在常数时间O(1)中解决问题A,但问题B具有最佳情况指数时间解O(2 ^ n)。我很可能想出一个非常复杂的方法来解决O(2 ^ n)中的问题A(“减少”问题A到B),但如果你的问题的答案是“是”,那么我应该能够解决O(1)中可解决的所有极其困难的问题。当然,情况并非如此!
答案 1 :(得分:1)
鉴于上面的例子:
如果使用哈希表备份它们,则可以确定O(N)
中的所有元素是否都是不同的。这允许您检查O(1)
中存在的哈希函数的开销(通常无关紧要)。如果您正在进行基于非比较的排序:
Specialized sort that is linear:
为简单起见,假设您正在排序自然数列表。使用未煮过的意大利面条棒来说明分拣方法: 对于列表中的每个数字x,获得长度为x的杆。 (选择单位的一种实用方法是让你的清单中最大的数字m对应一个完整的意大利面条杆。在这种情况下,整个杆等于m意大利面单位。要获得长度为x的杆,只需打破杆两个,使一个长度为x个单位;丢弃另一个。)
一旦你拿到所有的意大利面条棒,用拳头松散地将它们放到桌子上,使它们全部直立,搁在桌面上。现在,对于每个杆,从上方降低另一只手,直到它遇到杆 - 这个显然是最长的!取下此杆并将其插入(最初为空)输出列表的前面(或者等效地,将其放在输出阵列的最后一个未使用的插槽中)。重复操作直到所有杆都被移除。
因此,鉴于您的问题非常专业,您的陈述将成立。但这并不适用于一般情况,这似乎更像是你所追求的。它与人们认为他们已经解决了TSP的方式非常相似,而是创建了一个使用特殊算法可解决的一般问题的约束版本。
答案 2 :(得分:0)
假设我理解你的缩减是什么意思,让我说我有一个问题,我可以使用一组键/值对在O(N)
中解决,这是从列表中查找内容的问题。我可以使用字典在O(1)
中解决同样的问题。
这是否意味着我可以回到我的第一个技术,并使用它来解决O(1)
中的相同问题?
我不这么认为。