我对精确覆盖和类似问题相对较新,所以请多多包涵。假设我有一个典型的精确覆盖问题,即。给定一组X和一组X的子集S,我想找到完全覆盖X的S * ( S 的子集)。但是,我希望解决方案S * 恰好包含k 个元素。此外,一种解决方案就足够了。
我知道 Knuth 的算法 X 旨在返回所有可能的解决方案。我应该只运行 Knuth 的算法并遍历解决方案,直到找到具有k个元素的解决方案,还是(我怀疑)有更好的方法?我正在使用 Python 顺便说一句。
对于上下文,X的大小 <100 但S的大小可以是 10^6。k在 <10 时相对较小。