详细内容或原文请订阅后点击阅览
对于足够密集的输入,在线性时间内解决子集和问题
当输入值彼此足够接近时,著名的 NP 完全问题的最佳解决方案。在足够密集输入的线性时间内解决的子集和问题一文首先出现在《走向数据科学》上。
来源:走向数据科学,我将提出子集和问题的解决方案,如果所有“n”个输入值彼此“足够接近”,则该解决方案具有线性时间复杂度 O(n)。我们很快就会看到这个条件的实际含义,以及为什么它在实践中经常被保留(或几乎保留)。对于彼此“几乎接近”的输入,算法仍然有一定的概率运行得足够快。
本文的组织方式如下:
1. 回顾子集和问题
子集和问题 (SSP) 的定义非常简单:
我们得到“n”个输入整数 X={x,x, …,x} 和一个目标和“q”。有必要弄清楚是否存在这“n”个整数的子集“Y”,其中的数字之和恰好为“q”。如果是这样,问题可能还要求报告子集“Y”的所有数字。
以下是 SSP 输入的示例:
这是它的解决方案:
请注意,对于给定的目标和“q”,可能存在具有多个解决方案的情况:
q= 28.
