解决集合问题的算法

npa*_*pad 1 language-agnostic algorithm math set

如果我有一组值(我将称之为x),以及x的多个子集:

求出所有可能的联合组合的最佳方法是什么,这些组合的联合等于x,但没有一个彼此相交.

一个例子可能是:

如果x是数字1到100的集合,我有四个子集:

  • a = 0-49
  • b = 50-100
  • c = 50-75
  • d = 76-100

那么可能的组合将是:

  • a + b
  • a + c + d

Nic*_*son 10

你所描述的被称为精确封面问题.一般的解决方案是Knuth的算法X,Dancing Links算法是一个具体的实现.