哪个整数从一组整数到XOR来制作目标整数?

时间:2012-10-06 23:50:35

标签: algorithm xor

鉴于:

  • 一组约800个伪随机无符号64位整数。

    2910088619203924111,  8611579852607706360,  10743563285097812384,
    6712886796489718596, 17298387234720051377,  12467698534877227789,
    3782074590599432740,  1419307814092336225,   7951308495700413025,
    ...
  • 同一类型的目标整数17358988457627394926,大多数情况下不在集合中。

保证目标整数是通过对该集合中最多50个(或更少)整数的子集进行异或来制作的。

什么是最有效的算法来找到在XORed时产生目标整数的整数的子集(任何,而不是必须是最小的)?

如果NP难,那么证明它的基本想法是什么?

1 个答案:

答案 0 :(得分:5)

在Z 2 中工作,问题相当于找到矩阵方程Ax = b的解,其中A是通过二进制扩展形成的64x800二进制矩阵每个元素和b是表示解决方案的64元素二进制矩阵。

使用直接的高斯消元法很容易解决这样的系统。