归约是使用解题的黑盒来解决另一个问题的思维方式。归约让我们理解两个问题间的关系,它是一种技术,用于寻找解决某个问题或它的变形。
内容简介
我们解题时常遇见似曾相识的题目。此时,我们若可将新题转换成已解旧题的一例,则新题亦解矣。
另一更微妙的用法是:若我们拥有一个已证明难以解决的问题,我们又获得另一个相似的新问题。我们可合理推想此新问题亦是难以解决的。我们可由下列谬证法得证:若此新问题本质上容易解答,且若我们可展示每个旧问题的实例可经由一系列转换步骤变成新问题的实例,则旧问题便容易解决,因此得到悖论。因此新问题可知亦难以解决。
一个归约简例是从乘法化成平方。设想我们仅能以加、减、平方与除以二等操作,我们可运用此知识并结合下列方程式,以取得任两数的乘积:
我们亦可从另一方向归约此问题:显然地,若我们可以乘以任两数,则我们可以对任一数平方:
因此可见两问题之难度似乎相等,此类归约称为图灵归约。
然而,若我们增加条件:“此运算只能使用平方一次,且只能在结尾使用”,则更难寻找合适归约。在这条件下,即使我们使用所有基础运算,包括乘法,也找不到适当的归约步骤。因为我们不仅要运算有理数,也必须运算像是根号2的无理数。而另一方向的归约,我们的确可用一次乘法简单地平方任何数,且此乘法的确是最后的运算。将此限制形式导入归约中,我们已展示其归约结论:普遍来说,乘法的确难于平方。此归约称为多一归约。
复杂性类的判别
应用
在计算复杂度中,主要有两大类的归约:多一归约与图灵归约。多一归约将一问题的所有实例对应到另一问题的实例上;图灵归约计算一问题的解,并假设其他问题容易解决。多一归约弱于图灵归约。较弱的归约在分割问题的种类上效率较高,但它们的威力较弱,使本类归约较难设计。
然而,为了使归约有用,它们必须易于使用。例如实际研究中常常要将难以得解的NP完备问题,例如SAT问题,归约成显而易懂的问题,像借由效率为指数时间并在有解时输出整数零的机器,决定一数是否为零。但这并没有多少用处,因为我们可以执行如同解决旧问题一样难的归约以解决新问题。
因此,依照复杂度类别使用适当归约符号的学问兴起。在钻研复杂度类NP与更难的类别时,我们使用多项式时间多一归约。在多项式阶层中定义类别时,我们使用多项式时间图灵归约。当我们在类别P之内学习NC与NL类别时,我们使用对数空间归约。归约也用在
可计算性理论中,以显示问题是否可不可被任何机器解决;在此情境下,归约仅局限于可计算函数上。
假设有一个复杂的问题P,而它看起来与一个已知的问题Q很相似,可以试着在两个问题间找到一个归约(reduction, 或者transformation)。
对于问题的先后,归约可以达到两个目标:
(1)已知Q的算法,那么就可以把使用了Q的黑盒的P的解决方法转化成一个P的算法。
(2)如果P是一个已知的难题,或者特别地,如果P的下限,那么同样的下限也可能适用于Q。前一个归约是用于获取P的信息;而后者则是用于获取Q的信息。
结论
归约让我们理解两个问题间的关系,它是一种技术,用于寻找解决某个问题或它的变形。