如果这已在其他地方得到回答,我深表歉意,但我还没有使用我有限的算法术语找到它。;)
我的情况是这样的——我有可变数量的数据元素,每个数据元素都经过测试,以确定兼容性。兼容性存储在等效于二维数组(真值表?)中。我的目标是生成这些数据元素的所有可能组合,其中组合中的每个元素都与其他元素兼容。
例如,如果元素 1 (of 4) 与元素 2 和 4 兼容,元素 2 与 1、3 和 4 兼容,元素 3 与 2 兼容,元素 4 与 1 和 2 兼容,我的真值表将看起来像:
1) {1,1,0,1}
2) {1,1,1,1}
3) {0,1,1,0}
4) {1,1,0,1}
我想要的组合是:
1,2,4
1,2
1,4
1
2,3
2,4
2
3
4
我的方法在许多情况下都适用,但有时在元素数量超过 5000 时会陷入严重困境,具体取决于数据集。我的次要挑战是确定将执行时间从 5 秒增加到 3 小时的模式......
只看布尔数组,我就觉得肯定有一个更简单的解决方案——也许是一个以某人命名的算法。正如您可能从上面推断的那样,我不一定知道如何提出这个问题。;)
谢谢你的时间!