如何通过矛盾来减少证明硬度?

时间:2016-05-21 06:08:48

标签: complexity-theory reduction np np-complete computation

我不是学生参加计算复杂性课程,只是对这个主题感兴趣。我看到了这一部分:

  

假设我们遇到了一个我们已经证明难以解决的问题,   我们有一个类似的新问题。我们可能会怀疑它也是   很难解决。我们通过矛盾来论证:假设新问题是   容易解决。然后,如果我们可以显示旧的每个实例   问题可以通过将其转化为实例来轻松解决   新问题和解决这些问题,我们有一个矛盾。这个   确定新问题也很难。

来源:Wikipedia

我似乎无法理解这意味着什么。你能用非专业人士的术语(尽可能地)解释这个过程如何通过矛盾证明这样做吗?

我们知道旧问题的矛盾是否很难,但是我们能够将它减少到一个新问题并解决这个问题意味着旧问题至少和新问题一样容易吗?这整个想法让我很困惑。有人可以向我解释一下,他在计算复杂性理论方面没有扎实的背景吗?

1 个答案:

答案 0 :(得分:0)

假设我们知道任务A是一项艰巨的任务。现在说我们给了任务B并要求确定它是否很难。假设我们找到了一种方法来有效地将任务A分解为几个部分,并且每个部分都变成了任务B.也就是说,通过执行少量任务B可以轻松地执行任务A.现在,任务B可以轻松吗?如果是,那么我也可以轻松完成任务A.那将是一个矛盾,因为我知道任务A很难。因此任务B也必须很难。

重要的是要注意,任务A的所有情况必须减少到B才能保持。如果只是某些情况那么B可能很容易,但仍然不能为A提供简单的解决方案,因此不一定存在矛盾。此外,如果将A减少到B需要很多(即减少本身很难),那么如果B很容易就不一定存在矛盾。