假设你有一台量子计算机可以运行Shor的算法来对整数进行因子分解。
是否有可能生成一个oracle,确定在子指数时间内是否存在100%置信度的子集产品问题的实例是否存在解决方案?
因此,oracle被赋予序列x1,... xn,作为子集产品问题的描述。
它响应是,此实例的解决方案不存在,或者否,此实例的解决方案可能存在也可能不存在。
如果我们采用序列中所有元素的素因子,然后检查目标产品的因素中是否存在所有元素,这应该告诉我们解决方案是否完全不可能。当且仅当考虑了所有素因子时,才存在解决方案。在量子计算机上,素因子化是次指数化的。
想要一些关于这是否是正确逻辑的反馈 - 如果它有效 - 并且如果这个oracle /算法的经典和量子系统的复杂性确实不同。还会欣赏有关减少的解释 - 可以将子集产品减少到3SAT而不会产生后果吗?
答案 0 :(得分:1)
如果我理解正确,您的算法会因元素[6, 15]
和目标10
而失败。它将确定6*15 = 2*3*3*5
,其中包含10=2*5
中使用的所有因素,并错误地断言这意味着您可以通过乘以10
和{{1}来制作6
}。
有两个原因导致您不太可能修复此算法:
Subset Product is NP-Complete。为其找到多项式时间量子算法,或者表明不存在这样的算法,可能与确定P = NP一样困难。也就是说,非常非常。
你不想要素数因素,你想要“不需要减少”的因素。例如,如果问题中的某个数字的素数系数为15
,并且系数为13
,那么就不需要将17
分解为221
。您可以将Euclid的gcd算法应用于各种元素组合,以找到这些无需减少因子,无需量子化。