鉴于:
一组约800个伪随机无符号64位整数。
2910088619203924111, 8611579852607706360, 10743563285097812384,
6712886796489718596, 17298387234720051377, 12467698534877227789,
3782074590599432740, 1419307814092336225, 7951308495700413025,
...
同一类型的目标整数17358988457627394926
,大多数情况下不在集合中。
保证目标整数是通过对该集合中最多50个(或更少)整数的子集进行异或来制作的。
什么是最有效的算法来找到在XORed时产生目标整数的整数的子集(任何,而不是必须是最小的)?
如果NP难,那么证明它的基本想法是什么?
答案 0 :(得分:5)
在Z 2 中工作,问题相当于找到矩阵方程Ax = b
的解,其中A
是通过二进制扩展形成的64x800二进制矩阵每个元素和b
是表示解决方案的64元素二进制矩阵。
使用直接的高斯消元法很容易解决这样的系统。