Algorithm 检查求和零集

Algorithm 检查求和零集,algorithm,Algorithm,一位朋友让我回答一个小问题,看看我们是否能找到一个最佳解决方案。面临的挑战是,给定一组随机的正负数,即(-10,-7,-4,-3,1,4,4,6,12)我们如何为等于0的正负数集创建一个有效的算法,使剩余的未使用数最少 示例:给定集合(-10,-7,-4,-3,1,4,4,6,12) 0的可能集:{-10,-7,1,4,12},{-4,4} 剩余数:{3,6} 有几个想法是尝试动态编程,但我预见到在完成时会遇到很大的时间限制问题。另一个想法是尝试创建一个线性程序,将所有数字都列在一个集合中,并创

一位朋友让我回答一个小问题,看看我们是否能找到一个最佳解决方案。面临的挑战是,给定一组随机的正负数,
即(-10,-7,-4,-3,1,4,4,6,12)
我们如何为等于0的正负数集创建一个有效的算法,使剩余的未使用数最少

示例:给定集合(-10,-7,-4,-3,1,4,4,6,12)

0的可能集:{-10,-7,1,4,12},{-4,4}

剩余数:{3,6}


有几个想法是尝试动态编程,但我预见到在完成时会遇到很大的时间限制问题。另一个想法是尝试创建一个线性程序,将所有数字都列在一个集合中,并创建试图达到0的子集,这遇到了以前可以使用负数但被忽略的问题,除非在值超过0时使用for循环来重复负数。

如Ezequiel Muns所述,这是一个NP完全问题,称为子集和问题(更多信息请访问en.wikipedia.org/wiki/Subset\u sum\u problem)


在寻找解决方案之前,我一直在尝试自己的想法,但在询问了其他一些人之后,我似乎在没有意识到的情况下遇到了一个NP难问题。我只是觉得我自己的算法效率很低,也许有人有更好的解决方案。

那么你的问题是什么呢?另外:不,这就回答了我的问题。我没有去看它是不是NP难,因为我现在正试图自己解决它。看来,无论采用何种算法,它都将以指数形式运行。问题是寻找0集合的有效算法,但我制定的算法一直是指数型的,我不知道其他人是否有想法来避免它。@这有时被称为最简单的难题。因为它是NP完全的,但动态规划解在伪多项式时间内运行,这在实践中是相当好的。