【发布时间】:2021-07-21 19:58:41
【问题描述】:
这可能是一个与之前提出的其他问题非常相似的问题,但我找不到针对我的具体案例的解决方案。
我有物品清单。 编辑我将显示 4 个列表,但真正的问题可能有数千个列表,比如 3000:
清单 1:项目 A、B、C、D
清单 2:C、D、E、F 项
清单 3:项目 A、D、F
清单 4:项目 B、C、D、F
我想对列表进行分组,以便生成的组具有最小的唯一项总和。
例子:
列表 (1 + 2):A、B、C、D、E、F = 6 项
列表 (3 + 4):A、B、C、D、F = 5 项
总计 = 6 + 5 = 11 项
替代解决方案
列表 (1 + 4):A、B、C、D、F = 5 项
列表 (2 + 3):A、C、D、E、F = 5 项
总计:5 + 5 = 10 个项目,这将是比第一个更好的解决方案。 EDIT 组数应该可以在代码中/通过用户输入进行编辑,范围可以从 1 到 10。
目的是创造场景:
- 1 组 --> 将所有 3.000 个列表合并在一起,结果是唯一项的简单计数
- 2 组 --> 每组 1.500 个列表(大约,不必精确),目的是找到智能分组以最小化 2 组的唯一项的总和
- 3 组 --> ...
- 4 组 --> ...
- 3.000 个组 --> 每个列表是一个组,其中结果是每个列表中不同项目的总和
非常感谢。
【问题讨论】:
-
这个问题有一个直截了当的答案,当它关闭时我正在写它。它不应该被关闭。
-
@Sujay 我想你还没有真正理解这个问题。问题不在于如何找到两个列表中唯一元素的数量。
-
如何找出所有组合并取得最佳效果?这种方法有什么问题?您是否正在寻找一个启发式函数来丢弃某些组合?
-
@daniherrera 有一个完整图的
(n-1)!!完美匹配 - 其中!!是double factorial - 所以蛮力方法只适用于非常小的n。 -
@daniherrera 运用常识。
标签: python