给定一组S个n×n个置换矩阵(仅占n!个可能置换矩阵的一小部分),我们如何才能找到S的最小大小子集T,使得在每个位置加T的矩阵至少有1个?
我对这个问题感兴趣,其中S是S_n的一小部分。我想知道是否有可能找到(并实现!)比贪婪算法快得多的近似算法(运行多次直到它变得“幸运”,这是一个非常缓慢的过程,但是它却给出了一些接近最佳的界限(在较小的情况下),还是无法逼近性保证了我不能。
有关此问题的一些简单事实:长度为n的置换矩阵循环组当然可以最佳地解决此问题。(至少需要n个矩阵,因为每个置换矩阵都有n个矩阵,并且需要n ^ 2个矩阵。)
我感兴趣的集合S中没有n环基团。
这个问题是机套的非常特殊的情况。实际上,如果我们将X设为具有n ^ 2个元素的集合(1,2,... n)*(1,2,... n),则每个置换矩阵对应于一个大小为n的子集,而I我正在寻找覆盖X的这些子集的最小子集合。集合覆盖本身并不是解决此问题的好方法,因为近似于一般集合覆盖问题。
使用贪婪方法使此问题不会变得太慢的唯一原因是,置换组中的对称性有助于消除大量冗余。特别是,如果S是一个子组,并且T是一个小的子集,它是一个最小覆盖集合,则集合sT(将T乘以该组s的任何元素)仍在S中,并且仍然是覆盖集合(当然如果您想知道,成功的案例有n〜30和| S |〜1000,幸运的贪婪结果有| T |。〜37。n〜50的情况的边界很差,需要很长时间才能获得。
综上所述,我想知道是否存在对此问题的近似方法,或者它是否仍然足够通用以适合某些不可近似性定理,就像一般集合覆盖问题一样。在实践中使用什么算法来近似相关问题?由于子集的大小都相同,并且每个元素以相同的小频率1 / n出现,因此似乎存在某种可能性。
-B