【发布时间】:2021-03-27 19:14:09
【问题描述】:
在以下条件下找到所有可能的集合或包(可以有重复的元素),其中元素的总和为零的最佳算法是什么:
- 每个元素都是一个整数
- 添加值为 V 的元素的成本为 |V|+2
- 每套总成本应小于M
例如:
Sets ---------- Cost
{0} 2
{0, 0} 4
{0, 0, 0} 6
{1, -1} 6
{2, -2} 8
{0, 1, -1} 8
{0, 0, 0, 0} 8
...
一种方法是开始制作长度为 K (K=1, 2, ...) 的集合,然后遍历所有可能的组合并选择满足条件的组合。但是,这种方法效率非常低。我不是图论专家,但我想应该有更好的方法。特别是,如果它可以在python中有效地实现。
【问题讨论】:
-
既然有总成本小于M的条件
-
只是好奇,为什么是|V|+2,这和图论有什么关系?
-
@Owen 图论只是根据 OP 的建议,我认为
-
集合不能有重复,所以
{0, 0}不是集合。 -
有时称为“包”。
标签: python algorithm set graph-theory directed-acyclic-graphs