从 A 到 B 的多项式时间缩减 - B 至少和 A 一样难
Polynomial time reduction from A to B - B is at least as hard as A
很多次我听说如果我们可以在多项式时间内将问题A简化为问题B,那么问题B至少和问题A一样难。这个说法有多精确?我相信我们应该这样理解:如果A可以多时间减少到B,那么如果B有多时间算法,那么A一定有。
我的观点是 A 实际上可以比 B 更难(可以具有更高的时间复杂度,例如 O(n^100),与 B - O(n^4) 相比,因为多时间减少本身可能很耗时。所以 O(n^4) 和减少所需时间的总和可以为 A 提供一个 O(n^100) 的算法。所以在这种情况下,每次我读 A 都不比 B 难是不可能 A 没有多项式时间算法而 B 有多项式时间算法。对吗?
正确。
一般来说,我会说这个语句中的'hard'项对应于complexity class,而不是多项式的次数。或者,更确切地说,问题的 'hardness' 是包含此问题的最小复杂度 class。
也就是说,如果 A 至少 和 B 一样难,那么 B 的最小复杂度 class 将被最小复杂度 class 取代A.
正如@Inspired指出的那样,这个语句与复杂度class有关,而不是两个问题的实际时间复杂度,这个语句一般用于NP完全问题。
很多次我听说如果我们可以在多项式时间内将问题A简化为问题B,那么问题B至少和问题A一样难。这个说法有多精确?我相信我们应该这样理解:如果A可以多时间减少到B,那么如果B有多时间算法,那么A一定有。
我的观点是 A 实际上可以比 B 更难(可以具有更高的时间复杂度,例如 O(n^100),与 B - O(n^4) 相比,因为多时间减少本身可能很耗时。所以 O(n^4) 和减少所需时间的总和可以为 A 提供一个 O(n^100) 的算法。所以在这种情况下,每次我读 A 都不比 B 难是不可能 A 没有多项式时间算法而 B 有多项式时间算法。对吗?
正确。
一般来说,我会说这个语句中的'hard'项对应于complexity class,而不是多项式的次数。或者,更确切地说,问题的 'hardness' 是包含此问题的最小复杂度 class。
也就是说,如果 A 至少 和 B 一样难,那么 B 的最小复杂度 class 将被最小复杂度 class 取代A.
正如@Inspired指出的那样,这个语句与复杂度class有关,而不是两个问题的实际时间复杂度,这个语句一般用于NP完全问题。