在计算复杂性上下文中考虑问题时,问题的实例只是问题的输入,以与底层计算模型一起使用的方式编码。对于图灵机,您希望您的输入以输入字母表编码Σ, 这可能很简单Σ={0,1}如果您的输入具有二进制编码。然后,(决策)问题只是由问题决定的所有实例的集合(意味着它们返回的输出为 1)。如果我们使用⟨⋅⟩来表示某些输入的编码,那么我们可以将问题定义为语言
POSITIVE-MULT={⟨a,b⟩|a,b∈R and (a×b)≥0}
因此,这种语言所代表的问题是针对一些标量输入(a,b),它们的乘法是否产生非负数?现在我们可能有另一种语言(问题)的形式
POSITIVE-ADD={⟨a,b⟩|a,b∈R and (a+b)≥0}
所以一个问题可能是,我们可以使用一种算法来决定POSITIVE-ADD解决POSITIVE-MULT? 好吧,我们只是使用您在帖子中所说的减少。即,我们将定义形式的多项式归约
f(a,b)=((a+b)22,−(a2+b2)2)
现在很清楚这个案例x∈POSITIVE-MULT ⟺ f(x)∈POSITIVE-ADD. 这意味着我们有一个减少POSITIVE-MULT到POSITIVE-ADD. 在考虑时你可以做同样的事情3SAT和其他具有挑战性的问题,但其中一些减少可能需要相当多的聪明才智。
有关此材料的不错的介绍性参考,请查看Michael Sipser的计算理论导论。